Halo+Caddy+阿里云搭建你的博客系统

Halo+Caddy+阿里云搭建你的博客系统

选择服务器

大致分为海外服务器和大陆服务器两种

  1. 海外服务器:通常价格便宜,主要是没套路,无需备案还能科学上网;但是不稳定。
  2. 大陆服务器:价格给多给少是个缘,需备案;稳定,适合真正需要博客的人。

大陆服务器比较主流的就是阿里云、腾讯云和华为云

  1. 阿里云资质最老,质量当然最高,但是续费的价格会让你怀疑人生。
  2. 腾讯云仅次于阿里云,对新老用户都比较友好。
  3. 华为云不了解。

建议新用户先选择阿里云,通常共享型1核2g1M一年80;续费大概一年近600,实际博客1g即可,续费一年350。如果你接受不了续费到时候再换别的云服务。

购买与实例详情

  1. 点击阿里云官网:https://www.aliyun.com/
  2. 选择侧边栏的云服务器ECS,进行购买;通常会有很多活动链接,多看看
  3. 购买后点击首页右上角的控制台进入控制面板
  4. 点击左上角的菜单栏,选择服务器ECS,点击实例ID进入实例详情页面

截屏20200301下午3.03.15.png

实例详情中包含了服务器的大部分信息,包括公网ip

购买域名并解析

  1. 域名购买网址:https://wanwang.aliyun.com/
  2. 进入控制台,点击侧边栏中的域名,第一次需要实名认证,根据步骤来就可以了。(实名认证需要1个工作日,不过通常几个小时就OK了)
  3. 认证完成后在同样的界面中,点击解析-添加记录,需要添加两个,主机记录分别是www@,记录值全都是你服务器的公网ip,添加成功后就完成了域名解析

配置安全组规则

进入实例详情页面,点击侧边栏的本实例安全组-配置规则-添加安全组规则。需要添加3个规则,端口范围分别是:80/80、443/443、8090/8090授权对象全都是0.0.0.0/0,其他不变。

其中80和443端口分别对应http和https请求,8090是halo的默认配置需要的端口

备案

在阿里云首页右上角点击备案,根据步骤一步步完成即可;时间大约需要一周。

建立远程连接

  1. 进入实例详情页面,点击远程连接-VNC
  2. 第一进入会得到6位实例密码,请牢记;login是用户名随便填,密码是远程连接密码(VNC密码),如果你不知道了可以,在实例详情页面的左上角点击返回按捏进入实例列表页面,在更多-密码/密钥中修改你的密码
  3. 当成功进入一次VNC后,你就可以选择使用这个阿里云自带的或者自己的SSH工具了

安装Halo

按照用户文档在 Linux 服务器部署 Halo,进行安装。

核心步骤:

# 更新软件包
sudo yum update -y

# 安装 OpenJRE
sudo yum install java-1.8.0-openjdk -y

# 下载配置文件到 ~/.halo 目录
curl -o ~/.halo/application.yaml --create-dirs http://halo.ryanc.cc/config/application-template.yaml

# 下载最新的 Halo 安装包
wget http://halo.ryanc.cc/release/halo-latest.jar -O halo-latest.jar

# 下载 Halo 官方的 halo.service 模板
sudo curl -o /etc/systemd/system/halo.service --create-dirs http://halo.ryanc.cc/config/halo.service

# 修改 halo.service,将JAR_PATH修改为Halo安装包的绝对路径
sudo vim /etc/systemd/system/halo.service

# 修改 service 文件之后需要刷新 Systemd
sudo systemctl daemon-reload

# 使 Halo 开机自启
sudo systemctl enable halo

# 启动 Halo
sudo service halo start

# 查看 Halo 的运行状态
sudo service halo status

请确保Halo的运行状态
完成以上操作即可通过 IP:端口 访问了。

配置域名访问

按照用户文档配置域名访问,进行配置

核心步骤:

# 安装 Caddy 软件包
yum install caddy -y

# 下载 Halo 官方的 Caddy 配置模板
curl -o /etc/caddy/conf.d/Caddyfile.conf --create-dirs http://halo.ryanc.cc/config/Caddyfile

# 使用 vim 编辑 Caddyfile
vim /etc/caddy/conf.d/Caddyfile.conf

#模版修改为
https://ryanc.cc {
  redir https://www.ryanc.cc{url}
}

https://www.ryanc.cc {
  gzip
  tls i@ryanc.cc
  proxy / localhost:8090 {
    transparent
  }
}

#请把 其中的域名 改为自己的域名。
#tls 后面的 xxxx@xxx.xx 改为自己的邮箱地址。
#请将 port 修改为 Halo 的运行端口,默认为 8090

# 开启自启 Caddy 服务
systemctl enable caddy

# 启动 Caddy
service caddy start

# 重启 Caddy
service caddy restart

# 查看 Caddy 运行状态
service caddy status

到这里,关于 Caddy 反向代理的配置也就完成了,现在你可以访问一下自己的域名,并进行 Halo 的初始化了。

每次修改完 Caddyfile 都要重启Caddy
请一定记得去 halo 的管理端设置一下正确的博客地址,否则会造成资源获取不成功。

如何备份

你的博客文章、主题样式等等所有的数据都储存在~/.halo文件夹中,因此备份此文件夹即可。选择系统-小工具-备份进行建立备份,点击即可下载。
截屏20200301下午4.11.23.png

我之前不知道此备份功能,使用Mac OS自带的sftp工具,get -r 远程 本地 直接拉取了.halo,造成数据库文件损坏。为了测试,我在本地使用Halo的小工具进行备份,然后删除本地.halo,第一次测试依然报错。但是第二次和第三次测试没有问题,我怀疑可能是h2数据库容易损坏。
因此,如果你要进行数据迁移,请先测试备份数据是否完好无损。

如果你删除.halo文件无法初始化并报错,请在你的项目中执行以下指令

git submodule init

git submodule update