找了資料不少都是說用什麼插件,有些還須要付費購買才能用,用了以後還各類問題,
我作了簡單的嘗試, 不須要wordpress的插件,熟悉linux命令,徹底能夠自行遷移php
環境: Centos 7 , LNMP 舊站點:a.test.com 舊數據庫: atest 舊項目代碼路徑: /var/www/atest 新的站點: b.test.com 新數據庫: btest 新項目代碼路徑: /var/www/btest
遷移步驟: 複製wordpress代碼-->更改配置域名/數據庫鏈接信息-->導出數據庫修改域名/存儲路徑信息-->導入新數據庫-->添加nginx配置-->重啓服務html
一、複製a.test.com完整代碼,這裏能夠壓縮或者直接複製一份wordpress代碼mysql
# cp -r atest btest
二、修改新複製的wordpress代碼中全部出現a.test.com域名的字符替換爲 b.test.comlinux
# 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數據庫配置nginx
# vi wp-config.php
更改新的數據庫鏈接信息sql
至此wordpress新的站點項目代碼已經修改好新的域名和新的數據庫信息數據庫
三、導出數據庫(mysqldump),保存爲sql格式文件ide
以 atest數據庫爲例 # mysqldump -uroot -p atest > atest.sql
四、修改數據庫文件atest.sql (也能夠用wp-cli工具wp search-replace直接修改), 這裏直接修改sql文件是最爲穩妥
修改替換atest.sql數據庫文件中出現a.test.com的字符改成b.test.comwordpress
# 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.sql
五、新建數據庫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;
至此數據庫遷移完成,並已經修改好新的站點相關域名,存儲路徑信息
六、最後一步配置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 }
七、重啓nginx服務,訪問新地址,便可
多站點遷移測試中發現若是a.test.com的域名遷移更改成 cc.test.com 訪問新地址後發現有一些原來的主題樣式設置失效了,又要從新設置,從新設置是不可能,有一些操做設置都忘記了
遷移前 a.test.com的域名字符長度是 10, 遷移後的新域名 cc.test.com字符長度是 11, 兩個域名字符長度不同,就會出現遷移後樣式設置丟失的狀況,多方查找緣由,最大多是數據庫會同時保存域名的字符串長度,判斷惟一性。因此更改個人域名遷移前和遷移後的域名字符長度同樣 b.test.com後,遷移後就顯示正常了,網站跟原來的wordpress同樣。這只是個人臨時解決方法,應該是能夠直接修改數據庫裏面關於這個域名字符長度設置的,但不知怎麼修改,若有更好的解決方法請留言給我,我學習一下,謝謝!!