2009年10月15日星期四

Wordpress自动升级脚本

今天把这里的wp主程序升级到最新了。wp的频繁版本升级一直是一件令人抓狂的事情。每次都要做重复劳动。虽然现在的wp有自动升级功能,但是要经过一个并不是很令人舒服的升级向导,还要备份文件——虽然这是必须的——所以我不喜欢。

照我看来,升级wp主程序无非就是在文件系统上做手脚,备份数据库是多余的,所以就写了脚本一枚,方便己用。如果你有兴趣,也可以参考了去。

创建脚本如下,并设置权限为700。


脚本:auto-upgrade-wp.sh

#!/bin/sh
if [ -d blog ] && [ -d wordpress ]
then
# Do the dirty work.
echo "Updating..."
echo ""
cp ./blog/wp-config.php ./wordpress/
chmod a+x ./wordpress/wp-config.php
cp -R ./blog/wp-content/themes/* ./wordpress/wp-content/themes/
cp -R ./blog/wp-content/plugins/* ./wordpress/wp-content/plugins/
# Delete old backup folder if exist.
if [ -e blog-old ]
then
chmod 777 blog-old
rm -rf blog-old
sleep 2
fi
# Do move job.
mv blog blog-old
mv wordpress blog
chmod 600 blog-old
echo "Done!"
echo ""
echo "You may now visit http://your.blog/wp-admin/upgrade.php "
echo " to update database structure."
echo "Enjoy!"
else
# If some preparation not done
echo "Cannot find blog and wordpress folder."
echo " - Are you in the correct directory?"
echo " - Have you unpacked the wordpress tarball?"
exit 1
fi


具体的含义我就不一一解释了。

主要的步骤是:



  1. 首先判断目录下有没有已经安装的wp:我这里是blog目录中。

  2. 然后是判断有没有wordpress目录,也就是新版的wordpress。

  3. 满足条件,开始升级,不满足则退出。

  4. 把wp-config.php,主题,插件拷到新目录中。




升级完毕。

使用方法:


  1. ssh到主机,cd到网站根目录,如htdocs,www等。

  2. wget最新的wp安装包,并解压。

  3. 运行./auto-upgrade-wp.sh。如果没法执行,赋予执行权限。

  4. 到用浏览器访问http://你的博客URL/wp-admin/upgrade.php




嗯,就这些。如果升级出问题,可以删除blog目录,把blog-old重命名为blog,设权限为755,执行上面使用方法中的最后一步,还原数据库,这样就又恢复到原来的状态了。
当然,你也可以写一个脚本——如果这也算是脚本的话。。。。:


#!/bin/sh
rm -rf blog
mv blog-old blog
chmod 755 blog


注意:本人不保证上文中所述的方法100%安全可靠。如果你不理解上面的脚本究竟做了些什么,请不要使用,或自己承担任何风险。谢谢!



updated:
上面的脚本有一个问题,就是在删除blog-old的时候会提示权限不足。解决方法是在删除前先chmod一下。我已经修复了脚本。

2 条评论:

  1. 呃,后来我都用后台的自动升级了~

    回复删除
  2. 直接后台点自动升级,然后去喝杯水,回来就升级完毕了,懒得备份,从没出过事...
    更懒的话就svn co一个,crontab三五天自动跑一次svn up....

    回复删除