这两天帮人迁移了两个Wordpress的网站,通过查找资料和自己摸索,总结了一个可以完美迁移Wordpress网站到新服务器的办法。
环境:Linux+Nginx+MySQL+PHP+phpMyAdmin
迁移方式:A服务器&主机 ——> B服务器,网站域名不变
1. 准备工作
将Wordpress整个网站文件打包后完整下载下来。不要只下载wp-content下的uploads,themes,plugins等文件夹,一定要完整下载下来。
tar -czf file.tar.gz /data/file/
将 /data/file/ 目录下的所有内容打包并压缩成 file.tar.gz,然后再将此文件用Xftp等工具下载到本地。这种方法适用于部署在独自服务器上的网站。
对于部署在VPS主机上的网站,可以用 wget 命令把源站文件直接下载到本地:
wget -nH -m --ftp-user=your_username --ftp-password=your_password ftp://your_ftp_host/*
然后,就是导出数据库文件。
对于部署在服务器上的网站,推荐使用phpMyAdmin将MySQL数据库导出为一个.sql文件,将其下载到本地。导出时就用默认的导出设置就好,要记好数据表的表头是什么(Wordpress默认为 -wp),还要记住相应的排序规则,等到后边导入的时候最好也用同样的设置。
对于部署在VPS主机上的网站,就要从主机网站的管理面板里下载数据库为一个.sql文件了。
2. 配置好新的空间和域名,并上传资料
配置好新的空间和域名,保证空间和域名可以正常访问。然后将备份好的Wordpress网站文件全部上传到新的服务器的对应位置,比如 */wwwroot/www/。
3. 导入数据库文件
将备份好的.sql文件,用phpMyAdmin导入,导入前要先在phpMyAdmin中新建一个数据库,推荐用之前服务器上使用的名称和排序规则,这样可以避免其他的修改。导入了.sql文件之后,去Wordpress网站文件夹里把wp-config.php删掉,然后登陆Wordpress,填入相应信息就可以得到一个跟之前一摸一样的网站了。当然这只适用于网站的域名没有修改的情况。
如果网站域名改变了,可以在导入后打开wp-options表,将option_value字段里的旧域名换成新域名。然后,将wp_posts里有旧域名的地方换成新域名。可以在phpMyAdmin中利用SQL语句来批量替换,具体语句如下:
UPDATE wp_posts SET post_content = REPLACE( post_content, '原内容', '新内容' )
解释:update 表名 set 字段名 = REPLACE( 字段名, 要替换的内容, 替换成什么内容)
要将wordpress各数据表中原网站的网址,IP地址都换成新网站的!不仅仅只有wp_posts, wp_options,也可能有wp_comments等等,要仔细确认数据表各项都换成了新网站的内容。
总结
用 phpMyAdmin 或 MySQL 导出数据库的方式可以实现Wordpress网站的完美迁移。此外,不推荐用Wordpress自带的导出工具导出成xml文件的方式迁移,因为这样只会将发表文章的文字备份下来,而一些主题的设置和插件的设置都会丢失。
Reference:
- WordPress整站迁移搬家教程 www.yiqingfeng.net/2202.html
- 关于 wordpress 完美整站迁移(Linux环境)的教程 www.cnblogs.com/viphchok/articles/5655832.html
- WordPress整站搬家迁移教程 jianxinshen.com/wordpress-site-move-migration-tutorial.html
- 通过MYSQL语句批量替换wordpress中文章内容 www.blhere.com/589.html