我把網店裝進了褲袋:99元單板電腦打造超微型WordPress伺服器 feat. OrangePi

樹莓派5上市勢必又帶起一陣“單板風”,但最快鋪貨要等11月,而一衆Pi替代板可能也聞風降價,本次挑戰用99元的低價迷你單板電腦、打造可以放進口袋的WordPress伺服器?!到底是否可行?能否取代購買WordPress主機?本文一齊來玩一齊探討。

閱讀全文: 我把網店裝進了褲袋:99元單板電腦打造超微型WordPress伺服器 feat. OrangePi

自己打造WordPress的好處

客觀的說,現在的WordPress主機起步價很便宜,例如小U推薦的FastComet只需2~3美金月費就能免去一切自設伺服器的繁瑣。那小U爲什麼要自己打造一部WordPress伺服器呢?原因有以下幾個:

  1. 第一、學習體驗: 自從在虛擬主機一鍵安裝WordPress之後,小U好久沒有試過自設伺服器來開WordPress網站,是時候練練手;
  2. 第二、本地伺服器PING最低: 小U現時租用的Cloudways主機是在新加坡,本次自己設的WordPress利用HKBN香港本地網絡,真正做到最低延遲。(爲什麼地理位置近好重要:【地理位置篇】香港台灣租主機空間架設Wordpress網站的避坑要點 | 10年經驗分享
  3. 第三、善用閒置資源: 剛好我想建一個Woocommerce復活小U網販,半年前購入的OrangePi Zero 2 一直閒置(RaspberryPi 5預購了一塊但要11月才有貨)。而且我家的HKBN 1000Mbps光纖x2一直有一條線路沒什麼用,用來搭建伺服器剛剛好能把手頭上的閒置資源利用上。
  4. 第四、好玩 :沒錯,我的愛好就是用很少價錢做到最大化的效果,俗稱追求性價比。

本次挑戰就是他:Orange Pi Zero 2 迷你單板電腦:

$200的開源單板電腦?OrangePi Zero 2 上手體驗購買教學分享

99元即可上路的超迷你單板電腦

小U翻看我半年前購入 OrangePi Zero 2 的付款記錄,當時購入價是¥174 (1GB版本),然而今天再看看,竟然升級爲OrangePi Zero 3,而且1GB版本的售價只需¥99??!!

Orange Pi Zero3全志H618芯片四种内存规格可选带蓝牙WIFI香橙派 99.0元

根據官網資料Orange Pi Zero3 主要是SoC CPU從H616升級到H618,內存規格從DDR3升級到LPDDR4,而且最大容量可選4GB,支援Debian12和Ubuntu22。售價Orange Pi Zero3大幅降低,從¥99起就有了,Orange Pi 網店銷量第一型號不無道理。

自建WordPress伺服器的主要想法

小U一眨眼用WordPress建站已經快有10年經驗,這次自設WordPress伺服器主要想挑戰:

  • Docker的WordPress部署方式
  • 壓榨Orange Pi Zero的性能極限
  • 傳統LAMP架構下的Apache+MySQL+PHP的性能據說很落後,測試“新一代架構”的Ngnix/Lighttp+PHP-FPM+MariaDB Stack,是否適合Orange Pi Zero2這麼輕量級的主機
  • CloudFlare Tunnel內網穿透: 無需Public IP、無需DDNS、免開Port Forward、免Reverse Proxy反代的公網建站方法
  • 做成一個可以放進褲袋的WordPress伺服器

WordPress Docker安裝方式:行不行得通?

現在似乎流行着“不Docker不夠Cook”的風潮,什麼都要Docker化、玩Cluster(連樹莓派也不放過:How to build a Raspberry Pi cluster)。小U也藉此試試用Docker架設WordPress是否如預期般一帆風順(劇透:翻船了)。

因爲要使用PHP-FPM FastCGI,比較有名的Docker鏡像就只找到在AWS上用過的bitnami/WordPress。根據他們docker頁面的介紹,只需兩行命令就能把container run起來:

#下載docker-compose yaml
curl -sSL https://raw.githubusercontent.com/bitnami/containers/main/bitnami/wordpress/docker-compose.yml > docker-compose.yml
#執行docker-compose啓動容器
docker-compose up -d

確實不到兩分鐘就把WordPress Docker建立起來了,但是隨後小U發現使用並不容易。實屬開始容易、使用難的範例:

WP-CONFIG.PHP難以修改

很多功能包括網站地址、SSL證書、緩存設定等等都是透過修改 WP-CONFIG.PHP 這個文件完成的,然而 bitnami/WordPress 並不支援直接修改這個文件,而是要把整個文件內容放進yaml的 WORDPRESS_EXTRA_WP_CONFIG_CONTENT 環境變量,這十分勸退。

bitnami/WordPress官方的docker-compose yaml說明書的冰山一角,我並不覺得玩弄這幾百行的environment設備比起手動起一個WordPress要簡單多少

Docker persist設定陷阱

bitnami/WordPress的persist目錄只指定了”wp-config.php文件 和 wp-content目錄”兩者,我的理解是如果你的修改在這兩者之外,如果你stop container再重啓,所有其他修改都會不見了。對於一個進階WordPress用家,要修改的文件何止這兩個地方?如果要慢慢修改這個persist的設定,耗費時間不少啊!

WORDPRESS環境變量不生效

小U發現 WORDPRESS_ENABLE_HTTPS 並不生效,Github上也有多個issues 帖子。這也導致了下一步的SSL申請設定困難。

SSL申請設定困難

上述幾點加上文件系統權限預設定沒有很夠,導致SSL的一鍵申請和安裝不成功。(我嘗試了用Really Simply SSL方法和 certbot的腳本,都不行)

到此小U已經決定放棄Docker”快速部署“這個看似簡單但是微調十分複雜的方法,改爲最傳統的安裝來開設WordPress。

手動安裝Ngnix + PHP-FPM + MariaDB +WordPress

網上的教程不少,但是多數是流水帳,有一邊教命令一邊解釋的,小U找到這個一流的教程並且按着它一步步做:How to Install WordPress with Nginx, MariaDB, PHP on Debian 12/11/10 – LinuxCapable,很建議大家參考(有時間小U做一個漢化版的),大約30分鐘就能理解並裝好WordPress。

安裝好Woocommerce和基礎的StoreFront主題

SD卡備份方法

手動安裝全套stack的問題是沒有能像docker那麼容易備份和遷移。我想到的最土炮的方法就是將整個SD卡備份成img或iso(參考Raspberry Pi的SD卡備份方法)。

網上很多流傳的Win32 Disk Imager 在我的Windows11+USB 3.0讀卡器並不能識別。在這篇文章:Raspberry Pi學習筆記(六):備份還原MicroSD卡、系統疑難雜症解答 | by Yanwei Liu 指引下,我找到了USB Image Tool 這個軟件順利備份,並用Rufus成功還原和測試正常。

這麼好用的一個USB/SD卡做鏡像軟件竟然沒有多少提及,難道是因爲沒有“聯盟行銷”的推薦返佣?

小U還試過用EaseUs Todo Backup的免費版來做SD卡的備份還原,結果是不能啓動。界面漂亮沒有用啊!靠聯盟行銷多推廣也沒用啊!

利用CloudFlare Tunnel免開端口更安全、更方便

傳統的在家伺服器開WordPress(或者任何html網站)都要把路由器的80和443端口打開,做端口映射到內網的伺服器。還要設置DDNS自動更新公網IP,DNS指向等等。這一切都可以用Cloudflare Tunnel代勞,而且完全免費:

詳細的Cloudflare Tunnel設置Walk-through可以參考:

注意:使用Cloudflare Tunnel之前,SSL證書必須預先申請好,確保HTTPS網站是能正常使用,再套用Cloudflare Tunnel。在Cloudflare Tunnel裏面 指向地址寫 localhost:443,協議HTTPS並且在TLS選項中把TLS VERIFICATION關閉。

使用Cloudflare Tunnel應該是對內網最安全的選項,從外網是無法滲透進來內網的其他家用機,連VLAN隔離什麼也不用操心。

經過幾個小時的摸索,基於Ngnix+PHP-FastCGI+MariaDB 的 WordPress+Woocommerce就安裝好了!

速度優化:自己安裝Memcache和Redis

興奮的心情沒持續多久,安裝好之後測速一下Woocommerce網店的主頁,哇這個TTFB要兩秒??!!

這長長的Waiting達到2.6秒,不能接受

Orange Pi Zero2難道是太弱沒救了?不如先試試緩存吧!按我的經驗,緩存能大幅提高WordPress網頁的讀取速度:【性能篇】平價主機也能讓WordPress秒讀的隱藏祕籍 – by Upsangel

參考Redis vs Memcache vs APCu – object cache comparisons (wpjohnny.com) ,作者說Redis,Memcache和APCu是主流,小U之前在FastComet上就用過Memcache,所以先從他開始。我找到這個YouTube說得挺詳細的:

其實安裝很簡單,就兩行命令:

apt-get install memcached

然後要把PHP的對應套件都安裝上才能在WordPress中調用到緩存功能:

apt-get install php-memcached

Redis也是相似的,參考:How To Install Redis & PHP Redis Extension On Ubuntu 20.04 (prowebtips.com)

然後利用W3TOTAL CACHE插件可以手動選擇使用哪款緩存:

W3TOTAL CACHE 很厲害能夠自動對比不同緩存策略的效能,我的網站在Orange Pi Zero2似乎用Memcached比Redis要好,設定好Memcached緩存後,再用GTMetrix跑一次測速:

一下就變成300ms,實在是大躍進

結果大大提升!TTFB從2000毫秒大幅提升到300ms,一舉從紅色變綠色、從C跳到A!

Orange Pi Zero2 做輕量級的網店確實可以!

無線連接WIFI網絡、能上街的伺服器

Orange Pi Zero2 / Zero3 的無線功能不用白不用,碰巧小U家裏Router的LAN口不夠,立即就翻Orange Pi的官方說明書,利用 nmtui 命令連上無線網絡:

連上WIFI後拔掉網線,網店依然能暢通訪問!因爲外網穿透由Cloudflare Tunnel完成,並不需要改IP 或者 端口映射,不需要進入路由器的權限,好方便啊!

也就是說,給Orange Pi一個USB-C電源,再給他一個WI-FI,這片Orange Pi Zero 2就是一台隨身網站伺服器!

放進褲袋的隨身網店

這次用Orange Pi Zero2搭建WordPress的體驗很讚,不僅成功達到目的建立了一個能用的Woocommerce網店,而且還刷到Docker和WordPress底層建站架構和緩存優化的經驗。

除此之外,現在什麼都”雲端“、”上CLOUD“,讓人覺得科技很虛擬。而這次的百元單板電腦挑戰,讓我實實在在的、摸着微微溫暖散熱片的開發版來做嘗試,感覺完全不一樣。

現在Orange Pi Zero 3 的1GB只需要99元就能入手,就算這個網站沒有實際應用,得到的遠遠大於99元。

Orange Pi Zero3全志H618芯片四种内存规格可选带蓝牙WIFI香橙派 99.0元

如果這個網店是實際運營的,那就更划算了。小U推薦的最最便宜的入門主機FastComet每個月都要US兩三美金,幾個月就已經能回本。

如果大家想試試,不妨就上 小U網販 shop.upsangel.com 試試吧!有什麼問題、或者想小U上架什麼新產品,歡迎留言哦!~

2 Comments
  1. 巧了,我的个人站就是跟你的架构非常的相似。我用的Raspberry Pi 4,而且小破站不需要什么性能,Host系统洁癖,还有一堆其他的基于Docker的服务要跑,所以硬着头皮做了全Docker方案。
    Wordpress官方php8.x-apache容器+Mariadb+CloudFlare Tunnel,容器间组网,隔离家庭局域网

    • 多謝你的分享! 使用官方容器我有兩個問題解決不了,一個是安裝 caching layer 例如 reddis和memcache我都搞不定,第二個是cloudflare要安裝的https certificate,我用容器的方法搞不上 cloudflare tunnel。 希望你能分享一下你的做法~

你可以一針見血

by Upsangel
Logo