侧边栏壁纸
博主昵称

今天尝试在腾讯轻量云上安装halo,顺便记录一下安装过程。

前提:
  1. 安装 JDK: yum install java-11-openjdk
  2. 服务器安全策略打开8090端口

搭建开始

1.docker安装

在新主机上首次安装Docker Engine之前,需要设置Docker存储库。之后,您可以从存储库安装和更新Docker。 设置存储库

 1sudo yum install -y yum-utils
 2
 3#官网源
 4sudo yum-config-manager \
 5    --add-repo \
 6    https://download.docker.com/linux/centos/docker-ce.repo
 7    
 8#阿里源
 9sudo yum-config-manager \
10    --add-repo \
11    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装docker

1sudo yum install docker-ce docker-ce-cli containerd.io

启用docker

1sudo systemctl start docker

设置一下docker服务自启动,方便docker管理不然服务器关闭以后docker没人启动

1systemctl enable docker.service

2.使用 Docker 部署 Halo

创建工作目录

1mkdir ~/halo && cd ~/halo
2
3创建文件
4vi docker-compose.yaml

添加如下内容根据实际情况调整

 1version: "3"
 2
 3services:
 4  halo:
 5    image: halohub/halo:2.12
 6    container_name: halo
 7    restart: on-failure:3
 8    network_mode: "host"
 9    volumes:
10      - ./halo2:/root/.halo2
11    command:
12      # 修改为自己已有的 MySQL 配置
13      - --spring.r2dbc.url=r2dbc:pool:mysql://localhost:3306/halo
14      - --spring.r2dbc.username=root
15      - --spring.r2dbc.password=KLJFSLAKJF #密码
16      - --spring.sql.init.platform=mysql
17      # 外部访问地址,请根据实际需要修改
18      - --halo.external-url=http://XXX.com
19      # 端口号 默认8090
20      - --server.port=8090

启动docker

docker compose up -d

如果没有提示报错,那么恭喜你已经安装成功了,接下来我们开启反向代理,毕竟halo运行在8090这个端口,我们要访问80/443端口的

3.开启反向代理

首先,我们创建一个文件夹来存放 NPM 的 docker-compose.yml 文件

1mkdir -p ~/data/docker_data/nginxproxymanager   # 创建一个 npm 的文件夹
2
3cd ~/data/docker_data/nginxproxymanager    # 进入该文件夹
4
5vi docker-compose.yml

在英文状态的输入法下,按下 i,左下角出现 –INSERT– 后,粘贴填入下面的内容:

 1version: '3'
 2services:
 3  app:
 4    image: 'jc21/nginx-proxy-manager:latest'
 5    restart: unless-stopped
 6    ports:
 7      - '80:80'              # 不建议修改端口
 8      - '81:81'              # 可以把冒号左边的 81 端口修改成你服务器上没有被占用的端口
 9      - '443:443'            # 不建议修改端口
10    volumes:
11      - ./data:/data         # 点号表示当前文件夹,冒号左边的意思是在当前文件夹下创建一个 data 目录,用于存放数据,如果不存在的话,会自动创建
12     
13 - ./letsencrypt:/etc/letsencrypt  # 点号表示当前文件夹,冒号左边的意思是在当前文件夹下创建一个 letsencrypt 目录,用于存放证书,如果不存在的话,会自动创建

注意:安装了 NPM 之后,就不需要再安装 Nginx 了,否则会端口冲突(不建议修改 NPM 的 80、443 端口)。如果你的服务器安装了宝塔面板,也可以和 NPM 一起使用,只要你到软件后台把宝塔安装的 Nginx 关闭或者卸载即可。

之后,同样在英文输入法下,按一下 esc,然后 :wq 保存退出。

启动 NPM:

1docker-compose up -d     # -d 表示后台运行
2docker compose up -d     # 如果你用的是 docker-compose-plugin 的话,用这条命令

