每一個國內WordPress網站站長都會碰到的問題,在某個時候,主題、某個插件,甚至WordPress本身更新出錯,因為眾所周知的原因。
我的客戶裡有30%左右將網站置於國內阿里雲服務器上,這是一個我需要反复解決的問題。
我還沒有找到100%可靠的方法,只能說下面的這個方案“足夠”可靠。方法很簡單:
第一步:WP站點服務器與國外某台服務器間建立穩定的隧道(自動斷線重連),目前來看autossh是簡單有效的選擇:
# 在網站服務器與國外服務器之間建立SSH動態隧道autossh -D 12345 -f -C -q -N [email protected]
命令參數請讀者自行查詢吧。
習慣CentOS的朋友請注意,如果你發現autossh安裝後上述代碼無法正常執行,請查看一下你的ssh版本,有可能是因為ssh版本太老了。
第二步:配置wp-config.php,讓WordPress後台流量走這個隧道
# 在wp-config.php中為WordPress配置代理define( 'WP_PROXY_HOST', 'socks5://127.0.0.1' ); define( 'WP_PROXY_PORT', '12345' );
這是參考文檔。
這個方法能比較好地保障WordPress更新順利,缺點是有可能拖慢後台,這取決於你選擇的中間服務器的質量,關於中間服務器的選擇,這裡不便展開討論。
為了盡可能避免非必要情況下過代理,讀者可以自行為為上述配置添加限制條件,如:
# 只在偵測到特定Cookie值時才啟用代理if ( $_COOKIE['useproxy'] == 'yes' ) { define( 'WP_PROXY_HOST', 'socks5://127.0.0.1' ); define( 'WP_PROXY_PORT' , '12345' ); }
你應該能找到適合自己的條件設置方式。
並非所有的主題、插件都遵循WP_PROXY_HOST和WP_PROXY_PORT的代理設置,但這種情況很少見,除非你安裝了代碼極不規範的組件,碰到這樣的情況,最好的選擇是更換代碼規範的組件。
autossh比反复手動重啟ssh好很多,但它仍不是100%可靠的,所以讀者不妨配合腳本對autossh進程本身進行管理,個人經驗,這並非必要,這裡就不展開了。
如果境外节点使用阿里云,不允许作为proxy,曾经被警告过。
我自己的站点也都是离岸部署。
我想到的一种办法是,借助git在两地同步代码,但是没有具体实施。
这是一沟绝望的死水,清风吹不起半点漪沦。—闻一多
技术问题总有解决方法,阿里云在这个场景也不应当是首选,谨慎起见,就不讨论了。