| 
 | 
 
 
mediawiki的备份、升级与恢复 
公司的mediawiki的版本是1.5.7的,太老了,考虑到以后要开始正式使用,趁着现在数据不是很多干脆升级,我选择的版本是1.9.3,虽不是最新的版本,但是也比较稳定,而且我在测ldap认证的时候,这个版本与LdapAuthentication.php 1.1g 的插件配合没有问题。 
 
开始之前介绍一下环境信息: 
web访问的根目录在/usr/local/apache2/htdocs 
wiki安装路径/usr/local/apache2/htdocs/wiki 
wiki的名字:XiangWiki 
wiki使用的数据库名:rswiki 
数据库用户:wiki 
 
 
第一步:备份数据 
 
在升级之前,我们还是做一下备份,以防不测。这里涉及到wiki使用的数据库和wiki程序文件两部分的备份。wiki使用的数据库里存放了用户信息、发表文章的内容等信息。wiki程序文件里则保留了用户上传的图片,表情等信息。官方网站说没有必要备份所有的wiki程序文件,只需要备份LocalSetting.php文件,extension、image、skin目录及手动修改过的文件即可,但是反正也不是很大,干脆全部备份。:) 
 
备份数据库: 
mysqldump -u wiki -ppassword -h localhost --opt rswiki > rswiki-backup.sql 
--opt:把读出的数据立即写入磁盘 
 
备份程序文件: 
tar czpvf mediawiki-1.5.3-backup.tar.gz /usr/local/apache2/htdocs/wiki 
 
单独运行以上两条命令,备份工作也就做完了。写了脚本来完成备份工作(比较烂),可以加入crontab里,方便以后: 
 
#!/bin/sh 
 
LogFile=/ext/backup/backup.log                #指定日志的名字 
BakDir=/ext/backup                            #备份文件存放的路径 
 
#create backup directory 
 
if [ -d $BakDir ] 
then 
    cd $BakDir 
    touch $LogFile 
else 
    mkdir -p $BakDir 
    cd $BakDir 
    touch $LogFile 
fi 
 
 
#backup wiki 
 
datadump=`which mysqldump` 
wikidb="rswiki"                                   #wiki数据库的名字 
wikipath=/usr/local/apache2/htdocs/wiki         #wiki程序文件的位置 
mysqluser="wiki"                              #数据库的用户名 
userpass="password"                             #用户密码 
 
if $datadump -u $mysqluser --password=$userpass -h localhost --opt $wikidb > $wikidb.`date +%Y%m%d`.sql 2>&1 
then 
    echo " backup $wikidb success" >> $LogFile 
else 
    echo " backup $wikidb error" >> $LogFile 
    exit 1 
fi 
 
if tar czpf mediawiki.`date +%Y%m%d`.tar.gz $wikipath $wikidb.`date +%Y%m%d`.sql >/dev/null 2>&1 
then 
    echo " backup mediawiki success" >> $LogFile 
    rm -f $wikidb.`date +%Y%m%d`.sql 
else 
    echo " backup mediawiki error" >> $LogFile 
    exit 1 
fi 
 
 
好了,备份工作已经完成了,现在要开始升级了。 
 
第二步、升级 
 
1.我的wiki安装在/usr/local/apache2/htdocs目录下,首先把旧的wiki目录改名,先不要删除 
 
#cd /usr/local/apache2/htdocs  
#mv wiki wiki-1.5.3 
 
2.把下载的mediawiki-1.9.3.zip解压,然后把解压出来的目录改名为wiki并挪到/usr/local/apache2/htdocs目录下 
 
#unzip mediawiki-1.9.3.zip 
#mv mediawiki-1.9.3 wiki 
#mv wiki /usr/local/apache2/htdocs 
 
3.把旧wiki目录里的LocalSetting.php拷到新的wiki目录里,并改名为LocalSetting.php.old 
 
#cd /usr/local/apache2/htdocs 
#cp wiki-1.5.3/LocalSetting.php wiki/LocalSetting.php.old 
 
4.进入wiki目录,更改AdminiSettings.sample,并改名为AdminiSettings.php 
 
由于前面我们已经进入/usr/local/apache2/htdocs目录,现在执行: 
#cd wiki 
 
更改AdminiSettings.sample里的 
$wgDBadminuser = 'wiki'; #数据库的用户 
$wgDBadminpassword ='password'; #用户的密码 
 
改完后,执行 
#mv AdminiSettings.sample AdminiSettings.php 
 
