1.前期准备
阿里云服务器
域名(非必须)
开放需要的端口(比如8090,8080,3306,80等等)
docker和docker-compose
2.步骤
2.1安装docker和docker-compose
这个很简单了,无脑安装即可,网上大把(忘记怎么安了)
安装完检查下是否安装成功
docker --version
docker-compose --version
2.2编排Halo
创建docker-compose.yml文件,准备需要用到的,Halo、mysql、nginx进行编排(这里已经宝塔安装好了mysql、nginx)如果需外部数据库自行准备,需改docker-compose.yml配置
在docker-compose.yml同目录下运行启动
docker-compose up -d
测试是否成功,输入自己ip地址或者域名加上对应端口进行访问,出现一下页面表示成功
配置站点基础信息
docker-compose.yml配置,可以参考(宝塔版,已准备好mysql+nginx)
version: "3"
services:
halo:
image: registry.fit2cloud.com/halo/halo:2.20
restart: on-failure:3
network_mode: "host"
volumes:
- ./halo2:/root/.halo2
environment:
# JVM 参数,默认为 -Xmx256m -Xms256m,可以根据实际情况做调整,置空表示不添加 JVM 参数
- JVM_OPTS=-Xmx256m -Xms256m
command:
# 修改为自己已有的 MySQL 配置
- --spring.r2dbc.url=r2dbc:pool:mysql://localhost/halo
- --spring.r2dbc.username=halo
- --spring.r2dbc.password=halo
- --spring.sql.init.platform=mysql
# 外部访问地址,请根据实际需要修改
- --halo.external-url=你的ip或者域名
# 端口号 默认8090
- --server.port=8090
- --server.address=0.0.0.0
docker-compose.yml配置,(halo+mysql+nginx)
version: "3"
services:
mysql:
image: mysql:8.0
restart: always
environment:
MYSQL_ROOT_PASSWORD: your_root_password
MYSQL_DATABASE: halo
MYSQL_USER: halo
MYSQL_PASSWORD: halo
volumes:
- ./mysql_data:/var/lib/mysql
networks:
- halo-network
halo:
image: registry.fit2cloud.com/halo/halo:2.20
restart: on-failure:3
network_mode: "host"
volumes:
- ./halo2:/root/.halo2
environment:
- JVM_OPTS=-Xmx256m -Xms256m
command:
- --spring.r2dbc.url=r2dbc:pool:mysql://mysql:3306/halo
- --spring.r2dbc.username=halo
- --spring.r2dbc.password=halo
- --spring.sql.init.platform=mysql
- --halo.external-url=http://your-domain-or-ip
- --server.port=8090
- --server.address=0.0.0.0
depends_on:
- mysql
networks:
- halo-network
nginx:
image: nginx:alpine
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./certs:/etc/nginx/certs
networks:
- halo-network
networks:
halo-network:
driver: bridge
2.3配置域名或者ip和方向代理
创建nginx.conf文件在yml挂载的位置
nginx.conf文件内容参考
events {}
http {
server {
listen 80;
server_name your-domain.com; # 替换为你的域名或者ip
location / {
proxy_pass http://localhost:8090; # 后端服务地址和端口
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
重启nginx
sudo nginx -s reload
测试访问你的域名或者ip访问
Nginx日志排查
sudo tail -f /var/log/nginx/error.log
评论区