wiki架設
最近用mediawiki 配置了一個wiki網站給IFU項目使用。 基本情況是需求以下服務:Apache+mysql+php
- 需要較多的php包
yum install -y httpd mysql-server php php-pear php-xml php-mysql php-intl php-pecl-apc php-gd php-mbstrin
- 安裝之后重新啟動httpd服務
- 如果報錯,注意檢查http的錯誤log,在/var/log/httpd/error_log
- mediawiki的安裝界面比較友好。安裝好之后要將 Apache服務配置好。
- Wiki的配置最重要要是更改 LocalSettings.php 文件
- 有不需要數據庫服務的wiki,可以U盤帶走,這個比較好。具體參考http://www.mediawiki.org/wiki/Manual:Wiki_on_a_stick
SELinux
這個比較煩人,參考https://www.mediawiki.org/wiki/SELinux
配置
- 對沒有登錄的 用戶移除頁面頂部的討論頁鏈接在LocalSetting.php里添加
$wgShowIPinHeader = false;
用戶權限
- 以下內容設置匿名用戶可瀏覽,注冊,但不能編輯。注冊用戶可編輯
$wgGroupPermissions['*' ]['createaccount'] = true; $wgGroupPermissions['*' ]['read'] = true; $wgGroupPermissions['*' ]['edit'] = false; $wgGroupPermissions['user' ]['createaccount'] = true; $wgGroupPermissions['user' ]['edit'] = true;
- 阻止新用戶注冊
$wgGroupPermissions['*' ]['createaccount'] = false;
- 注 意:阻止新用戶注冊,此時管理員可以到特殊頁面上的用戶登錄頁面(Special:UserLogin)里,輸入希望為其建立帳戶的某人的用戶名與電子郵 件地址,然后點擊通過eMail(by email)按鈕遞交,系統將創建帳號並將隨機生成的密碼發送到指定email里。
- 設置匿名用戶可讀內容
$wgWhitelistRead = array( "Main Page", "Special:Userlogin" ); $wgGroupPermissions['*' ]['read'] = false;
- 注 意:具體需要對應自己的站點鏈接,而對於多字節語言的MediaWiki,例如中文首頁鏈接index.php?title=%E9%A6%96%E9 %A1%B5,這首頁中文字符PHP可能無法正確解碼。需要利用urldecode()函數轉換一下,寫為:$wgWhitelistRead = array( urldecode("%E9%A6%96%E9%A1%B5") ;
文件上傳
- 配置文件上傳,修改如下內容
## To enable image uploads, make sure the 'images' directory ## is writable, then set this to true: $wgEnableUploads = true; #$wgUploadPath = "$IP/img_auth.php"; #$wgUploadDirectory = "$IP/images"; #默認值,這個文件夾應該有寫入權限 (我設置了777不知道對不對) $wgFileExtensions =array('png','gif','jpg','jpeg','doc','xls','mpp','pdf','ppt','tiff','bmp','docx','xlsx','pptx','ps','odt','ods','odp','odg'); #文件擴展名限制,不知道是否可以設置任意文件類型,還有文件大小限制默認的是2M,如何設置?(這個好像是php的限制)
注意
#$wgUploadPath = "$IP/img_auth.php"; #$wgUploadDirectory = "$IP/images";
以上兩句是不需要的,我在1.23.8里面設置之后反而出錯。
- 一種原因是因為SELinux
sudo chcon -R -t httpd_sys_content_rw_t images ( 這個重新啟動后可能會失效)
- 另外注意檢查images目錄下是否有.htaccess文件,注意設置images目錄的權限
chown apache -R images chgrp apache -R images chmod 755 -R images
- 文件大小限制
修改/etc/php/php.ini的兩個配置項
post_max_size upload_max_filesize
注意重新啟動httpd使設置生效。
- 不能上傳script文件,出現警告:有可能引起瀏覽器錯誤
$wgDisableUploadScriptChecks = true;
無法發送郵件
按官網說明在LocalSetting.php文件中填寫$wgSMTP。
- 錯誤1
/usr/share/mediawiki/includes/mail/UserMailer.php: PEAR mail package is not installed
解決辦法:按照php-pear-Mail
- 錯誤2
authentication failure [SMTP: STARTTLS failed (code: 220, response: Ready to start TLS)]
這是因為pear-smtp默認使用TLS認證,解決辦法是修改/usr/share/pear/Net/SMTP.php文件中的
if ($tls && version_compare(PHP_VERSION, '5.1.0', '>=')
改成
if ($tls && version_compare(PHP_VERSION, '6.1.0', '>=') ;就是不要TLS認證
無法顯示縮略圖
- 出錯信息libgomp: Thread creation failed: Resource temporarily unavailable
$wgMaxShellMemory = 406900 ;
使用
擴展
- 如何啟用擴展
- 常用擴展
- SimpleMathJax: 啟用數學符號的Latex之處
- UserMerge:合並,刪除用戶
-
SimpleSecurity: 實現某個分類的權限管理
- mediawiki升級到1.25后曾報錯,后來增加一行include_once解決問題
- 搜索,下載 [1]
ConfirmAccount
- 實現需審核(郵件通知)的自助注冊
- 報錯:Catchable fatal error: Argument 1 passed to SimpleCaptcha::getForm() must be an instance of OutputPage, none given, called in /usr/share/mediawiki/extensions/ConfirmAccount/frontend/specialpages/actions/RequestAccount_body.php on line 231 and defined in /usr/share/mediawiki/extensions/ConfirmEdit/SimpleCaptcha/Captcha.php on line 42
解決方案: changing this line in RequestAccount_body.php
$form .= $captcha->getForm();
to
$form .= $captcha->getForm($this->getOutput());
管理
- 忘記用戶密碼
php maintenance/changePassword.php --user=username --password=newpassword
- 無法顯示
查看httpd狀態,一堆報錯,
SELinux is preventing /usr/sbin/httpd from getattr access on the file
解決方法
restorecon -v -R /opt/www/
備份
- 單個頁面導出Special:Export,頁面導入Special:Import
- 完整備份為xml文件
php maintenance/dumpBackup.php --full --conf LocalSettings.php > dump.xml
- xml的備份,可以用wikiTaxi軟件打開
- mysql的數據庫備份
mysqldump -u root -p751006abc wikidb | gzip > /bak/wikidb.bakup.gz