最近沉迷于Nas, 我用闲置的笔记本安装上黑群晖7.21版本,简直打开新世界。
群晖 相对于Linux的其他系统,群晖其丝滑的可视化交互界面,及其较为完善的软件插件生态,简直是小白服务器开发学习的福音。我平时在群晖上学习及测试服务器相关项目,不要太爽,哈哈!
预想在一系列文章中记录分享搭建群晖,及使用群晖搭建项目的简单教程。
Halo 是一款现代化的个人独立博客系统,
官网地址:Halo
1.x版本有着许多好看的博客模板,及博客后台管理界面,而且升级到2.x版本后,加入了插件及多用户的功能,支持搭建除博客外的其他网页系统。
其上手搭建相对简单,对于小白或者非前端开发者搭建博客来说,及其友好!
在尝试搭建Halo博客时,查阅许多资料,也遇到一些问题,本文分享搭建过程及细节。
群晖中搭建halo 有两途径方法
Container Manager(原Docker) 搭建
直接在Docker 的注册表中搜索halo,下载,运行就好了,简单但仅支持halo1.x版本的搭建。
docker-compose 使用.yaml文件搭建
使用compose.yaml文件,写好配置,ssh终端或者新建项目的方式搭建。
也挺方便的,而且支持halo2.x版本搭建,能够简单实现替换mysql数据库系统为默认系统。
我在本文记录第二种方式搭建!
官方搭建教程
version: "3"
services:
halo:
image: halohub/halo:2.11
container_name: halo-blog #容器名 , 可自定义
restart: on-failure:3
depends_on:
halodb:
condition: service_healthy
networks:
halo_default:
volumes:
- ./halo2:/root/.halo2 #容器地址映射
ports:
- "8090:8090"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
interval: 30s
timeout: 5s
retries: 5
start_period: 30s
command:
- --spring.r2dbc.url=r2dbc:pool:mysql://halo-mysql:3306/halo #对应mysql 容器名及访问端口
- --spring.r2dbc.username=root
# MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
- --spring.r2dbc.password=123456
- --spring.sql.init.platform=mysql
# 外部访问地址,请根据实际需要修改
- --halo.external-url=http://localhost:8090/
halodb:
image: mysql:8.1.0
container_name: halo-mysql
restart: on-failure:3
networks:
halo_default:
command:
- --default-authentication-plugin=caching_sha2_password
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_general_ci
- --explicit_defaults_for_timestamp=true
volumes:
- ./mysql:/var/lib/mysql
- ./mysqlBackup:/data/mysqlBackup
ports:
- "3306:3306" #mysql 端口映射,可自定义。比如改为"3307:3306" ,则使用3307端口访问连接mysql
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
interval: 3s
retries: 5
start_period: 30s
environment:
# 请修改此密码,并对应修改上方 Halo 服务的 SPRING_R2DBC_PASSWORD 变量值
- MYSQL_ROOT_PASSWORD=123456
- MYSQL_DATABASE=halo
networks:
halo_default:
如果提示启动失败,也不要慌
在容器中找到启动失败的halo或者mysql 容器,查看其日志
可以看到失败的原因,针对性解决就好!
其实就是把 上述compose.yaml文件拆分开,分成两个项目搭建。步骤是一样的。【先部署mysql,再部署halo】
version: "3"
services:
mysql:
image: mysql:8.1.0
container_name: mysql-test #容器名称,自定义更改
restart: on-failure:3
networks:
mysql_default:
command:
- --default-authentication-plugin=caching_sha2_password
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_general_ci
- --explicit_defaults_for_timestamp=true
volumes:
- ./mysql:/var/lib/mysql
- ./mysqlBackup:/data/mysqlBackup
ports:
- "3306:3306" #端口,自定义更改,比如3307:3306. 后期就可以在sql工具中使用3307端口访问了
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
interval: 3s
retries: 5
start_period: 30s
environment:
# 请修改此密码,对应root 用户的登录密码
- MYSQL_ROOT_PASSWORD=123456 #自定义,建议更改,登录需要用到
- MYSQL_DATABASE=main #建的数据库名,自定义更改
networks:
mysql_default:
halo的compose.yaml内容:
version: "3"
services:
halo:
image: halohub/halo:2.11
container_name: halo-blog
restart: on-failure:3
networks:
halo_default:
volumes:
- ./halo2.x:/root/.halo2
ports:
- "8090:8090"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
interval: 30s
timeout: 5s
retries: 5
start_period: 30s
command:
- --spring.r2dbc.url=r2dbc:pool:mysql://192.168.1.26:3306/halo #注意更改为mysql的访问ip:端口,我这给的是192.168.1.26:3306示例
- --spring.r2dbc.username=root
# MySQL 的密码,需要与mysql 配置的 MYSQL_ROOT_PASSWORD 的密码值一致。
- --spring.r2dbc.password=123456
- --spring.sql.init.platform=mysql
# 外部访问地址,请根据实际需要修改
- --halo.external-url=http://localhost:8090/
networks:
halo_default:
参考这个文章的问题及解决办法:mqsql搭建步骤
需要具体问题具体分析
查看容器日志,然后对应找到解决办法解决
无非就是:端口被占用了、文件存在旧文件需要先删除、halo访问mysql失败(ip地址/端口是否正确!)等小问题!!!
群晖DSM7.2用Container Manager(原Docker) 安装halo Blog详细过程
用Halo在自己服务器搭建一个个人博客
使用 Docker Compose 部署Halo
完结!!!