迁移Wordpress网站到PostgreSQL/Nginx

作为一名不喜欢MySQL的pg党,最近又迁了一个WordPress到PostgreSQL上,顺便就作个笔记以备不时不之需吧。当然,web server也从Apache换成了Nginx,所以这个配置也要改一下。

WordPress的Nginx配置

这个比较简单,因为Nginx不支持 .htaccess 配置只能改在conf里(使用php-fpm):

    location / { 
        try_files $uri $uri/ /index.php?$args;
    }   

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/yoursite$fastcgi_script_name;
        include        fastcgi_params;
        fastcgi_intercept_errors on; 
    } 

安装WordPress和PG4WP

首先下载WordPress,并解压到你的网站目录。

然后下载PG4WP最新版,8月份更新的这个1.3.1版本已经修正了我之前说的那两个在WordPress 3.9+上的BUG。diff了一下作者的修改内容,跟我当时的修补方法几乎一样(我的wpsql_errno实现粗糙了一点,但是也能用)。

把PG4WP解压出来,把其中的pg4wp目录整个上传到WordPress的wp-content下,然后在wp-content目录里创建一个符号链接:

ln -s pg4wp/db.php

注意:pg4wp有一个坑就是,它只替换了mysql_系列函数,但是高版本的Wordpress检测到系统中安装了mysqli_的话,会自动改用mysqli_系列函数,导致pg4wp替换失败,请修改wp-config.php,在其中指定使用mysql_系列函数:

define('WP_USE_EXT_MYSQL', true);

安装即完成,现在可以开始配置一个全新的WordPress站点:用浏览器打开网站,输入数据库相关配置即可,跟用Apache+MySQL时完全一样。

等等,不是说迁移吗?怎么变成新建了呢?别急,接下来就是迁移的工作。

数据库迁移

之所以不是直接把MySQL上的数据库直接迁移过来,是因为PostgreSQL的库结构语句与MySQL有区别,为了保险起见,还是让PG4WP来建结构,只迁移数据部分。

登录原网站的phpMyAdmin(或通过其它方式)导出数据库,导出时需要注意的选项有:

SQL格式使用Traditional,不要用MySQL特有的
用事务包装全部语句
仅导出数据
插入前清空表
插入语句包含字段名

导出完成后,用编辑器打开导出的SQL文件(如果数据库较大,可以使用压缩,则需要解压后打开),作以下修改:

查找`ID`替换为"ID"(注意两个“引号”不一样)
把剩余的`符号全部去掉(替换为空)
注释或删除SET AUTOCOMMIT xxx和SET TIME_ZONE xxx等PostgreSQL不支持的语句

保存后导入PostgreSQL数据库,用phpPgAdmin或者命令:

psql -d dbname < oldsite.sql

其中dbname为PostgreSQL的数据库名,oldsite.sql就是修改过的原数据库导出SQL文件。

完成后再打开网站看看,迁移完成。

经过这样的迁移以后,网站的速度更快,占用服务器资源更少,你的生活也将更愉快……(雾

你可能感兴趣的:(迁移Wordpress网站到PostgreSQL/Nginx)