其實 WordPress 網站要搬係有 plugins 幫你手,隻 plugin 仲好厲害添,可以喺搬嘅時候幫你改埋啲內容,例如你個 Domain 要改名,佢可以將你個網站現有嘅 Domain links 改為新嘅 Domain name,勁方便。
既然咁方便,有咩值得講?
因為我上一篇 post 講隻 WordPress Docker,整好咗隻 Docker 咪試下搬隻 website 入伙,上演真人 show。😎
![]() |
![]() |
| 目標網站,請留意,有 HTTPS 嘅,係用 cPanel 生成嘅。 | 個 HTTPS 係用 WordPress plugin “Really Simple SSL” 做嘅,首先去 disable 佢,搬完先更正番。 |
![]() |
![]() |
| 搞掂,Safari 顯示為 Not Secure。 | 安裝隻 All-in-One WP Migration plugin。 |
![]() |
![]() |
| 安裝完,激活,之後就多咗一個 menu item,入面有 3 個功能,我哋首先用 Export,即係將隻 website 嘅資料揪出嚟。 | Export 提供咗 3 款 options 選擇。 |
![]() |
![]() |
| 第 1 個係 Find XXX Replace with YYY,即係將資料入面有 XXX 都順手改做 YYY。今次唔使用到,直接跳過。 | 第 2 個係可以抄啲唔抄啲,我係搬家,所有嘢都照搬,用唔著。 |
![]() |
![]() |
| 第 3 個係重點,可以選 export 出嚟嘅檔案你想放去邊?我淨係想自己嚟,冇需要太復雜,於是揀 FILE。 | 隻 plugin 即刻做嘢。 |
![]() |
![]() |
| 第一個 error,隻 website storage 唔夠空間,要去 cPanel 增加儲存空間,即係俾錢要買位。 | 準備完畢,全部資料要 535MB,唔好彩,超出咗免費版嘅上限 512MB 少少,如果你冇咩錢,可以跟喱個網頁試下嘅。買唔買慢慢諗,先下載隻檔案。 |
![]() |
![]() |
| 整隻 Docker,copy 一份 script,叫做 wp_directoutput,然後修改隻 .env 檔案,如上。 | 再用 WinSCP 傳上隻 Docker VM 度。 |
![]() |
|
|
登入隻 Docker 然後照辨 create 啲 containers,唔好漏咗搞 permissions: docker exec wp_directoutput chown -R www-data:www-data wp-content 我就係漏咗。😂 |
去 Portainer check 下,多咗 3 隻 containers。 |
![]() |
|
| 去 Google Cloud 我隻私家 nginx Reverse Proxy 加個 conf 俾佢用。 | 改好咗記得 restart 隻 nginx,佢會即時 load 隻新整嘅 conf 檔案,冇 error 即係安全通過。 |
![]() |
![]() |
| 準備好,可以去 cPanel 改個 Domain IP 指去個新 website 嘅 IP,一但改咗就可以暫時收工,因為要等啲 domain name servers 由舊 IP 變為新 IP,要有耐性,等。 | 當等夠時間之後,你第一次 visit 個網站佢會要你 create 個 admin user,喱個係 WordPress 嘅例行要求,記住,after 你 Restore 咗個 backup,個 admin user 會變番係舊嗰個。 |
![]() |
![]() |
| 立即去加番隻 All-in-One WP Migration plugin,然後㨂 Import。 | Drag 個 backup 檔案落去,上傳,然後等佢分析一下,佢或者會出現以上嘅 error message,不過唔緊要,可以按 PROCEED。 |
![]() |
![]() |
| 個 plugin 識得自動波 Restore。 | 最後會 retore 個 database。 |
![]() |
./certbot-auto certonly --standalone -d directoutput.com.hk
|
|
完成之後要去 Settings > Permalinks 按一次 Save,原因個 plugin 作者冇講,淨係要你做一次,咁咪做囉。不過,要留意 Settings > General 兩個位:WordPress Address (URL) 同埋 Site Address (URL),依家未有 SSL,做完以下嘅步驟就要返嚟修正為 HTTPS。
|
個網站係已經用得,不過由於之前係有用 SSL 嘅,我哋去隻 nginx Reverse Proxy 度加番個 certificate。有時要先行 stop 個 nginx 先 run 到上面嘅指令。 |
![]() |
*** 完 *** |
| 加完 certificate 就要改埋個 website 嘅 conf 檔案,如上。 |
送個 conf 檔案:
## Handle http:// connections
server {
listen 80;
server_name domain.com.hk www.domainname.com.hk;
return 301 https://$server_name$request_uri;
}
## Handle https:// connections
server {
listen 443 ssl;
server_name www.marche.com.hk;
#access_log /var/log/nginx/www.domainname.access.log;
#error_log /var/log/nginx/www.domainname.error.log debug;
##
# SSL Settings
##
ssl on;
# Set cert locations
ssl_certificate /etc/letsencrypt/live/domainname.com.hk/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domainname.com.hk/privkey.pem;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers RC4:HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
keepalive_timeout 60;
location / {
##
# Proxy settings
##
proxy_pass http://192.168.12.149:8005;
# Convert all inbound request into http:// request to upstream server
proxy_redirect http:// $scheme://;
proxy_set_header Accept-Encoding "";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
add_header Front-End-Https on;
proxy_max_temp_file_size 0;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
client_max_body_size 512m;
client_body_buffer_size 512k;
##
# Filter response settings
##
# Filter all response content with http://www.marche.com.hk into https://www.marchet.com.hk
sub_filter http://www.marche.com.hk/ https://www.marche.com.hk/;
# Filter not only response type text/html but also text/css and text/xml
sub_filter_types text/css text/xml;
# Filter all response
sub_filter_once off;
}
}

























