准备工作
撰文时间:2024年1月3日,Halo版本为 2.11.3
服务器:腾讯云2h4g轻量级应用服务器
域名:大陆备案域名*1
CDN:又拍云
面板:宝塔
阅读文档
Halo官方文档地址:
1、Halo建站
本文采取的是MySQL存储,对应下方 docker-compose.yaml
(如果云服务器中有mySQL需要停止服务,否则会占用配置中8.1版本数据库的端口)
version: "3"
services:
halo:
image: halohub/halo:2.11
container_name: halo
restart: on-failure:3
depends_on:
halodb:
condition: service_healthy
networks:
halo_network:
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://halodb:3306/halo
- --spring.r2dbc.username=??????
# MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
- --spring.r2dbc.password=??????
- --spring.sql.init.platform=mysql
# 外部访问地址,请根据实际需要修改
- --halo.external-url=https://??????/
halodb:
image: mysql:8.1.0
container_name: halodb
restart: on-failure:3
networks:
halo_network:
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"
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=??????
- MYSQL_DATABASE=halo
networks:
halo_network:
其中有4个 ??????
作为占位符,需要自行替换。***其中外部访问最好写域名***
启动容器
开放端口
按照配置文件中需要放行的端口为:80,3306,8090
后续https需要放行443,因此需要去服务器防火墙处检查有无开发这些端口
宝塔安装Docker和ngnix
可以把Docker管理器放到首页方便管理,用SSH远程连接服务器查看docker和docker-compose版本
启动容器
此时距离成功就差两步:
1. 新建文件夹halo,放入 docker-compose.yaml
2. 切换到halo目录下,执行 docker-compose up -d
启动容器
3. 下图是已经安装好了,那么执行步骤2就是更新配置中2.11版本最新的容器
可以去宝塔首页查看容器有无启动,有无对外端口
域名和CDN
宝塔面板新建网站
填写好备案的域名即可,这里的域名需要和 docker-compose.yaml
中外部访问的域名一致
需要在服务器添加域名,并配置域名解析(切记服务器需要添加顶级域名)
配置ngnix
1)端口改成实际端口
location / {
proxy_pass http://127.0.0.1:80??/; # 注意改成你实际使用的端口
rewrite ^/(.*)$ /$1 break;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade-Insecure-Requests 1;
proxy_set_header X-Forwarded-Proto https;
}
配置文件默认做了80转443,所以不需要我们额外的配置,以上配置可以参考官网文档。
2)SSL证书
直接使用泛域名证书即可
在网站处可以查看自己证书啥时候过期,但宝塔有计划任务会自动续签。可以自行前往计划任务查看。
访问页面
博客地址:配置文件中的外链:https://域名
后台地址:外链/console
博客首页:主题为Pix(付费)
CDN配置(选)
可选操作,up使用的是又拍云cdn,可以加入又拍云联盟收取代金券
注意:大陆没有备案的域名是无法使用又拍云cdn的
核心步骤:
1)需要将上方服务器配置的域名解析的xxx的A换成CNAME,并且指向又拍云提供的地址
2)源站这里填写的是公网IP
3)开启https的话,这里的证书可以用腾讯云申请的免费一年的证书,这里开启强制HTTPS访问之后,上述ngnix配置SSL证书就不要强制访问了
4)缓存控制
中要设置参数跟随,否则会导致站点图片出不来
5)win+r输出cmd,然后ping xxx.xxx.xxx如果显示的是你的公网IP,那就说明cdn没有奏效
主题推荐
Pix(付费)
hao(免费)
注意事项
1. 防火墙开放所需要的端口
2. 申请的SSL证书用于cdn
3. 泛域名证书腾讯云宝塔面板可以自动续,其他云服务厂商没测试过