Docker部署Halo博客并配置SSL证书
2021-09-07 2557
版权
版权声明:
本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《 阿里云开发者社区用户服务协议》和 《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写 侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
简介: 本文所用环境:阿里云ECS服务器,全新安装CentOS 8.4。本文前置内容:购买云服务器,购买域名并备案,云服务控制台安全组/防火墙中放行`80,8090,443`端口(若有安装宝塔面板等也需要在面板中放行)本文将介绍通过Docker部署Halo博客并通过certbot自动申请证书并安装实现https访问。
Halo博客安装
安装Docker
本文使用全新安装的系统,因此并没有安装Docker,已安装Docker则可跳过这一步。登录终端输入以下内容并按回车等待即可完成Docker安装,该命令同样适用于Ubuntu。
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
创建Halo博客的工作目录
本文将Halo博客工作目录置于home目录下,并命名为.halo。该目录将用来存放博客所有配置、文章、主题等数据,若有备份或迁移需要则可以直接复制该目录。
创建目录并前往该目录mkdir ~/.halo && cd ~/.halo
下载默认配置文件到工作目录
wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml
该配置文件包含了端口,数据库,缓存,后台根路径等配置,一般下载后不用更改
拉取Halo镜像
docker pull halohub/halo:latest
创建容器
docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo --restart=unless-stopped halohub/halo:1.4.11
8090:8090第一个8090为宿主机端口,第二个8090为容器端口,含义为将宿主机的8090端口映射到容器的8090端口。
~/.halo:/root/.halo含义为将宿主机的~/.halo目录映射到容器的/root/.halo目录,注意后者不可更改。
其他参数具体含义请参考官方文档。
此时即可使用:端口号访问安装引导界面。但比较推荐完成下列反向代理以及SSL证书配置后再进行博客的初始化。
使用Nginx进行反向代理注意下文内容基于使用8090宿主机端口,如有更改请注意在配置文件中将8090改为自行修改的端口
安装Nginx
# 下列代码适用于CentOS # 添加 Nginx 源 sudo rpm -Uvh # 安装 Nginx sudo yum install -y nginx # 启动 Nginx sudo systemctl start nginx.service # 设置开机自启 Nginx sudo systemctl enable nginx.service# 下列代码适用于Ubuntu sudo update sudo apt install nginx配置Nginx
# 下载 Halo 官方的 Nginx 配置模板 curl -o /etc/nginx/conf.d/halo.conf --create-dirs https://dl.halo.run/config/nginx.conf下载之后需要对其进行修改。以上方法安装的Nginx默认路径为/etc/nginx
# 适用 vim 编辑 halo.conf vim /etc/nginx/conf.d/halo.conf打开之后的内容应该类似
server { listen 80; server_name example.com ; # 将 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 :8090/; # 如有更改默认的宿主机8090端口,请修改此处为执行选择的端口 } }修改完成之后
# 检查配置是否有误 sudo nginx -t # 重载 Nginx 配置 sudo nginx -s reload使用 certbot 申请并自动安装SSL证书阿里云/腾讯云等云服务商也可以申请免费的SSL证书并下载,这类证书请查阅相关教程,本文仅介绍通过certbot申请证书并自动安装。
安装 certbot 和 certbot nginx 插件:
# 根据自己的系统选择相应命令 # CentOS 安装 certbot 以及 certbot nginx 插件 sudo yum install certbot -y sudo yum install python3-certbot-nginx -y # Ubuntu 安装 certbot 以及 certbot nginx 插件 sudo apt install certbot sudo apt install python3-certbot-nginx申请并自动配置证书:
sudo certbot --nginx需要输入邮箱并按y或a同意相关协议,具体请参考输入命令后的输出
自动续约
这里申请的免费证书可以免费续期,理论上可以一直免费使用,这里提供了自动执行续期的命令
sudo certbot renew --dry-run 结束语到这里,即完成了所有的步骤,可以直接通过域名进行Halo博客的访问。注意,国内服务商注册的域名大多需要备案,否则无法使用,具体请参考云服务商的文档。
在设置完反向代理后,必须在博客的后台管理界面设置正确的博客地址,否则可能导致CSS加载不成功、样式混乱等错误。