写这个的主要目的是为了腾讯云到期之后将halo博客部署到别的便宜的云服务器时简化部署, 不用再去网上一顿搜
主要有三个方面需要配置; 配置域名; 配置halo; 配置caddy
1. 配置域名
-
在各大云服务器厂商购买云服务器之后, 会分配一个公网IP, 需要做的就是将这个公网IP映射到自己购买的域名上, 这样的话, 就可以通过域名来访问购买的云服务器的IP
-
因为各大云服务器厂商的云服务器第一年费用基本上都在百元之内, 所以可以每年换一个云服务器厂商来降低使用成本
-
各大云服务器厂商购买链接
-
购买域名, 并且在域名管理页面上将域名映射到想要的Ip上面
2. 配置 Halo
- 基础 - 更新软件包
sudo yum update -y
- 基础 - 安装 Java 运行环境, 这是halo运行唯一需要的外部关联, 貌似Centos7是没有Java的, 需要自己安装
sudo yum install java-1.8.0-openjdk -y
- 安装halo - 下载halo配置文件
# 下载配置文件到 ~/.halo 目录
curl -o ~/.halo/application.yaml --create-dirs https://dl.halo.run/config/application-template.yaml
- 安装halo - 修改配置文件
# 使用 Vim 工具修改配置文件
vim ~/.halo/application.yaml
#-------------下面是application.yaml配置文件内容-------------
server:
port: 8090
spring:
datasource:
type: com.zaxxer.hikari.HikariDataSource
# H2 Database 配置,如果你需要使用 MySQL,请注释掉该配置并取消注释 MySQL 的配置。
driver-class-name: org.h2.Driver
url: jdbc:h2:file:~/.halo/db/halo
username: admin
password: 123456
# MySQL 配置,如果你需要使用 H2Database,请注释掉该配置并取消注释上方 H2Database 的配置。
# 目前使用的是H2数据库, 如果要用MySQL, 需要使用5.7 以上版本, 而且预先创建halodb 数据库
# driver-class-name: com.mysql.cj.jdbc.Driver
# url: jdbc:mysql://127.0.0.1:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
# username: root
# password: 123456
# H2 Database 的控制台相关配置,如果你使用的是 MySQL ,请注释掉下方内容。
h2:
console:
settings:
web-allow-others: false
path: /h2-console
enabled: false
- 安装halo - 下载最新版halo, 并启动测试; 如果 wget 报错, 需要先安装 wget
# 下载最新的 Halo 安装包,{{version}} 为版本号,不带 v,更多下载地址请访问 https://halo.run/archives/download.html
wget https://dl.halo.run/release/halo-1.3.2.jar -O halo-latest.jar
# 启动测试
java -jar halo-latest.jar
2.1 完善 Halo 配置
- 下载 Halo 官方的 halo.service 模板
sudo curl -o /etc/systemd/system/halo.service --create-dirs https://dl.halo.run/config/halo.service
- 修改下载的配置文件
# 修改 halo.service
sudo vim /etc/systemd/system/halo.service
#-------------下面是halo.service文件内容-------------
# 唯一需要修改的地方是 YOUR_JAR_PATH 改为下载的 halo-1.3.2.jar 的绝对路径
[Unit]
Description=Halo Service
Documentation=https://halo.run
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/usr/bin/java -server -Xms256m -Xmx256m -jar /root/halo-1.3.2.jar
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=always
StandOutput=syslog
StandError=inherit
[Install]
WantedBy=multi-user.target
2.2 完善配置后, 常用命令
- 每一次修改 halo.service 文件, 都需要刷新 Systemd
sudo systemctl daemon-reload
- 设置 Halo 开机自启
sudo systemctl enable halo
- 启动 Halo
sudo service halo start
- 重启 Halo
sudo service halo restart
- 停止 Halo
sudo service halo stop
- 查看 Halo 的运行状态
sudo service halo status
3. 配置 Caddy
Caddy 是一款使用 Go 语言开发的 Web 服务器。其配置更为简洁,并可以自动申请及配置 SSL 证书
- 安装 Caddy
# 安装 Caddy 软件包
yum install caddy -y
- 配置 Caddy
# 下载 Halo 官方的 Caddy 配置模板
curl -o /etc/caddy/conf.d/Caddyfile.conf --create-dirs https://dl.halo.run/config/Caddyfile
- 修改 Caddyfile.conf 配置文件
# 使用 vim 编辑 Caddyfile
vim /etc/caddy/conf.d/Caddyfile.conf
#-------------下面是Caddyfile.conf文件内容-------------
https://xmcs.xyz {
redir https://www.xmcs.xyz{url}
}
https://www.xmcs.xyz {
gzip
tls jefxff@outlook.com
proxy / localhost:8090 {
transparent
}
3.1 Caddy 常用命令
- 开启自启 Caddy 服务
systemctl enable caddy
- 启动 Caddy
service caddy start
- 停止运行 Caddy
service caddy stop
- 重启 Caddy
service caddy restart
- 查看 Caddy 运行状态
service caddy status
4. 用于启动的简易Shell小脚本
#! /bin/bash
# fileName: myhalo.sh
case $1 in
"start" )
echo "[ 启动 ] halo ..."
service halo start
echo "[ 启动 ] Caddy ..."
service caddy start
;;
"stop")
echo "[ 关闭 ] halo ..."
service halo stop
echo "[ 关闭 ] Caddy ..."
service caddy stop
;;
"status")
echo "[ HALO ] 状态 ..."
service halo status
echo "[ CADDY ] 状态 ..."
service caddy status
;;
"restart")
echo "[ 重启 ] halo ..."
service halo restart
echo "[ 重启 ] Caddy ..."
service caddy restart
;;
esac
- 赋予脚本执行的权限
# 赋予执行的权限
chmod +x myhalo.sh
# 或者
chmod 755 myhalo.sh
5. 使用nginx部署
之前使用Caddy部署是因为觉得简单,halo的教材很详细,这次(2021/6/16)部署的时候发现,halo的教程默认我们都能搞定,只是出了简单的CaddyFile, 所以就想着使用Nginx来部署,网上找了很多,发现都是利用宝塔面板来搞得,最终找到了 冷菌の博客是通过certbot来搞定SSL的,教程很详细,看着就能搞定!