前言
- 原本就计划站点本地容器化,不直接在本搭建配置环境,一方面不是很熟悉环境搭建,本地环境安装的东西较多,容易起冲突,另外宝塔面板对arm架构支持的也不是很理想。所以Docker容器算是一种很理想状态。近期有时间折腾,就有了以下的文章。
- 以下实现过程使用机型为树莓派4B,理论上可以适配其他arm架构的小主机开发板,系统采用基于Debian11的raspberry os。
Typecho
- Typecho是一款轻量的个人站点程序,相信能看到这篇文章的朋友对WordPress,Typecho等等站点程序都有所了解,这里就不过多介绍了。本站就是采用Typecho搭建!
- 本地搭建采用
80x86/typecho
的镜像,这个镜像也是Docker hub中使用较多的,内置了部分主题以及插件。 - 调整下方参数后,就可以直接在命令行执行。
docker run -d --name=typecho --restart always --mount type=tmpfs,destination=/tmp -v /home/typecho:/data -e PHP_TZ=Asia/Shanghai -e PHP_MAX_EXECUTION_TIME=600 -p 180:80 -p 1443:443 80x86/typecho:latest
- 注意需要创建一个文件夹,用于存放一些文件,
/home/typecho:/data
,创建完,替换掉命令中的/home/typecho
-p 180:80 -p 1443:443
,映射的端口,根据实际的端口调整。- 执行以上命令,如无报错,就可以通过IP:180,访问到Typecho安装主界面了。
- 选择下一步,配置站点数据库以及其他配置。
- 其实本步骤是一个选择点,不想折腾数据库的话,可以使用那个SQL轻量数据库,本地直接保存,默认生成的有一个路径以及文件,好好保存即可。
- 如果想安装Mysql数据的话,那就继续跟着文章往下看。
Mysql 8.0
- 我为什么安装Mysql,因为之前很多站点程序都是使用的Mysql,所以本地尽量与云上保持一致。之前站点创建的比较早,Mysql5.7的Docker镜像不支持arm架构,但是根据近期查询,还是有一些支持的,但是会有错误。所以,就挑一个合适的稍微新一点的镜像!
- 经过多天测试,历经了连接不上,各种报错,有了下方的命令参数:
docker run -itd --name mysql8.0 -p 3306:3306 -v /mysql/conf:/etc/mysql/conf.d -v /mysql/logs:/logs -v /mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=1999001 mysql:8.0 --lower_case_table_names=1 --max_connections=2000;
- 参数解读:
-e MYSQL_ROOT_PASSWORD=1999001
配置信息,配置Mysql的Root用户的登陆密码.-p 3306:3306
此处映射主机3306端口 到 容器的3306端口.- lower_case_table_names=1:忽略大小写;
- max_connections:最大连接数量;
- 以下三项配置Mysql本地存储的目录:前方的路径可以自定义
- /mysql/conf:/etc/mysql/conf.d
- /mysql/logs:/logs
- /mysql/data:/var/lib/mysql
执行以上命令,如无报错,数据库就安装成功了。
- 返回Typecho的安装配置界面,配置数据库地址,账号,密码,表名,其它参数,点击下一步,无法连接数据库。
- 有数据库查询软件的可以直接连接尝试,会报错。查询解决方案,各种尝试无果,问题是需要开启远程连接,方法有很多,但是受限于版本等等,各种报错。折腾几日,终于找到解决方法。
- 进入容器:
docker exec -it mysql8.0 bash
- 进入mysql:
mysql -uroot -p
- 对远程连接进行授权:
GRANT ALL ON *.* TO 'root'@'%';
- 更改密码的加密规则:
ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
- 更改root的密码:
123456
根据实际调整 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
- 刷新权限:
flush privileges;
- 操作完毕,可以通过数据库软件测试连接。
- 如果还是提示无法连接,可以尝试在数据库创建对应的数据库名
- 填写对应配置到Typecho的安装程序,也就是数据库的IP地址,端口,账号,密码,数据库名
- 如无报错,会进入后台。
- 以下截图对站点主题进行了调整。
内网穿透
-
原本写到此步,文章就应该结束了。但是建好不发出去,属实有点说不过去。
-
内网穿透使用的工具是FRP,该步骤依旧使用Docker,需要一台部署于公网服务器。
-
关于FRP部署可以参考树莓派通过Docker搭建Frp内网穿透服务,需要注意的是,FRP本地文件格式有所调整
frps.ini,frpc.ini
,已经更改成了frps.toml,frpc.toml
。 -
停止FRP容器,在FRP本地配置文件添加参数,开启容器。
[web] type = tcp local_ip = 127.0.0.1 local_port = 180 remote_port = 180
-
通过frp服务端后台查看客户端上线情况,正常会有web的接入。
-
如需域名访问,可以通过反向代理来实现,详细操作,我上面的文章中有介绍。
-
使用以上服务搭建的小站 Hello World,站点在美西。
结语
- 去年年中的想法,经过半年有时间没时间的折腾,也算是写完了,之前在本地也搭建了兰空图床,基本上集齐了个人博客搭建的所有要素,原则上基于Armbian的小主机也是没有问题的,处理器架构相同,实际我没有测试,毕竟低功耗的设备能不能带动以上的容器还得尝试。
- 有需求本地化的博友,可以尝试搭建!毕竟现在云服务器,还是挺贵的,将来想养老的话,大家可以合租一台服务器,做中转机,数据保存在本地。