구조화된 토론(StructuredDiscussions) 확장은 토론 지면에 대한 토론과 공동-작업 시스템을 제공합니다. 이 페이지는 구조화된 토론 확장을 설치하고 관리하는 방법을 다룹니다; 그것을 사용하기 위한 안내서에 대해, 구조화된 토론 도움말을 참조하십시오. 샌드박스 토론 페이지에서 구조화된 토론을 직접 시도할 수 있습니다.
이 확장은 이전에 Flow로 알려졌었고, (Git 저장소와 같은) 일부 위치의 이름은 여전히 그것을 반영합니다.
StructuredDiscussions 확장은 위키미디어 재단에서 Collaboration 팀에 의해 개발되었습니다. 버그 수정을 위해 여전히 유지 관리 중이지만, 2017년 9월에 "StructuredDiscussions"로 이름을 바꾸는 것 외에는 확장에 대한 실질적인 개발이 2015년 이후 이루어지지 않고 있습니다. 개발은 향후 다시 시작될 수 있습니다. 이 확장의 개발 상태와 디자인 개요에 대한 자세한 내용에 대해, 구조화된 토론을 참조하십시오.
Installation
모든 필수 종속성이 설치되고 구성되었는지 확인하십시오.
미디어위키 확장 내려받기 지면에서 해당 판을 내려받아서 정해진 위치로 이동시킵니다.
미디어위키 설정 LocalSettings.php 파일에 다음을 추가합니다:
wfLoadExtension( 'Flow' );
데이터베이스 변경이 있기 때문에 아래 스크립트를 수행합니다.
- cd /var/www/html/w
- php maintenance/update.php
Special:Version에 접근해서 확장이 정상적으로 설치가 되었는지 확인을 합니다.
Post install
또한, 심지어 git에서 다운로드하지 않더라도, 미디어위키가 설치된 폴더에서, 명령 "composer update --no-dev"를 실행할 필요가 있습니다.
여기서 언급 한 스크립트를 비롯하여 StructuredDiscussions를 활성화 또는 비활성화하는 것에 대한 전체 지침을 따르십시오.
Dependencies
필수
- Echo 확장 - 알림을 위해 (예를 들어, 게시물에 대한 답글)
- 오브젝트 캐시가 있어야 합니다. 이것에 대해 Memcached를 추천합니다. 현재 Redis는 문제가 발생할 수 있습니다. 지금은 특별한 문제가 없는 것으로 보이므로, 작업 대기열 등을 고려해서 redis를 추천합니다.
- Extension:ParserFunctions - 자동으로 설치되는 템플릿에 대해 (예를 들어, #time).
- $wgContentHandlerUseDB = true. (removed in 1.35) Special:EnableStructuredDiscussions에 필수이고 만약 해당 이름 공간에 이미 페이지가 있으면, 이름 공간의 컨텐츠 모델을 변경(StructuredDiscussions 방향으로 또는 반대 방향으로)함으로써 충돌을 방지하기 위함입니다.
strongly recommended
- Parsoid - 게시물을 HTML($wgFlowContentFormat = 'html';)로 저장하여 성능을 향상시키는 선택사항. 이것은 WMF 위키에 적용이 되었고, 따라서 가장 많이 검증된 구성입니다. 만약 mw:MediaWiki-Vagrant를 사용하면, StructuredDiscussions를 활성화하면 Parsoid가 활성화되고 형식이 'html'로 설정됩니다.
선택사항
- Extension:BetaFeatures - 사용자 토론에 대해 opt-in 베타 기능을 사용하고 싶다면.
- Extension:CLDR - "3 days ago" 처럼 사람-친화적 경과 표시를 위해.
- Extension:VisualEditor - 토론 지면에 VisualEditor 지원을 위해 ($wgFlowEditorList = array( 'visualeditor', 'none' );). 버그? 만약 시각 편집기가 있으면 (예를 들어, 추측건대 mw:OOUI 제공하기 위해), StructuredDiscussions는 만약 VE가 활성화되지 않았으면 Parsoid에 연결을 시도할 것입니다
- StructuredDiscussions은 Extension:AbuseFilter, Extension:SpamBlacklist, 및 Extension:ConfirmEdit와 통합가능합니다; /Spam을 참조하십시오.
- StructuredDiscussions은 Extension:CheckUser을 설치했으면 그것과 통합가능합니다.
- Extension:Thanks - 게시물에 대한 사용자들이 "감사"를 보내기 위해.
- Extension:EventLogging - 분석을 위해.
Verifying installation
StructuredDiscussions를 사용하도록 설정한 페이지 중 하나를 방문하여 주제를 추가하고 헤더를 수정해 보십시오 (#Configuration를 참조하십시오).
Upgrading
StructuredDiscussions 보드를 열거한 $wgFlowOccupyPages 변수가 mw:phab:T105574의 일부로 제거되었습니다. 1.26 이상에서는 업그레이드하기 전에, 유지-관리 스크립트를 실행하십시오:
php maintenance/populateContentModel.php --ns=all --table=page
php extensions/Flow/maintenance/FlowUpdateRevContentModelFromOccupyPages.php
첫 번째 스크립트는 버전 1.34까지 미디어위키 코어의 일부였습니다. 1.35부터는 더 이상 필요하지 않습니다.
Configurations
다음은 LocalSettings.php에서 추가할 필요가 있는 몇 가지 설정입니다.
Enabling or disabling Flow
미디어위키 1.35 이전에서 이름 공간에 대해 StructuredDiscussions를 활성화 또는 비활성화하기 위해, 먼저 영향을 받는 이름 공간에서 populateContentModel.php를 실행하십시오 (또는 그것을 전부에서 수행할 수 있습니다). 1.35부터는 더 이상 필요하지 않습니다. 예를 들어, 아래의 PHP 설정에서 보이는 것처럼 NS_TALK (1) 및 NS_USER_TALK (3)에서 그것을 활성화 또는 비활성화하려고 하는 경우:
mwscript populateContentModel.php --wiki=somewiki --ns=1 --table=revision
mwscript populateContentModel.php --wiki=somewiki --ns=1 --table=archive
mwscript populateContentModel.php --wiki=somewiki --ns=1 --table=page
mwscript populateContentModel.php --wiki=somewiki --ns=3 --table=revision
mwscript populateContentModel.php --wiki=somewiki --ns=3 --table=archive
mwscript populateContentModel.php --wiki=somewiki --ns=3 --table=page
만약 mwscript가 구성되지 않았으면, mwscript populateContentModel.php를 php maintenance/populateContentModel.php로 대체하십시오.
위와 같이 한 다음에, 특정 이름 공간에 대해 $wgNamespaceContentModels[namespace]를 설정하십시오. 예를 들어:
// These lines enable StructuredDiscussions on the "Talk" and "User talk" namespaces
// All the NS_* constants here: https://www.mediawiki.org/wiki/Manual:Namespace_constants
$wgNamespaceContentModels[NS_TALK] = 'flow-board';
$wgNamespaceContentModels[NS_USER_TALK] = 'flow-board';
전역을 재-할당하지 마십시오($wgNamespaceContentModels =).
단일 페이지에서 그것을 활성화하기 위해, Special:EnableStructuredDiscussions을 사용하십시오. 이를 위해서는 임의의 그룹에 허가될 수 있는 flow-create-board 권한이 필요합니다 (Manual:User rights#Changing group permissions을 참조하십시오).
$wgGroupPermissions['somegroup']['flow-create-board'] = true;
여러분 위키에서 모든 StructuredDiscussions 페이지를 끄는 방법에 대해 모든 구조화된 토론을 끄기를 참조하십시오.
Parsoid configuration
StructuredDiscussions는 Virtual REST Service를 사용하여 Parsoid 또는 RESTBase 서비스에 접속합니다. 만약 여러분 위키에 Extension:VisualEditor 확장이 로드되면, 아마도 이미 이것을 설정한 것입니다. LocalSettings.php에서 다음을 찾으십시오: 1.35 이상에서는 필요하지 않을 것입니다.
$wgVirtualRestConfig['modules']['parsoid'] = array(
// URL to the Parsoid instance
// Use port 8142 if you use the Debian package
'url' => 'http://localhost:8000',
// Parsoid "domain", see below (optional)
'domain' => 'localhost',
// Parsoid "prefix", see below (optional)
'prefix' => 'localhost',
);
단일 Parsoid 서버는 여러 위키를 처리할 수 있습니다. Parsoid domain 설정은 여러분의 위키 구성을 Parsoid로 식별합니다. 기본적으로 $wgCanonicalServer에 의해 호스트 이름으로 설정되지만, 임의의 문자열을 선택할 수 있습니다. 이전 버전의 Parsoid는 고유한 "prefix"를 사용하여 서버를 식별합니다; 여기에 그것도 나열해야 할 수도 있습니다.
Parsoid는 다음과 같이 Parsoid의 localsettings.js 줄에 사용한 것과 일치하도록 구성되어야 합니다:
parsoidConfig.setMwApi({ uri: 'http://path/to/my/wiki/api.php', domain: 'localhost', prefix: 'localhost' });
다시 말하지만, "domain" 속성은 Parsoid 구성에서 선택 사항입니다; 만약 그것이 지정하지 않으면, uri 속성에서 사용된 호스트 이름이 기본값입니다. 이전 버전의 Parsoid를 실행하지 않는 한 "prefix" 속성을 생략할 수도 있습니다. Parsoid의 localsettings.js에 나열된 domain과 prefix가 위키의 LocalSettings.php에 있는 것과 일치하는지 확인하십시오.
자세한 내용에 대해 mw:Parsoid/Setup#Configuration을 참조하십시오.
"maximum function nesting level of '100' reached, aborting"
If you get this error, you need to set xdebug.max_nesting_level = 200, probably in /etc/php5/apache2/php.ini.
"Exception Caught: CAS is not implemented in Xyz"
StructuredDiscussions invokes $cache->cas() and some cache implementations including CACHE_ACCEL (APCBagOStuff) don't implement CAS. You probably need to use a different cache, for example install mw:memcached and set $wgMainCacheType = CACHE_MEMCACHED;.
Permissions
StructuredDiscussions에서 쓰기 작업을 수행하려면 edit 권한이 있어야 합니다. 많은 위키는 'user' (logged-in) 그룹이나 'autoconfirmed' 그룹에 대해서만, 이 권한을 부여합니다.
StructuredDiscussions는 edit-post 및 delete-topic과 같은 많은 작업을 정의합니다(FlowActions.php의 목록을 참조하십시오). 권한은 게시 여부와 검토 여부에 따라 다릅니다. 예를 들어, 기본적으로 사용자는 자신의 게시물을 편집할 수 있지만 'sysop'그룹의 사용자만 다른 사용자의 게시물을 편집할 수 있는 flow-edit-post 권한이 있습니다. 어떤 그룹이 어떤 권한을 갖고 있으며 각 Flow 조작에 필요한 권한을 덮어쓸 수 있습니다; 사용 권한 개요에 대해서는 mw:Manual:User rights을 참조하십시오.
Migrating existing pages
기존의 단일 페이지를 마이그레이션하기 위해서는, Special:EnableStructuredDiscussions을 사용하십시오. 단일 페이지의 아카이브(이 후에, StructuredDiscussions 활성화 가능)를 자동으로 처리합니다.
스크립트 maintenance/convertNamespaceFromWikitext.php는 이 이름 공간 변환 및 보관을 자동화합니다; mw:Flow/Converting talk pages를 참조하십시오. 어떤 WMF-스펙에 따라 다르므로, 작업을 평가하고 실행하기 전에 데이터베이스를 백업하십시오. 또 다른 스크립트 maintenance/convertLqt.php는 mw:LiquidThreads 페이지와 그 스레드를 Flow 보드와 주제로 변환합니다; mw:Flow/Converting LiquidThreads를 참조하십시오. 유사한 경고가 적용됩니다.
Flow가 Topic: 이름 공간을 추가합니다. mw:Extension default namespaces#Flow를 참조하십시오. mw:Special:PrefixIndex/Topic:을 방문하면, 이 페이지와 충돌하는 기존 페이지가 있는지 확인할 수 있습니다; 만약 그렇다면 유지-보수 스크립트 maintenance/namespaceDupes.php를 실행하십시오.
System Message
토론 보드를 이용하면 아래쪽의 도움말 "Wikitext uses markup." 가 보입니다. 이 "uses markup"부분은, MediaWiki.org에 대한 interwiki 연결을 사용하는, 시스템 메시지 MediaWiki : Flow-wikitext-editor-help-uses-wikitext를 통해 연결이 됩니다.
경우에 따라, 이 interwiki 연결은 MediaWiki.org의 Help:Formatting을 가리키는 대신 해당 위키의 (존재하지도 않는) Help:Formatting 지면을 연결되도록 설정되어 있기도 합니다. 이 경우 MediaWiki:Flow-wikitext-editor-help-uses-wikitext을 수정해서 interwiki 연결을 다른 것으로 바꿀 수 있습니다. 예를 들어, 외부에 있는 도움말에 연결할 수도 있습니다:
Trobleshootings
시스템을 옮기고 갑자기 다음과 같은 오류가 생깁니다.
/wiki/Talk:PHP Error from line 418 of /var/www/html/w/includes/libs/MultiHttpClient.php: Call to undefined function curl_multi_init()
다음 패키지가 없어서 생기는 문제였습니다.
- sudo apt install php7.2-curl