wordpress网站迁移说难不难,说简单不简单,涉及的东西也是很多很杂。 找了资料很多都是说用什么插件,有些还需要付费购买才能用,用了之后还各种问题,我做了简单的尝试, 不需
wordpress网站迁移说难不难,说简单不简单,涉及的东西也是很多很杂。
找了资料很多都是说用什么插件,有些还需要付费购买才能用,用了之后还各种问题,我做了简单的尝试, 不需要wordpress的插件,熟悉linux命令,完全可以自行迁移
环境: Centos 7 , LNMP 旧站点:a.test.com 旧数据库: atest 旧项目代码路径: /var/www/atest 新的站点: b.test.com 新数据库: btest 新项目代码路径: /var/www/btest将旧 a.test.com 站点 迁移到新 b.test.com域名站点
迁移步骤: 复制wordpress代码-->更改配置域名/数据库连接信息-->导出数据库修改域名/存储路径信息-->导入新数据库-->添加nginx配置-->重启服务
1、复制a.test.com完整代码,这里可以压缩或者直接复制一份wordpress代码
# cp -r atest btest2、修改新复制的wordpress代码中所有出现a.test.com域名的字符替换为 b.test.com
# cd btest # for i in `grep -R "a.test.com" . | awk -F":" '{print $1}' | sort -u`;do sed -i 's/a.test.com/b.test.com/g' $i; done修改wordpress数据库配置
# vi wp-config.php更改新的数据库连接信息
至此wordpress新的站点项目代码已经修改好新的域名和新的数据库信息
3、导出数据库(mysqldump),保存为sql格式文件
以 atest数据库为例 # mysqldump -uroot -p atest > atest.sql4、修改数据库文件atest.sql (也可以用wp-cli工具wp search-replace直接修改), 这里直接修改sql文件是最为稳妥修改替换atest.sql数据库文件中出现a.test.com的字符改为b.test.com
# sed -i 's/a.test.com/b.test.com/g' atest.sql修改替换test.sql数据库文件中的网站存储路径, 我这里旧的存储路径是/var/www/atest, 改为新的存储路径/var/www/btest
# sed -i 's/var\/www\/atest/var\/www\/btest/g' atest.sql5、新建数据库btest, 允许admin/admin用户所有权限,自行根据情况定义
> create database btest character set utf8; > grant all privileges on btest.* to 'admin'@'%' identified by 'admin'; > flush privileges; 导入修改好的atest.sql数据 > use btest; > source /root/atest.sql;至此数据库迁移完成,并已经修改好新的站点相关域名,存储路径信息
6、最后一步配置nginx (支持wordpress多站点的配置)
nginx https配置 和 root路径根据自身情况自行配置,这里不多说 # vi /etc/nginx/conf.d/btest.conf server { server_name b.test.com; fastcgi_pass_request_headers on; fastcgi_pass_header Authorization; root /var/www/btest; #Load configuration files for the default server block. rewrite ^/([_0-9a-zA-Z-]+/)?wp-admin$ /$1wp-admin/ permanent; if (-f $request_filename){ set $rule_2 1; } if (-d $request_filename){ set $rule_2 1; } if ($rule_2 = "1"){ } rewrite ^/([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) /$2 last; rewrite ^/([_0-9a-zA-Z-]+/)?(.*.php)$ /$2 last; rewrite /. /index.php last; location / { index index.html index.php; } location ~ ^(.+\.php)(.*)$ { fastcgi_pass 127.0.0.1:9000; fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; include fastcgi_params; } listen 443 ssl; ssl_certificate /etc/nginx/ssl/b.test.com.crt; ssl_certificate_key /etc/nginx/ssl/b.test.com.key; } server { if ($host = b.test.com) { return 301 https://$host$request_uri; } # managed by Certbot listen 80; server_name b.test.com; return 404; # managed by Certbot }7、重启nginx服务,访问新地址,即可