用闲置的RK3399主板做blog

1 确认主板和烧录镜像

NanoPi NEO4是基于RK3399 SoC设计的一款超小型嵌入式ARM计算机,它的尺寸只有60x45mm,内存容量为1GB,并使用TF卡启动运行系统,支持运行Ubuntu Desktop 18.04 (64-bit), Lubuntu 16.04(32-bit), Ubuntu Core 18.04(64-bit)等多种系统。以下为主要硬件特性:

  • 主控芯片: Rockchip RK3399
    CPU: big.LITTLE大小核架构,双Cortex-A72大核(up to 2.0GHz)+四Cortex-A53小核结构(up to 1.5GHz)
    GPU: Mali-T864 GPU,支持OpenGL ES1.1/2.0/3.0/3.1, OpenCL, DX11, 支持AFBC(帧缓冲压缩)
  • 内存: 单通道1GB DDR3-1866

烧录镜像需要准备一张TF卡,建议使用A2U3规格的TF卡,U3全称为UHS Speed Class 3,代表着最低写入速度超过30MB/s。A2则是针对手机存储卡制定的标准,即APP Performance A1( A1)和APP Performance A2 (A2)。其中A1标准的随机读写性能要求分别是1500 IOPS和500 IOPS以上,而A2标准则大幅度提高到了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 系统固件 (内置Qt 5.10.0),基于Ubuntu core
rk3399-sd-lubuntu-desktop-xenial-4.4-armhf-YYYYMMDD.img.zip Lubuntu桌面版固件,自带X Window图形界面

将固件和烧写工具分别解压,在Windows下插入装入TF卡的读卡器,以管理员身份运行 win32diskimager 工具, 在win32diskimager工具的界面上, 选择对就TF卡的盘符,选择目标系统固件,比如适合本次装blog的rk3399-sd-friendlycore-bionic-4.4-arm64镜像,点击 Write 按钮烧写即可。
当制作完成 TF 卡后,拔出 TF 卡插入卡槽,上电启动即可。

另外需要知道官方的用户帐户与密码用于SSH登陆和配置。
普通用户:

   用户名: pi
   密码: pi

root用户:

   用户名: root
   密码: fa

安装docker

下载相关安装包

docker下载网站下载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

测试 docker:

输入指令,出现下图表示 docker 安装成功:

docker run hello-world

2 安装相关镜像

wordpress

WordPress是使用PHP语言开发的内容管理系统

  • 内容管理系统,英文叫做 Content Management System(CMS)。
  • WordPress是全球最多人使用的,免费开源的建站程序。
    通过docker只需要一条指令即可安装wordpress:
sudo docker pull wordpress

mysql

MySQL 官方不支持Docker在arm上的镜像,可通过编写dockerfile,再运行docker build -t debian-mysql-server-5.7 .来自行创建:

# 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"]

也可拉取别人创建好的镜像:

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

3 安装docker-compose

docker-compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,通常由多个容器组成。使用docker-compose脚本可启动、停止和重启应用及应用中的服务与所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。

我们可以从 Github 上下载它的二进制包来使用,最新发行的版本地址:https://github.com/docker/compose/releases
运行以下命令下载 Docker Compose 的当前稳定版本:

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

将可执行权限应用于二进制文件:

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

创建软链接:

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

测试是否安装成功:

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

创建 docker-compose.yml

创建工作目录:

mkdir -p mysql
mkdir -p html

在当前目录下:

vim docker-compose.yml
version: '2'           #compose文件版本
services:
   db:                   # 服务1:db
     image: ibex/debian-mysql-server-5.7    # 使用镜像 mysql:5.7版本
     ports:
       - "8306:3306"          #端口映射8306:3306
     volumes:
       - ./mysql:/var/lib/mysql   # 数据持久化
     restart: always     # 容器服务宕机后总是重启
     environment:        # 环境配置
       MYSQL_ROOT_PASSWORD: 123456
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: 123456

   wordpress:          # 服务2:wordpress
     depends_on:       # wordpress服务启动时依赖db服务,所以会自动先启动db服务
       - db
     image: wordpress:latest    # 使用镜像 wordpress:latest最新版
     ports:
       - "8080:80"              #端口映射8000:80
     restart: always
     environment:        # 环境
       WORDPRESS_DB_HOST: 内网IP:8306     # wordpress连接内网IP的8306端口,需注意是内网IP
       WORDPRESS_DB_USER: wordpress    # wordpress的数据库用户为wordpress
       WORDPRESS_DB_PASSWORD: 123456   # wordpress的数据库密码是wordpress
       WORDPRESS_DB_NAME: wordpress    # wordpress的数据库名字是wordpress
     volumes:
       - ./html:/var/www/html

3 使用 Compose 命令运行应用

在后台执行服务:

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

根据之前的文件,wordpress的访问端口是8080,因此http://IP:8080即可访问站点文章,http://IP:8080/wp-admin/可用于进入设置页面。
第一次运行,会需要用户选择语言和设置站点:

设置完之后就可以进入站点页面了:


可以自行选择喜欢的主题,网络上也有许多主题的介绍。
推荐至少安装以下两个插件:

其中disable-google-fonts用于禁止加载google字体,造成网站打开缓慢,WP Editor.md则用于通过markdown语法进行创作。

5 网站测试

通过htop可以查看到RK3399主机在测速模式下的运行状态:

通过一些站点测试工具可以测试到网站的访问情况:


至此,可以拥有自己的blog了,可用来给学生或者同事发布一些内部的技术及产品信息,通过留言互动的方式,交流看法。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,137评论 6 511
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,824评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,465评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,131评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,140评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,895评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,535评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,435评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,952评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,081评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,210评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,896评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,552评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,089评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,198评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,531评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,209评论 2 357

推荐阅读更多精彩内容