本文使用docker安装halo
系统环境为centos7.6
更好的阅读体验请查看:https://lidonglei.cn
docker安装
yum install docker
systemctl start docker
安装halo
- 创建工作目录
mkdir ~/.halo && cd ~/.halo
- 下载示例配置文件到工作目录
wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml
- 编辑配置文件,配置数据库或者端口等,如需配置请参考参考配置
vim application.yaml
- 拉取最新的 Halo 镜像
docker pull halohub/halo:1.4.16
- 创建容器
docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo --restart=unless-stopped halohub/halo:1.4.16
安装Nginx
- 安装nginx
sudo yum install -y nginx
- 启动nginx
sudo systemctl start nginx.service
# 设置开机自启 Nginx
sudo systemctl enable nginx.service
- 配置nginx
# 下载 Halo 官方的 Nginx 配置模板
curl -o /etc/nginx/conf.d/halo.conf --create-dirs https://dl.halo.run/config/nginx.conf
# vim 编辑 halo.conf
vim /etc/nginx/conf.d/halo.conf
server {
listen 80;
server_name example.com www.example.com; # 将 example.com www.example.com 修改为自己的域名
location / {
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_pass http://127.0.0.1:8090/; # 如有更改默认的宿主机8090端口,请修改此处为执行选择的端口
}
}
# 检查配置是否有误
sudo nginx -t
# 重载 Nginx 配置
sudo nginx -s reload
配置SSL
- 登陆到服务器
- 安装certbot
sudo yum install certbot
- 获取证书
sudo certbot certonly --manual --preferred-challenges=dns
输入邮箱:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-apPWouZ3-1639710680617)(/upload/2021/12/image-2de6ec4801304741b8dd765005d0ae1a.png)]
输入同意即可
此时提示是否共享你的邮箱地址,我选择不共享:
此时会让你输入你的域名,我的域名为 lidonglei.cn, 如果要申请泛域名证书,则输入
lidonglei.cn *.lidonglei.cn,如果要申请单域名,则输入www.lidonglei.cn
此时会出现一个提示,确认即可:
此时提示部署一条DNS文本记录:
在阿里云的域名解析中添加一条解析记录:
回到控制台点击enter回车即可:
配置nginx配置文件
upstream halo {
server 127.0.0.1:8090;
}
server {
listen 80;
return 301 https://lidonglei.cn$request_uri;
listen [::]:80;
server_name lidonglei.cn;
client_max_body_size 1024m;
location / {
proxy_pass http://127.0.0.1:8090;
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;
}
}
server {
listen 443 ssl;
server_name lidonglei.cn;
ssl_certificate /etc/letsencrypt/live/lidonglei.cn/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/lidonglei.cn/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8090/;
}
}
References
Halo官方文档
Docker部署Halo博客并配置SSL证书
使用Certbot申请免费泛域名SSL证书
搭建Halo+Nginx反向代理+SSL证书配置踩的坑