用閑置的RK3399主板做blog

1 確認(rèn)主板和燒錄鏡像

NanoPi NEO4是基于RK3399 SoC設(shè)計(jì)的一款超小型嵌入式ARM計(jì)算機(jī),它的尺寸只有60x45mm,內(nèi)存容量為1GB,并使用TF卡啟動(dòng)運(yùn)行系統(tǒng),支持運(yùn)行Ubuntu Desktop 18.04 (64-bit), Lubuntu 16.04(32-bit), Ubuntu Core 18.04(64-bit)等多種系統(tǒng)。以下為主要硬件特性:

  • 主控芯片: Rockchip RK3399
    CPU: big.LITTLE大小核架構(gòu),雙Cortex-A72大核(up to 2.0GHz)+四Cortex-A53小核結(jié)構(gòu)(up to 1.5GHz)
    GPU: Mali-T864 GPU,支持OpenGL ES1.1/2.0/3.0/3.1, OpenCL, DX11, 支持AFBC(幀緩沖壓縮)
  • 內(nèi)存: 單通道1GB DDR3-1866

燒錄鏡像需要準(zhǔn)備一張TF卡,建議使用A2U3規(guī)格的TF卡,U3全稱為UHS Speed Class 3,代表著最低寫入速度超過30MB/s。A2則是針對(duì)手機(jī)存儲(chǔ)卡制定的標(biāo)準(zhǔn),即APP Performance A1( A1)和APP Performance A2 (A2)。其中A1標(biāo)準(zhǔn)的隨機(jī)讀寫性能要求分別是1500 IOPS和500 IOPS以上,而A2標(biāo)準(zhǔn)則大幅度提高到了4000 IOPS和2000 IOPS。

通過以下鏈接下載鏡像:https://download.friendlyarm.com/NanoPiNEO4

rk3399-sd-buildroot-linux-4.4-arm64-YYYYMMDD.img.zip Buildroot 固件,基于Rockchip Linux SDK,帶Qt5-wayland圖形界面
rk3399-sd-friendlydesktop-bionic-4.4-arm64-YYYYMMDD.img.zip FriendlyDesktop 桌面版固件,基于Ubuntu 18.04 64位,帶LXDE圖形桌面
rk3399-sd-friendlycore-bionic-4.4-arm64-YYYYMMDD.img.zip FriendlyCore 系統(tǒng)固件 (內(nèi)置Qt 5.10.0),基于Ubuntu core
rk3399-sd-lubuntu-desktop-xenial-4.4-armhf-YYYYMMDD.img.zip Lubuntu桌面版固件,自帶X Window圖形界面

將固件和燒寫工具分別解壓,在Windows下插入裝入TF卡的讀卡器,以管理員身份運(yùn)行 win32diskimager 工具, 在win32diskimager工具的界面上, 選擇對(duì)就TF卡的盤符,選擇目標(biāo)系統(tǒng)固件,比如適合本次裝blog的rk3399-sd-friendlycore-bionic-4.4-arm64鏡像,點(diǎn)擊 Write 按鈕燒寫即可。
當(dāng)制作完成 TF 卡后,拔出 TF 卡插入卡槽,上電啟動(dòng)即可。

另外需要知道官方的用戶帳戶與密碼用于SSH登陸和配置。
普通用戶:

   用戶名: pi
   密碼: pi

root用戶:

   用戶名: root
   密碼: fa

安裝docker

下載相關(guān)安裝包

docker下載網(wǎng)站下載docker安裝包:

wget https://download.docker.com/linux/debian/dists/stretch/pool/stable/arm64/containerd.io_1.2.6-3_arm64.deb
wget https://download.docker.com/linux/debian/dists/stretch/pool/stable/arm64/docker-ce-cli_19.03.2~3-0~debian-stretch_arm64.deb
wget https://download.docker.com/linux/debian/dists/stretch/pool/stable/arm64/docker-ce_19.03.2~3-0~debian-stretch_arm64.deb

安裝 docker:

dpkg -i containerd.io_1.2.6-3_arm64.deb
dpkg -i docker-ce-cli_19.03.2~3-0~debian-stretch_arm64.deb
dpkg -i docker-ce_19.03.2~3-0~debian-stretch_arm64.deb

測(cè)試 docker:

輸入指令,出現(xiàn)下圖表示 docker 安裝成功:

docker run hello-world

2 安裝相關(guān)鏡像

wordpress

