WordPress跨平台迁移实战

小柊 发表于 2015年10月22日 23时45分39秒

虽然bb过很多次,但还是要再啰嗦一遍,在今年九月的时候,我开始正式接触Linux服务器,在Linux服务器上搭建好Apache、php和MySQL之后,我也开始琢磨起怎么把放在Windows Server上的WordPress迁移到自己的CentOS上了。

我作为一个开发人员,主要的编程语言是.net Framework的C#语言,所以自己的第一台服务器是Windows Server 2012标准中文版,然后也跟风搭建自己的个人博客。结果在网上逛了一圈没有发现什么好用的基于aspx的个人博客,倒是php平台的WordPress吸引了我。然后就是一通折腾,在自己的Windows Server上先后安装了php和MySQL,本来阿里云的Windows Server给的系统盘大小就不是很足只有40G,这么折腾一下C盘少了很明显的一截。

除了这个问题以外,还有就是在Windows平台下,php那惊人的执行效率,对,很低。所以笔者自己的个人博客一直卡的慌,另外Windows Server平台下的权限设置也非常麻烦,在WordPress升级的时候经常是碰到HTTP 500的情况,远程桌面连接上服务器上一看错误信息基本就是php打开文件时失败没差。

最终,大概是在九月底的时候,Windows Server服务器的C盘终于是快要爆炸了,连5G的可用空间都没有了。最终决定重装Windows Server,在重装前把在Windows Server上的WordPress博客全部转移到CentOS上。这就是本文的主要内容。

 

1.转移数据库

首先需要转移MySQL数据库,我们需要在这一步将存放WordPress内容的数据库导出成sql文件进行转移。

先在开始菜单(开始桌面)里找到MySQL的控制台,一般来说打开MySQL控制台之后会要求输入Root用户密码,输入后回车即可。

然后我们在控制台里以下命令显示当前机器上MySQL中所有的数据库:

show databases;

 

我当时创建数据库的时候是使用了那个名为wordpress_db的数据库,所以我们的目标就是它。

在MySQL里将数据库导出为sql文件的命令是mysqldump,这个命令在Linux的SSH命令行下是可以直接使用的,但是Windows平台的MySQL控制台里不管怎么输入都提示语法有误。折腾了很久之后终于是在一个满是英文的网站找到了解决方法……

原来在Windows平台下mysqldump命令是单独成为一个可执行文件的。所以你需要先定位这个可执行文件,然后带参数的去运行它。

我的MySQL那时候一不留神就装到了C盘里,所以去C盘的Program Files (x86)下面找这个文件。如果实在嫌麻烦,也可以直接用Windows资源管理器右上角的搜索功能直接搜索mysqldump.exe这个文件就可以了。

 

找到mysqldump.exe之后复制上方地址栏的地址,然后按Windows键+X键,打开快键菜单选择“命令提示符(管理员)(A)”

 

以管理员身份启动命令提示符之后,键入命令:

cd “(之前复制的路径)”

 

考虑到路径中会带有空格,所以建议还是在路径外加上英文的双引号。使用cd命令切换文件目录之后,再使用mysqldump命令导出数据库。

键入mysqldump命令:

mysqldump -uroot -p (需要导出的数据库名) > (导出文件名)

 

这时候会要求输入root密码,键入密码后回车即可。

 

如果密码正确,则当前目录中就会出现刚刚命令中指定的文件名文件。

 

这个文件就是导出的数据库文件,现在我们只需要将这个文件复制到其他地方保存好就行了。放置好导出的sql文件后,我们就可以对MySQL说拜拜了。

 

接下来需要把这个sql文件上传到我们的Linux服务器上面,我们可以用ftp上传到服务器上面。

 

然后使用XShell或者其他的SSH工具以root身份登陆到Linux服务器上。

以root用户进入MySQL控制台:

mysql -uroot -p

这时候会要求输入root密码,键入正确的root密码即可进入MySQL控制台。

 

 

创建一个名为“wordpress_db”的数据库:

create database wordpress_db;

 

将当前数据库切换到wordpress_db数据库:

use wordpress_db;

 

将/var/www/html/wordpress_db.sql文件中的所有内容导入当前数据库:

source /var/www/html/wordpress_db.sql;

 

键入上面的命令后,屏幕滚动过一堆“Query OK”。静候一段时间,待所有内容导入成功之后屏幕就不再跳动。

退出MySQL控制台:

exit;

 

至此,数据库就成功转移了。

 

2.转移WordPress本体

转移WordPress本体就很简单了。首先我们需要将整个WordPress目录从服务器上下载到本地,在用ftp上传至Linux服务器上之前,如果在转移中,存在着类似于MySQL数据库密码更改等情况的话,可以用Notepad++之类的文件编辑器修改一下WordPress目录下的“wp-config.php”文件中的配置信息。

一切就绪后,就可以用FTP将WordPress目录上传至服务器中了。

 

等到所有文件都上传完成后,WordPress本体的转移也算是结束了。

 

3.调整环境

一般来说基本上是没问题了,但是我的WordPress在此之前进行了SEO优化,开启了url重写,结果在新的Linux主机上因为没有开启url重写导致所有文章点击进去都是HTTP 404。

 

所以需要调整一下Apache配置文件

 

使用Vim编辑器打开Apache配置文件:

vim /etc/httpd/conf/httpd.conf

首先在配置文件里加一条指令:

LoadModule rewrite_module modules/mod_rewrite.so

 

具体的位置随意,可以像笔者一样放在LoadModule的例子下面

然后将光标移动到站点配置节点:

<VirtualHost *:80>

ServerName localhost

DocumentRoot /var/www/html/default

<Directory "/var/www/html/default">

Options FollowSymLinks

AllowOverride None

Order allow,deny

Allow from all

</Directory>

</VirtualHost>

将其中的“AllowOverride None”改成“AllowOverride FileInfo”。

 

保存配置文件并退出。

然后重启Apache服务以使配置文件生效:

systemctl restart httpd.service

 

接下来新建一个名为“.htaccess”的文件,这种命名格式的文件在Windows下是没办法直接创建的,建议使用Notepad++等编辑器,保存时命名为.htaccess即可。

在.htaccess文件中,放入以下代码:

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteBase /

RewriteRule ^index\.php$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . /index.php [L]

</IfModule>

保存后上传到网页的根目录下。

 

好了,回到浏览器里刷新一下,好了,现在博客可以正常访问了。

 

至此,WordPress跨平台迁移完整结束。

 

 

小柊

2015年10月22日 23:34:37

相关文章

  2 条评论发布于 “WordPress跨平台迁移实战

  1. Pingback:

发表评论

电子邮件地址不会被公开。 必填项已用*标注