


一般人架設 WordPress 會買虛擬主機來架設,一方面簡單,一方面不需要自己管理機器,只要專注在內容上。但這次架設自己的 WordPress ,我打算挑戰使用 SBC ,看看能不能在最低的成本下,建立起可用的網站。
需注意的是,使用這個方法建立需要相當熟悉 linux 與 WordPress 、Docker,初學者還是建議使用虛擬主機比較不會有問題哦!
這次我挑選的版子是 Banana pi m1,沒有什麼特別的原因,只是我手上有以前買的三張板子,分別是 Raspberry pi 1、Banana pi m1、Banana pi m2 plus,之前玩就覺得樹莓派一效能太差,而 Banana pi m2 plus 太燙,所以就先從 Banana pi m1 開始試試(Raspberry pi 除了不能使用 Armbian 以外其他方法都可以共用)。



此篇就從系統建立開始分享。
安裝 Armbian 系統
首先到 Armbian 官網下載對應的映像檔,因為需要安裝 Docker,所以從較新的版本中選擇 Buster server 版本 https://www.armbian.com/bananapi/(經測試 Focal 和 Bionic 都找不到對應的 Docker 版本)。



插入 SD card 到 mac 後,在 console 中下
diskutil list
找尋剛剛插入的 SD card ,本例是 /dev/disk2。我們先把他 umount 掉。
diskutil unmountDisk /dev/disk2
切換到我們剛剛下載的 iso 檔位置,準備開始 dd 寫入。
dd if=xxx.iso of=/dev/rdisk2 bs=1m
眼尖的會看到,這邊使用的是 rdisk2 ,dd 的時候使用這個寫入會快很多。
開機初始化設定
搞定後,就可以插入開機。Armbian 系統 landing 做得不錯,使用預設的 root / 1234 登入後,就會引導使用者更改 root 密碼,並且建立一個新使用者帳號。而且也會自己擴張根目錄容量到整張記憶卡,不用再自己下指令。
接著就可以使用 armbian-config 來做設定
sudo armbian-config



這部分可以自由依需要做調整,其中比較重要的是 ssh 的部分,從 System > SSH 進入設定,關掉 PermitRootLogin 和 PasswordAuthentication,開啟 PubkeyAuthentication,使用 key 來 ssh login 會比較安全。



當然要記得到自己的家目錄中建立 .ssh folder
mkdir .ssh
然後 cd 進去,建立 authorized_keys 檔案。(會建議先用別台電腦用帳密的方式 ssh 登入後,建立並貼上 pubkey 比較方便)
cd .ssh
nano authorized_keys
把 pubkey 放入後儲存,並改權限 600。
chmod 600 authorized_keys
之後用有對應 private key 的電腦連線測試看看,沒問題後,就可以拔螢幕囉!
安裝 Docker
搞定 ssh 後,開始安裝 Docker,因為 banana pi m1 的 SOC 是 armv7 指令集,所以安裝 Docker 的時候要特別注意,不要安裝到 arm64 或 x86_64/amd64 哦,不然裝完會跑不起來(手殘親身經歷過這等瞎事)。
方便起見直接附上安裝指令,有需要也可以來這參考。https://docs.docker.com/engine/install/debian/
# install docker (debian/armv7)
sudo apt-get update
sudo apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository \
"deb [arch=armhf] https://download.docker.com/linux/debian \
$(lsb_release -cs) \
stable"
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
sudo usermod -aG docker $USER
安裝 docker-compose
接著安裝 docker-compose,但我發現使用 docker 官網的安裝方式,會找不到對應的安裝,只能自行使用 pip 安裝與 build。
首先安裝 pip3 和 python dev 環境。
# install pip3 and python dev
sudo apt install -y python3-pip python3-dev libffi-dev libevent-dev
sudo pip3 install setuptools
接者使用 pip 安裝 docker-compose
# install docker-compose
sudo pip3 install docker-compose
因為會需要 build source code,而 Allwinner A20 效能普普,得等好一段時間。
結束後,就可以使用 docker 和 docker-compose 指令測試看看有沒有安裝成功囉!
啟動 WordPress 、MySQL container
確認沒問題後,用這份 yml 檔直接起 wordpress 和 MySQL 兩個 container。其中注意的是,MySQL 現在官方沒有提供 armv7 的 image ,好在有高手已經 build 一個 for armv7 的 image 上傳到 docker hub,所以我們就直接使用吧!記得自行更換密碼。
version: '2.4'
services:
db:
image: beercan1989/arm-mysql:5.7.22
container_name: db
volumes:
- ./mysql:/var/lib/mysql
restart: always
ports:
- "4307:3306"
networks:
wp-network:
mem_limit: 384M
logging:
driver: "json-file"
options:
max-size: "1k"
max-file: "3"
environment:
MYSQL_ROOT_PASSWORD: <password>
MYSQL_DATABASE: db
MYSQL_USER: user
MYSQL_PASSWORD: <password>
wp:
depends_on:
- db
image: wordpress:5.5.1-php7.4-apache
container_name: wp
volumes:
- ./wp_html:/var/www/html
ports:
- "9100:80"
networks:
wp-network:
restart: always
mem_limit: 384M
logging:
driver: "json-file"
options:
max-size: "1k"
max-file: "3"
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_PASSWORD: <password>
networks:
wp-network:
driver: bridge
之後就可以用 banana pi 的 ip 加 9100 port 開啟 wordpress 了!
系統基本架設完畢!下一篇分享安裝 nginx 並建立自動續約 free ssl 簽證的 script,以及防火牆等安全性設定。
延伸閱讀:
0元用 Raspberry pi 架設自己的 WordPress 網站 #2 nginx ssl ufw
十分鐘架設自己的 VPN server
封面圖片備註:我知道封面圖片裡的是樹莓派,但是香蕉派找不到好看的照片啊!就先擋著用吧!