WordPress是使用PHP語(yǔ)言開發(fā)的內(nèi)容管理系統(tǒng)

  • 內(nèi)容管理系統(tǒng),英文叫做 Content Management System(CMS)。
  • WordPress是全球最多人使用的,免費(fèi)開源的建站程序。
    通過docker只需要一條指令即可安裝wordpress:
sudo docker pull wordpress

mysql

MySQL 官方不支持Docker在arm上的鏡像,可通過編寫dockerfile,再運(yùn)行docker build -t debian-mysql-server-5.7 .來自行創(chuàng)建:

# Build image cmd: docker build -t debian-mysql-server-5.7 .

FROM debian:sid-slim

# add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added
RUN groupadd -r mysql && useradd -r -g mysql mysql \
  \
  && echo "***** Init bash..." \
  && printf "\nalias ll='ls -l'\nalias l='ls -lA'\n" >> /root/.bashrc \
  # Map Ctrl-Up and Ctrl-Down to history based bash completion
  && printf '"\\e[1;5A": history-search-backward\n"\\e[1;5B": history-search-forward\n"\\e[1;5C": forward-word\n"\\e[1;5D": backward-word' > /etc/inputrc \
  \
  && echo "***** Install packages..." \
  && apt-get update \
  # Install apt-get allowing subsequent package configuration
  && DEBIAN_FRONTEND=noninteractive apt-get install -y apt-utils \
  # Install minimal admin utils
  && DEBIAN_FRONTEND=noninteractive apt-get install -y less nano procps \
  # Install MySQL server
  && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends libpwquality-tools mysql-server-5.7 \
  # Clean cache
  && rm -rf /var/lib/apt/lists/* \
  \
  && echo "***** Config mysql..." \
  && rm -rf /var/lib/mysql && mkdir -p /var/lib/mysql /var/run/mysqld \
  && touch /var/log/mysqld.log \
  && chown -R mysql:mysql /var/lib/mysql /var/run/mysqld /var/log/mysqld.log \
  # Ensure that /var/run/mysqld (used for socket and lock files) is writable regardless of the UID our mysqld instance ends up having at runtime
  && chmod 777 /var/run/mysqld \
  && chmod 775 /var/log \
  # Disable Debian MySQL config since it overwrites config from volume
  && mv /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/mysql.conf.d/mysqld.cnf.disabled \
  && mv /etc/mysql/conf.d/mysqldump.cnf /etc/mysql/conf.d/mysqldump.cnf.disabled \
  && mv /etc/mysql/conf.d/mysql.cnf /etc/mysql/conf.d/mysql.cnf.disabled \
  # Create placeholder for custom my.cnf
  && touch /etc/mysql/conf.d/my.cnf \
  # Set docker settings, these settings always win
  && printf '[client]\nsocket=/var/lib/mysql/mysql.sock\n\n[server]\nsocket=/var/lib/mysql/mysql.sock\ndatadir=/var/lib/mysql\nsecure-file-priv=/var/lib/mysql-files\nuser=mysql\nskip-host-cache\nskip-name-resolve\n' > /etc/mysql/mysql.conf.d/docker.cnf \
  \
  && mkdir /docker-entrypoint-initdb.d \
  && echo "***** RUN commands finished"

VOLUME /var/lib/mysql

COPY docker-entrypoint.sh /entrypoint.sh
COPY healthcheck.sh /healthcheck.sh
ENTRYPOINT ["/entrypoint.sh"]
HEALTHCHECK CMD /healthcheck.sh
EXPOSE 3306 33060
CMD ["mysqld"]

也可拉取別人創(chuàng)建好的鏡像:

sudo docker pull ibex/debian-mysql-server-5.7

3 安裝docker-compose

docker-compose是一個(gè)用來定義和運(yùn)行復(fù)雜應(yīng)用的Docker工具。一個(gè)使用Docker容器的應(yīng)用,通常由多個(gè)容器組成。使用docker-compose腳本可啟動(dòng)、停止和重啟應(yīng)用及應(yīng)用中的服務(wù)與所有依賴服務(wù)的容器,非常適合組合使用多個(gè)容器進(jìn)行開發(fā)的場(chǎng)景。

我們可以從 Github 上下載它的二進(jìn)制包來使用,最新發(fā)行的版本地址:https://github.com/docker/compose/releases。
運(yùn)行以下命令下載 Docker Compose 的當(dāng)前穩(wěn)定版本:

sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# docker-compose-Linux-x86_64
# 或者
wget https://github.com/docker/compose/releases/download/v2.2.1/docker-compose-linux-aarch64 -O /usr/local/bin/docker-compose

將可執(zhí)行權(quán)限應(yīng)用于二進(jìn)制文件:

sudo chmod +x /usr/local/bin/docker-compose

創(chuàng)建軟鏈接:

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

測(cè)試是否安裝成功:

docker-compose --version
Docker Compose version v2.2.2

創(chuàng)建 docker-compose.yml

創(chuàng)建工作目錄:

mkdir -p mysql
mkdir -p html

在當(dāng)前目錄下:

vim docker-compose.yml
version: '2'           #compose文件版本
services:
   db:                   # 服務(wù)1:db
     image: ibex/debian-mysql-server-5.7    # 使用鏡像 mysql:5.7版本
     ports:
       - "8306:3306"          #端口映射8306:3306
     volumes:
       - ./mysql:/var/lib/mysql   # 數(shù)據(jù)持久化
     restart: always     # 容器服務(wù)宕機(jī)后總是重啟
     environment:        # 環(huán)境配置
       MYSQL_ROOT_PASSWORD: 123456
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: 123456

   wordpress:          # 服務(wù)2:wordpress
     depends_on:       # wordpress服務(wù)啟動(dòng)時(shí)依賴db服務(wù),所以會(huì)自動(dòng)先啟動(dòng)db服務(wù)
       - db
     image: wordpress:latest    # 使用鏡像 wordpress:latest最新版
     ports:
       - "8080:80"              #端口映射8000:80
     restart: always
     environment:        # 環(huán)境
       WORDPRESS_DB_HOST: 內(nèi)網(wǎng)IP:8306     # wordpress連接內(nèi)網(wǎng)IP的8306端口,需注意是內(nèi)網(wǎng)IP
       WORDPRESS_DB_USER: wordpress    # wordpress的數(shù)據(jù)庫(kù)用戶為wordpress
       WORDPRESS_DB_PASSWORD: 123456   # wordpress的數(shù)據(jù)庫(kù)密碼是wordpress
       WORDPRESS_DB_NAME: wordpress    # wordpress的數(shù)據(jù)庫(kù)名字是wordpress
     volumes:
       - ./html:/var/www/html

3 使用 Compose 命令運(yùn)行應(yīng)用

在后臺(tái)執(zhí)行服務(wù):

sudo docker-compose up -d
pi@NanoPi-NEO4:~/data$ sudo docker-compose up -d
[+] Running 3/3
 ? Network data_default        Created                                                                                0.7s
 ? Container data-db-1         Started                                                                                4.8s
 ? Container data-wordpress-1  Started                                                                                9.6s

pi@NanoPi-NEO4:~/data$ sudo docker ps -a
CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS        PORTS                               NAMES
c43de6f49bd1        wordpress:latest               "docker-entrypoint.s…"   25 seconds ago      Up 16 seconds        0.0.0.0:9000->80/tcp                data-wordpress-1
42e9d6db7ae9        ibex/debian-mysql-server-5.7   "/entrypoint.sh mysq…"   27 seconds ago      Up 22 seconds (health: starting)   33060/tcp, 0.0.0.0:8306->3306/tcp   data-db-1

4 配置wordpress

根據(jù)之前的文件,wordpress的訪問端口是8080,因此http://IP:8080即可訪問站點(diǎn)文章,http://IP:8080/wp-admin/可用于進(jìn)入設(shè)置頁(yè)面。
第一次運(yùn)行,會(huì)需要用戶選擇語(yǔ)言和設(shè)置站點(diǎn):

設(shè)置完之后就可以進(jìn)入站點(diǎn)頁(yè)面了:


可以自行選擇喜歡的主題,網(wǎng)絡(luò)上也有許多主題的介紹。
推薦至少安裝以下兩個(gè)插件:

其中disable-google-fonts用于禁止加載google字體,造成網(wǎng)站打開緩慢,WP Editor.md則用于通過markdown語(yǔ)法進(jìn)行創(chuàng)作。

5 網(wǎng)站測(cè)試

通過htop可以查看到RK3399主機(jī)在測(cè)速模式下的運(yùn)行狀態(tài):

通過一些站點(diǎn)測(cè)試工具可以測(cè)試到網(wǎng)站的訪問情況:


至此,可以擁有自己的blog了,可用來給學(xué)生或者同事發(fā)布一些內(nèi)部的技術(shù)及產(chǎn)品信息,通過留言互動(dòng)的方式,交流看法。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容