树莓派上搭建个人博客

hello

在树莓派上搭建个人博客的想法有好久了,由于本人属于拖延症晚期患者,所以到今天才算彻底弄好。
参加工作后一直在和Docker打交道,深受云的影响,所以打算在Docker上跑博客,也打算过用大学学的JaveWeb写博客,可没时间,所以就直接用wordpress生成吧。

搭建博客环境

由于树莓派是arm的,而Docker hub上基本全是普通镜像,树莓派上用不了,所以起初pull下来镜像后起容器报错,当时还以为是树莓派不支持Docker,看Docker官网后知道后期版本已经支持arm了,还好在Github上找到一个歪果仁自己做了一套arm的docker images,在此非常感谢这位歪果仁,github链接是:

https://github.com/luvres/armhf

git clone下来项目后,进入项目路径内,构建images,博客的环境为mariadb+php+lighttpd。

构建mariadb镜像:

1
docker build -t izone/arm:mariadb ./mariadb/

构建lighttpd镜像:

1
docker build -t izone/arm:lighttpd ./lighttpd/

这里需要注意一点,由于lighttpd起服务后,浏览器进树莓派的ip默认是进lighttpd的文件系统,所以要修改lighttpd的配置文件,这样浏览器进localhost直接就是wordpress了,修改配置为:

1
server.document-root = “/var/www/wordpress/”

构建php镜像:

1
docker build -t izone/arm:php7 ./php7/

这位歪果仁把lighttpd写进php镜像里了,但构建php是在lighttpd的基础上构建的,所以还是要先构建lighttpd镜像。
三个镜像构建完成后,就可以启动服务了:

启动mariadb容器:

1
2
docker run –name mariadb -h mariadb -p 3306:3306 -v /etc/localtime:/etc/localtime:ro -v /home/pi/project/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=xxxxxxx –restart always -d izone/arm:mariadb
记住-h,因为php容器要link mariadb,设置两个数据卷,一个系统时间,一个数据库文件备份,-e MYSQL_ROOT_PASSWORD设置数据库密码,–restart always设置容器开机自启。

启动php+lighttpd容器:

1
2
docker run –name php -h php –link mariadb -p 80:80 -v /etc/localtime:/etc/localtime:ro -v /home/xx/xxxx/web:/var/www –restart always -d izone/arm:php7
–link链接数据库容器,设置备份博客文件的数据卷,同时设置开机自启。

进mariadb容器,创建数据库:

1
2
3
docker exec -it mariadb /bin/bash
mysql -h localhost -uroot -p(之前设置的数据库密码)
create database myblog;

安装wordpress

容器都起来后,去wordpress官网下载其文件,然后解压移动到前面lighttpd容器设置的数据卷里,这时候浏览器访问localhost:80,便会进入wordpress的配置界面:

1
2
3
4
5
数据库名:填写之前创建的数据库名
用户名:root
密码:数据库的密码
数据库主机:填写创建mariadb时设置的主机名(-h后面的参数)
表前缀:可以自定义表的前缀,默认的wp-也行

点击提交后wordpress会提示需要在wordpress的文件中新建wp-config.php。之后便会提示设置站点标题,用户名,密码,电子邮箱等,照做就好,但要记住用户名和密码,后面进博客后台设置博客主题,写文章等要登录。
此时,浏览器访问树莓派的ip:80便进入博客了。搭建主题,设置导航栏,写页面等,请看关于wordpress的教程。

通过花生壳,内网解析,把博客弄到公网上去

去花生壳官网下载花生壳的树莓派版,按照花生壳教程安装后,记住给你的SN码和默认密码admin,登录http://b.oray.com,填写SN和默认密码,第一次登录会提示修改设置密码,然后系统赠送一个二级域名,也能免费购买一个二级域名,然后点击内网穿透,添加映射,进入设置:

1
2
3
4
5
选择外网80模式
选择域名:从你的域名列表里选择一个
应用名称:随便起
内网主机:填写树莓派的ip
内网端口:lighttpd开启的是80端口

此时浏览器访问你的域名便可以访问你的博客了。
由于是免费的(哦,不对,花生壳实名认证还花了六元),所以域名很low,很是麻烦,后面会买一个一级域名,映射到这个二级域名上的。

搭建过程中遇到的问题:

1.之前搭建博客,树莓派用的公司的内网ip,但回家后,用家里的内网ip,发现博客进去后css和图片都加载不出来,文章页面也进不去,后来才发现,wordpress是个大坑货,它把所有的路径都写死进了数据库里。。。
进mariadb数据库后执行sql语句就会发现:

1
2
3
4
5
6
7
8
MariaDB [myblog]> use myblog;
MariaDB [myblog]> select option_value from poison_options where option_name=’siteurl’;
+——————+
| option_value |
+——————+
| http://10.0.0.19 |
+——————+
1 row in set (0.00 sec)

而且不止siteurl这一个字段,home字段也写死了,也不止poison_options这一张表,poison_posts表也同样,估计还有别的表,目前还没发现,所以强烈建议在确定好网络环境后再搭建,不过后面用域名解析时也会遇到同样的问题。。。当你遇到这个问题时可以执行sql语句分别修改写死的url:

1
2
update poison_options set option_value=’http://192.168.0.110′ where option_name=’siteurl’;
update poison_options set option_value=’http://192.168.0.110′ where option_name=’home’;

2.树莓派好像不支持docker-compose,尝试了许多安装docker-compose的方法,都不成功,应该是docker-compose还未添加对arm的支持。

文章目录
  1. 1. 搭建博客环境
    1. 1.1. 构建mariadb镜像:
    2. 1.2. 构建lighttpd镜像:
    3. 1.3. 构建php镜像:
    4. 1.4. 启动mariadb容器:
    5. 1.5. 启动php+lighttpd容器:
    6. 1.6. 进mariadb容器,创建数据库:
  2. 2. 安装wordpress
  3. 3. 通过花生壳,内网解析,把博客弄到公网上去
  4. 4. 搭建过程中遇到的问题:
,