1. 程式人生 > >記錄一次wordpress站點遷移過程

記錄一次wordpress站點遷移過程

遷移和備份還原的區別是針對不同的install而言的,使用上的區別可能是訪問的IP會變

幾乎所有系統的備份還原都主要涉及下面兩個方面,wordpress也不例外:

  • 資料庫:mysqldump,或者應用自身帶的備份生成xml(與具體資料庫無關)
  • 檔案系統(外掛、附件等):直接拷貝/var/www/html或者只拷貝關鍵目錄

1 docker部署

上一此直接在宿主機上安裝apachemysqlwordpress部署的,這次使用docker部署(dockerdocker-compose安裝略)

docker-compose.yml檔案如下:

version: '3.3'

services:
   db:
     image: mysql:5.7
     volumes:
       - ./db_data:/var/lib/mysql
     restart: always
     ports:
       - "6033:3306"
     environment:
       MYSQL_ROOT_PASSWORD: xxxxx
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "80:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress

wordpress關鍵的是文章,這種資料是存在資料庫的,所以資料庫永續性的掛載出來,wordpress的檔案系統不重要沒掛載出來

2 原站點備份

這裡直接使用的是UpdraftPlus Backup/Restore進行資料庫、外掛和主題等的備份

image

也可以:

  1. mysqldump使用的wordpress資料庫
  2. 拷貝整個/var/www/html

3 新站點還原

同樣,直接使用UpdraftPlus Backup/Restore上傳Upload backup files剛剛備份的檔案,進行還原,還原過程中會提示尼這是站點遷移,忽略繼續,完成後站點就不能訪問了(如果訪問地址變了),則連線資料庫,更新如下表:

UPDATE wp_posts SET guid = replace(guid, 'http://old ip/', 'http://new ip/');
UPDATE wp_options SET option_value = replace(option_value, 'http://old ip/', 'http://new ip/');
UPDATE wp_postmeta SET meta_value = replace(meta_value, 'http://old ip/', 'http://new ip/');

在資料庫中把之前的訪問地址,換成現在的地址

也可以:

  1. 使用之前的/var/www/html
  2. 還原資料庫(dump生成的是sql檔案)
  3. 修改wp-config.php中的資料庫配置資訊
  4. 若訪問地址修改了,則同樣按上述更新相關表

4 出現的問題

問題一:Workbench使用

update wp_posts set guid=replace(guid,"http://been.ltd","http://114.116.85.188");

更新時報錯:

You are using safe update mode and you tried to update a table 
without a WHERE that uses a KEY column To disable safe mode, 
toggle the option in Preferences -> SQL Editor and reconnect.

解決:不讓批量更新的意思,關閉safe mode image

問題二:update過後,站點可以訪問了,但是之前customer的menu裡面的連線沒變

解決:第三句update漏掉了,匹配的是http://been.ltd/而不是http://been.ltd

image

5 參看連結