在 Ubuntu 服务器上部署 Halo 完整操作记录

愿夕缘家 773 2022-08-03

记录下在腾讯云服务器上部署 Halo 的完整操作记录,有些操作比较简略,可以直接参考官方文档。

1.安装 docker

sudo apt install docker.io

更新当前用户到 docker 用户组

sudo gpasswd -a $USER docker
newgrp docker

2.配置工作目录及文件

主要按照 Halo 文档操作

vim application.yaml

主要修改 h2 的密码,后台 admin 路径

3.下载 halo 镜像

docker pull halohub/halo:1.5.3

4.安装 nginx 配置反向代理

这里是自己安装 nginx 服务器,也可以通过 docker 安装。

sudo apt install nginx

默认的配置文件路径为 /etc/nginx/nginx.conf,查看配置文件,发现里面并无实际的配置,而是 include了/etc/nginx/conf.d/.conf以及 /etc/nginx/sites-enabled/ 两个目录下的配置文件。

不在 /etc/nginx/sites-available 修改 default 升级会被覆盖
举例创建 yxyinfo 复制 halo 的配置

sudo ln -s /etc/nginx/sites-available/yxyinfo /etc/nginx/sites-enabled/yxyinfo

删除默认配置

sudo rm /etc/nginx/sites-enabled/default

配置文件

upstream halo {
  server 127.0.0.1:8090;
}
server {
  listen 80;
  listen [::]:80;
  server_name www.yxyinfo.cn;
  client_max_body_size 1024m;
  location / {
    proxy_pass http://halo;
    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;
  }
}

操作 nginx

sudo nginx
sudo nginx -t
sudo nginx -s reload

5.docker启动 Halo

启动 Halo 映射到端口 8090

docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo --restart=unless-stopped halohub/halo:1.5.3

可以修改 ~/.halo 为具体的配置文件目录

6.添加域名解析

在服务器的控制台配置域名解析到服务器的 IP 地址。这里可以直接访问 IP:8090 端口(注意服务器是否开放),查看网页。域名解析成功后,可以直接把IP换成域名。

7.开启 HTTPS

下载并上传 SSL 证书

nginx 配置修改,之前例子是映射到 8090 端口。这里统一将 80 端口转到 443 端口,走 HTTPS。

upstream halo {
  server 127.0.0.1:8090;
}
server {
  listen 443 ssl;
  server_name www.yxyinfo.cn;

  ssl_certificate /home/ubuntu/ck/yxyinfo.cn_bundle.crt;
  ssl_certificate_key /home/ubuntu/证书私钥;
  ssl_session_timeout 5m;
  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
  ssl_protocols TLSv1.2 TLSv1.3;
  ssl_prefer_server_ciphers on;

  client_max_body_size 10m;
  location / {
    proxy_pass http://halo;
    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 80;
    server_name yxyinfo.cn;
    return 301 https://$server_name$request_uri;
}

好了,基本配置完成,可以访问域名看看。


# 技术