51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

树莓派通过Docker安装mysql、Typecho创建个人站点

前言

  • 原本就计划站点本地容器化,不直接在本搭建配置环境,一方面不是很熟悉环境搭建,本地环境安装的东西较多,容易起冲突,另外宝塔面板对arm架构支持的也不是很理想。所以Docker容器算是一种很理想状态。近期有时间折腾,就有了以下的文章。
  • 以下实现过程使用机型为树莓派4B,理论上可以适配其他arm架构的小主机开发板,系统采用基于Debian11的raspberry os。

Typecho

Typecho.png

  • 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安装主界面了。
    Typecho站点首页.png
  • 选择下一步,配置站点数据库以及其他配置。

Typecho站点配置.png

  • 其实本步骤是一个选择点,不想折腾数据库的话,可以使用那个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地址,端口,账号,密码,数据库名
  • 如无报错,会进入后台。
  • 以下截图对站点主题进行了调整。
    Typecho站点主页.png

内网穿透

  • 原本写到此步,文章就应该结束了。但是建好不发出去,属实有点说不过去。

  • 内网穿透使用的工具是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的小主机也是没有问题的,处理器架构相同,实际我没有测试,毕竟低功耗的设备能不能带动以上的容器还得尝试。
  • 有需求本地化的博友,可以尝试搭建!毕竟现在云服务器,还是挺贵的,将来想养老的话,大家可以合租一台服务器,做中转机,数据保存在本地。
赞(0)
未经允许不得转载:工具盒子 » 树莓派通过Docker安装mysql、Typecho创建个人站点