前言
說到WordPress,備份也是一件討人厭的事情
但比起備份,還原至另一台Server更是令人困擾
在工作時原本以為順利把WordPress部署至測試機後
續後處理起來會輕鬆很多,結果還是吃了不少悶虧
趁下班之餘趕緊趁忘記之前好好記起來!
Ubuntu
這邊使用的是GCP
平台,因此在建立Ubuntu時可先賦予root密碼
1 | sudo passwd root |
可切換至root
帳號
1 | su - |
這樣在操作下列步驟時,執行指令前就不用另外加sudo
Backup
MySQL
首先先從資料庫把資料備份出來
1 | mysqldump -u <USER> -p <DATABASE> > <BACK_SQL>.sql |
u: user / p: password
WordPress
這裡我們先以最簡單暴力的做法來呈現,也就是手動將整個WordPress備份下來
先切換至存放WordPess的目錄
1 | cd /var/www/html |
壓縮WordPress
1 | tar -zcvf wordpress_backup.tar.gz <WORDPRESS> |
c: 壓縮 / z: gzip格式 / v: 顯示過程 / f: 指定檔案(後面一定要接檔名)
其實到這邊備份的部分就完成了,是不是超級簡單
這就是最笨但也是最快速的方式
Apache
其實Apache要備份只有/etc/apache2/sites-available/<WORDPRESS>.conf
這個設定檔而已
因此你可以把它直接下載下來即可
Dowload
而關於下載的部分,這邊也教一個GCP
提供的功能
如果你是以SSL用瀏覽器打開的話,在畫面右上角會有一個工具欄
點選下載檔案
接著會出現視窗讓你輸入路徑
用這樣的方式就可以很簡單的把備份檔下載下來了
同理上傳檔案也是如此,上傳後檔案會放至在/home/<GCP_ACCOUNT>
下
接著就可以開始著手處理還原的部分囉~
Restore
還原就有很多小細節要注意了,如果沒有處理好,不僅是WordPress打開來畫面跟原先的不一樣
甚至有可能會出現連網頁都開不了的窘境,因此這裡會一步一步教大家如何操作
Before
我們先假設你已經將備份檔及Apache設定檔上傳至新的Server
這邊是透過GCP
上傳,因此檔案會位於我GCP
帳號的家目錄底下
1 | cd /home/<GCP_ACCOUNT> |
如果是需要透過FTP的話,也可以參考這一篇安裝
也已經安裝好PHP
, MySQL
, Apache
, phpMyAdmin
等工具
如果對這方面不熟悉的人可以回去參考這一篇來複習,裡頭所提及的流程這邊就暫且不多做敘述
一樣可以使用
su -
切換root帳號以便後續操作
MySQL
在已建立好資料庫的情況下,這邊要做的事情就是先還原
1 | mysql -u <USER> -p <DATABASE> < <BACK_SQL>.sql |
u: user / p: password
網址更換
WordPress很多資料裡頭url
都是寫死的,例如超連結或是圖片檔
因此如果不論你有沒有移機,只要有更換網址的需求都要更新MySQL
裡頭的資料
進入MySQL並操作WordPress資料庫
1 | mysql -u <USER> -p <DATABASE> |
以取代方式更換網址
1 | UPDATE wp_options SET option_value = replace(option_value, '<OLD_URL>', '<NEW_URL>') WHERE option_name = 'home' OR option_name = 'siteurl'; |
可先用編輯器取代完字串後再貼進MySQL-CLI裡
退出MySQL
1 | $ exit |
但這裡還是要留意,如果有套用主題可能會有例外
因此還是要以實際的狀況為主,這一步可以符合大部分的需求
WordPress
將備份檔移至WordPress目錄並切換過去
1 | mv <WORDPRESS>.tar.gz /var/www/html |
解壓縮備份檔
1 | tar zxvf wordpress-5.2.4-zh_TW.tar.gz |
x: 解壓縮 / z: gzip格式 / v: 顯示過程 / f: 指定檔案(後面一定要接檔名)
可自己選擇要不要刪除壓縮檔
1 | rm <WORDPRESS>.tar.gz |
根據專案選擇要不要修改wordpres/wp-config.php
的DB_NAME
DB_USER
DB_PASSWORD
1 | ... |
Apache
將設定檔移至Apache目錄並切換過去
1 | mv /home/<GCP_ACCOUNT>/<WORDPRESS>.conf /etc/apache2/sites-available |
停用預設設定檔
1 | a2dissite 000-default.conf |
啟用WordPress設定檔
1 | a2ensite <WORDPRESS>.conf |
重新啟動Apache
1 | sudo service apache2 reload |
這裡要注意的是,如果你原本的Apache有使用WordPress裡.htaccess
的設定
而在Apache的.conf
檔裡也有添加這幾行
1 | <Directory "/var/www/html/wordpress/"> |
那你一定要記得啟動Apache mod_rewrite
要不然網頁打開來會是掛掉的情況
1 | sudo a2enmod rewrite |
小小抱怨一下,我之前因為忘記做這件事,害得我花了將近一天的時間在DeBug,網頁開起來直接掛掉的當下讓我很緊張,還重舊Server上備份了好幾次,搞了老半天才意識到我沒有把mod_rewrite啟動,當下真的是想把自己給掐死,也因為這樣才衍生出了寫這篇文章的衝動。
接著你就可以在新的Server上開啟WordPress囉~