5.更改config目录的权限, 
 
#chmod a+w config 
 
6.重新安装 
现在可以在浏览器里输入 http://server ip/wiki/config/index.php,开始进行重新安装。 
这里的步骤和安装一样,但是注意你填入的信息和旧版本安装时必需一样(主要是wiki名字,数据库名字,数据库用户名,数据库密码,数据库前缀)。 
例如我们之前wiki的信息: 
名字:XiangWiki 
数据库名字:rswiki 
数据库用户:wiki 
数据库密码:password 
数据库前缀:rs_ 
那么这次安装时我们还填入一样的信息。 
 
安装成功,你可以从页面上看到一大堆建立新表的信息。 
 
7.收尾工作 
 
#chmod a-w config 
#mv LocalSetting.php.old LocalSetting.php 
#pwd 
/usr/local/apache2/htdocs/wiki 
 
#cp ../wiki-1.5.3/extensions/* extensions/ 
 
注:这里我们并没有把config目录里新生成的LocalSetting.php移到外面来,而是继续使用旧版本里的LocalSetting.php。 
把旧版本里的插件移到新的wiki的extensions目录下。相应的,如果你有图片、皮肤什么的也要拷过来。 
拷贝完成以后,wiki-1.5.3这个目录已经可以删除了。 
 
8.更改wiki目录权限 
上面的操作我都用的root用户,wiki目录的所有者和组都是root,所以操作完后,记得要把wiki目录的属主改为其它的用户(这一步并不是必须) 
 
#chown -R hrwang:rocket wiki 
 
9.验证 
好了,现在打开浏览器,输入 http://server ip/wiki 就可以访问了,我们点击”special pages”页面下的version查看版本,已经是1.9.3了,:) 
 
注:升级里忽略了mysql数据库及php的升级,原因是我的RHEL3-U3里,php和mysql的版本已经满足安装mediawiki1.9.3的需求。 
 
三、恢复 
 
我们现在假设一种情况,例如有一天,服务器坏掉了,需要在一台新的服务器上重新搭建wiki。那么之前备份的数据就派上用场了。 
 
1.将备份的文件解压,把wiki目录改名为media(可以不改),并放到http可访问的路径下 
 
例如我用自己的脚本备份好的文件为mediawiki-1.9.3-20071107.tar.gz 
[root@rocketcnvm test]#tar zxvf mediawiki-1.9.3-20071107.tar.gz 
[root@rocketcnvm test]# ls 
mediawiki-1.9.3-20071107.tar.gz rswiki.20071107.sql usr 
[root@rocketcnvm test]#mv usr/local/apache2/htdocs/wiki /var/www/html/ 
[root@rocketcnvm test]#cd /var/www/html 
[root@rocketcnvm test]#mv wiki media 
注:新环境里,http的访问根目录是/var/www/html 
 
2.做重新安装的准备 
 
[root@rocketcnvm html]#cd media 
[root@rocketcnvm media]# chmod a+w config 
[root@rocketcnvm media]# mv LocalSetting.php LocalSetting.php.old 
注:如果config目录下有以前的LocalSetting.php,删除它。 
 
3.重新安装 
 
在浏览器里输入 http://serverip/media/config/index.php 开始重新安装,安装过程中填入的信息也要和以前备份的时候一样(主要是wiki名,wiki数据库名,数据库用户,数据库用户密码,数据库前缀)。这么做是为了保持和以前备份的数据库一致。 
例如我们这里填入的信息: 
wiki名字:XiangWiki 
wiki数据库库:rswiki 
数据库用户: wiki 
数据库密码:password 
数据库前缀: rs_ 
 
安装完成后,新的数据库就生成了。 
 
4.更改配置文件 
 
[root@rocketcnvm media]# chmod a-w config 
[root@rocketcnvm media]# mv config/LocalSetting.php ./ 
然后根据我们保存的LocalSetting.php.old来更改新的LocalSetting.php(就是把原来的一些设置再重新添加到新生成的LocalSetting.php里)。由于我们这个目录里是以前备份的,所以像插件,图片什么的都已经存在了,无需再做额外操作。 
 
5.导入数据库 
 
回到保存数据库备份的目录,执行: 
[root@rocketcnvm test]#mysql rswiki < rswiki.20071107.sql 
 
6.验证 
 
在浏览器里输入 http://serverip/media , 看到了吗?和以前的一样。 :) |   
 
 
 
 |