不出意外,此时你使用 http://127.0.0.1:81 就可以访问 NPM 的网页端了。(注意把 127.0.0.1 替换成你实际服务器的 IP)

1.不知道服务器 IP,可以直接在命令行输入:curl ip.sb,会显示当前服务器的 IP。 2.遇到访问不了的情况,请再次检查在宝塔面板的防火墙和服务商的后台防火墙是否打开对应了端口。 默认登陆的用户名:admin@example.com 密码:changeme 至此,我们已经完成了 Nginx Proxy Manager 的搭建,之后就可以用它给我们的 Halo 或者其他 Web 应用做反向代理了。

4.配置 Halo 的反向代理

首先我们登陆网页端之后,会弹出修改用户名和密码的对话框,我们根据自己的实际来修改自己的用户名和邮箱。

保存之后,会让我们修改密码。

接着我们就可以来给 Halo 来添加一个反向代理了。点击 Proxy Hosts,

接着点击 Add Proxy Host,弹出如下对话框:

看起来都是英文,很复杂,但是其实很简单,我们只要用到其中的几个功能即可,这边稍微解释一下:

  • Domain Names :填我们 Halo 网站的域名,首先记得做好 DNS 解析,把域名绑定到我们的服务器的 IP 上
  • Scheme :默认http 即可,除非你有自签名证书
  • Forward Hostname/IP :填入服务器的 IP,或者 Docker 容器内部的 IP(如果 NPM 和 Halo 搭建在同一台服务器上的话)
  • Forward Port:填入 Halo 映射出的端口,这边默认是8090
  • Cache Assets :缓存,可以选择打开
  • Block Common Exploits: 阻止常见的漏洞,可以选择打开
  • Websockets Support :WS 支持,可以选择打开
  • Access List: 这个是 NPM 自带的一个限制访问功能,这边我们不管,后续可以自行研究。 以下是一个样列:

因为样例的 NPM 和 Halo 搭建在同一台 VPS 上,所以这边的 IP,图中填的是 172.17.0.1,为 Docker 容器内部的 IP 地址, 可以通过命令查询:ip addr show docker0

14: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
2     link/ether 02:42:e4:a3:b5:b9 brd ff:ff:ff:ff:ff:ff
3         inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
4                valid_lft forever preferred_lft forever

这边的 IP 是 172.17.0.1,填入这个 IP,可以不用打开防火墙的 8090 端口。 当然,如果你的 NPM 和 Halo 不在同一台服务上,你需要在 IP 部分填入 你的 Halo 所在的服务器的 IP,并在服务商(部分服务商如腾讯、阿里)的后台打开 8090 端口。

一键申请 SSL 证书 接着我们来申请一张 SSL 证书,让我们的网站支持 https 访问。

如图所示,记得打开强制 SSL,其他四个的功能请自行研究,这边不多做讨论。

信息 1.申请证书需要你提前将域名解析到 NPM 所在的服务器的 IP 上; 2.如果你使用的是国内的服务器,默认 80 和 443 端口是关闭的,你需要备案之后才能使用; 3.如果你使用了 CloudFlare 的 DNS 服务,记得把小黄云关闭(即不开启 CDN)。

不出意外,你将成功申请到 SSL 证书,证书会三个月自动续期。 再次点开配置,查看一下,将强制 SSL 打开。

至此,你已经成功完成了 Halo 的反向代理,快尝试使用域名访问一下看看吧!

同样的,举一反三,试试把你的 NPM 也用一个域名来反向代理一下吧。(小提示:你需要再解析一个域名(可以是二级域名)到 NPM 所在的服务器上,反代页面需要填的 IP 可以填 docker 容器内的 IP 也可以填服务器的 IP,端口填 81 即可)

博主栏壁纸
博主头像 爱喝酸奶的我

一个随缘记录学习生活并取悦自己的博客小站

31 文章数
10 评论量
标签云