Raspberry pi

一般人架設 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 以外其他方法都可以共用)。

0元用 Raspberry pi 架設自己的 WordPress 網站 #1 安裝 Armbian Docker
Banana pi m1

此篇就從系統建立開始分享。

安裝 Armbian 系統

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

Armbian 版本選擇
選擇 Armbian Buster

插入 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
0元用 Raspberry pi 架設自己的 WordPress 網站 #1 安裝 Armbian Docker

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

0元用 Raspberry pi 架設自己的 WordPress 網站 #1 安裝 Armbian Docker

當然要記得到自己的家目錄中建立 .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

封面圖片備註:我知道封面圖片裡的是樹莓派,但是香蕉派找不到好看的照片啊!就先擋著用吧!

Written by J
雖然大學唸的是生物,但持著興趣與熱情自學,畢業後轉戰硬體工程師,與宅宅工程師們一起過著沒日沒夜的生活,做著台灣最薄的 intel 筆電,要與 macbook air 比拼。 離開後,憑著一股傻勁與朋友創業,再度轉戰軟體工程師,一手扛起前後端、雙平台 app 開發,過程中雖跌跌撞撞,卻也累計不少經驗。 可惜不是那 1% 的成功人士,於是加入其他成功人士的新創公司,專職開發後端。沒想到卻在採前人坑的過程中,拓寬了眼界,得到了深層的領悟。