“Mediawiki”的版本间差异

来自Shiyin's note
跳到导航 跳到搜索
 
(未显示同一用户的12个中间版本)
第4行: 第4行:
基本情况是需求以下服务:[[Apache]]+[[mysql]]+[[php]]
基本情况是需求以下服务:[[Apache]]+[[mysql]]+[[php]]



*需要较多的php包
===安装===
*可以自己安装,但是需要较多的php包
yum install -y httpd mysql-server php php-pear php-xml php-mysql php-intl php-pecl-apc php-gd php-mbstrin
yum install -y httpd mysql-server php php-pear php-xml php-mysql php-intl php-pecl-apc php-gd php-mbstrin
:安装之后重新启动httpd服务
:安装之后重新启动httpd服务
第13行: 第15行:


*有不需要数据库服务的wiki,可以U盘带走,这个比较好。具体参考http://www.mediawiki.org/wiki/Manual:Wiki_on_a_stick
*有不需要数据库服务的wiki,可以U盘带走,这个比较好。具体参考http://www.mediawiki.org/wiki/Manual:Wiki_on_a_stick

*可以用系统自带的rpm包,fc下,直接把/usr/share/mediawiki/目录下的文件复制到你要的目录就可以了(在1.32之前,符号链接都可,1.32不知道为什么不可以了)


===[[SELinux]]===
===[[SELinux]]===
这个比较烦人,参考https://www.mediawiki.org/wiki/SELinux
这个比较烦人,参考https://www.mediawiki.org/wiki/SELinux



==配置==
==配置==
第58行: 第63行:
chgrp apache -R images
chgrp apache -R images
chmod 755 -R images
chmod 755 -R images

*无法创建目录“mwstore://local-backend/local-public/c/ca”错误
sudo chown -R www-data:www-data images/



*文件大小限制
*文件大小限制
第63行: 第72行:
post_max_size
post_max_size
upload_max_filesize
upload_max_filesize
注意重新启动httpd使设置生效。
注意重新启动httpd使设置生效。在fc35中,还需要重启php-fpm服务


*不能上传script文件,出现警告:有可能引起浏览器错误
*不能上传script文件,出现警告:有可能引起浏览器错误
$wgDisableUploadScriptChecks = true;
$wgDisableUploadScriptChecks = true;


*新版本的wiki还要对文件的格式做事实上的检查,可以通过下面的设置关掉
===无法发送邮件===
$wgCheckFileExtensions = false;
按官网说明在LocalSetting.php文件中填写$wgSMTP。
$wgStrictFileExtensions = false;
这两个配置不一定在Localsetting里面,而是在includes/DefaultSetting这个文件中间


*错误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
*出错信息libgomp: Thread creation failed: Resource temporarily unavailable
第90行: 第91行:
===扩展===
===扩展===
*[[如何启用扩展]]
*[[如何启用扩展]]
*自带的扩展启用后,可以通过[[Special:Version]]查看
*常用扩展
:SimpleMathJax: 启用数学符号的Latex之处
:UserMerge:合并,删除用户
:ConfirmAccount:实现需审核(邮件通知)的自助注册
:SimpleSecurity: 实现某个分类的权限管理
::mediawiki升级到1.25后曾报错,后来增加一行include_once解决问题
*搜索,下载 [http://www.mediawiki.org/wiki/Special:ExtensionDistributor]
*搜索,下载 [http://www.mediawiki.org/wiki/Special:ExtensionDistributor]
*下面是我自己下载的两个,感觉比较有用的扩展(mediawiki 1.38)

====Lockdown====
*实现某些页面只有登录用户才能阅读的功能,参见[https://www.mediawiki.org/wiki/Extension:Lockdown]
*这些页面要用namespace来特殊定义,比如[http://cluster.shao.ac.cn/wiki/index.php/Internal:Iserver]
wfLoadExtension( 'Lockdown' )
#define custom namespaces
$wgExtraNamespaces[100] = "Internal";
#restrict "read" permission to logged in users
$wgNamespacePermissionLockdown[100]['read'] = array('user');

====ConfirmAccount====
*实现需审核(邮件通知)的自助注册

====SwiftMailer====
*设置wiki的邮件系统,
:*Localsettings中设置
$wgEnableEmail = true;
:*科学院邮件需要编辑 "extension.json" file:

"config": {
"SMTPAuthenticationMethod": {
"value": "ssl"
}
},



===管理===
===管理===

2024年8月19日 (一) 06:38的最新版本

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
  • 可以用系统自带的rpm包,fc下,直接把/usr/share/mediawiki/目录下的文件复制到你要的目录就可以了(在1.32之前,符号链接都可,1.32不知道为什么不可以了)

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
  • 无法创建目录“mwstore://local-backend/local-public/c/ca”错误
sudo chown -R www-data:www-data images/  


  • 文件大小限制

修改/etc/php/php.ini的两个配置项

post_max_size
upload_max_filesize

注意重新启动httpd使设置生效。在fc35中,还需要重启php-fpm服务。

  • 不能上传script文件,出现警告:有可能引起浏览器错误
$wgDisableUploadScriptChecks = true;
  • 新版本的wiki还要对文件的格式做事实上的检查,可以通过下面的设置关掉
$wgCheckFileExtensions = false;
$wgStrictFileExtensions = false;

这两个配置不一定在Localsetting里面,而是在includes/DefaultSetting这个文件中间

无法显示缩略图

  • 出错信息libgomp: Thread creation failed: Resource temporarily unavailable
$wgMaxShellMemory = 406900 ;

使用

wiki语法

扩展

Lockdown

  • 实现某些页面只有登录用户才能阅读的功能,参见[2]
  • 这些页面要用namespace来特殊定义,比如[3]
wfLoadExtension( 'Lockdown' )
#define custom namespaces
$wgExtraNamespaces[100] = "Internal";
#restrict "read" permission to logged in users
$wgNamespacePermissionLockdown[100]['read'] = array('user');

ConfirmAccount

  • 实现需审核(邮件通知)的自助注册

SwiftMailer

  • 设置wiki的邮件系统,
  • Localsettings中设置
$wgEnableEmail = true;
  • 科学院邮件需要编辑 "extension.json" file:
"config": {
	"SMTPAuthenticationMethod": {
		"value": "ssl" 
	}
},


管理

  • 忘记用户密码
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/

备份

php maintenance/dumpBackup.php --full --conf LocalSettings.php > dump.xml
  • xml的备份,可以用wikiTaxi软件打开
  • mysql的数据库备份
mysqldump -u root -p751006abc wikidb | gzip  > /bak/wikidb.bakup.gz
  • 整个wikipedia的备份可以参见 [4]