今天尝试在腾讯轻量云上安装halo,顺便记录一下安装过程。
在新主机上首次安装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
创建工作目录
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端口的
首先,我们创建一个文件夹来存放 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 应用做反向代理了。
首先我们登陆网页端之后,会弹出修改用户名和密码的对话框,我们根据自己的实际来修改自己的用户名和邮箱。
保存之后,会让我们修改密码。
接着我们就可以来给 Halo 来添加一个反向代理了。点击 Proxy Hosts,
接着点击 Add Proxy Host,弹出如下对话框:
看起来都是英文,很复杂,但是其实很简单,我们只要用到其中的几个功能即可,这边稍微解释一下:
因为样例的 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 即可)