記一次wordpress網站遷移的經歷

wordpress網站遷移說難不難,說簡單不簡單,涉及的東西也是不少很雜。

找了資料不少都是說用什麼插件,有些還須要付費購買才能用,用了以後還各類問題,
我作了簡單的嘗試, 不須要wordpress的插件,熟悉linux命令,徹底能夠自行遷移php

環境: 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配置-->重啓服務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.com
wordpress

# 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同樣。這只是個人臨時解決方法,應該是能夠直接修改數據庫裏面關於這個域名字符長度設置的,但不知怎麼修改,若有更好的解決方法請留言給我,我學習一下,謝謝!!

相關文章
相關標籤/搜索