前言

该教程支持系统环境CentOS7.X

  1. 请确认服务器配置为CentOS7.x。
  2. 服务器最低内存512MB。
  3. 请确认域名已经正确解析到公网IP。
  4. 请确认服务器的防火墙已经打开8090 443 80 端口 。
  5. 要有一定的Linux操作基础。

1.服务器配置

1.1更新yum软件包。

sudo yum update -y

1.2安装JDK

目前CentOS7.X服务器自带的java版本为1.8,而最新版本的Halo已经不支持JRE8,最低依赖要求JRE11。

#列出已安装JDK版本
rpm -qa|grep jdk
#删除已安装的JDK包,后面跟列出的JDK包名字(最好一个一个删除)
rpm -e --nodeps
#卸载完成后验证文件是否有残余
java -version 
#出现java:command not found...证明已经卸载干净
#安装JDK11
sudo yum install java-11-openjdk -y
#检查java版本
java -version
#输出以下字符表示安装成功
openjdk version "11.0.10" 2021-01-19 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.10+9-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.10+9-LTS, mixed mode, sharing)

1.3创建低权限用户

为了方便管理Halo博客系统,推荐创建一个Halo用户(名字可以自定义)

#创建一个名为halo用户
useradd -m halo
#给予该用户sudo权限
usermod -aG wheel halo
#在halo账户上创建密码(输入密码时默认不可见)
passwd halo
#登录该账户
su - halo

2.安装Halo系统

2.1下载配置文件

配置文件可以根据用户的不同需求,可以更改访问端口,系统数据库等配置
配置文件下载后的路径为 ~/.halo/application.yaml

#下载配置文件到~/.halo 目录
curl -o ~/.halo/application.yaml --create-dirs https://dl.halo.run/config/application-template.yaml
#可以用Vim 命令修改配置文件
vim ~/.halo/application.yaml
#下载Halo jar包
wget https://hwcdn.xinac.net/halo/release/halo-1.4.11.jar -O halo-latest.jar

更多下载地址请戳这里

请注意一定要保证~/.halo目录的存在,在该目录下存放着博客的
application.yaml(用户配置文件)
template/themes(主题目录)
upload(附件上传目录)
halo.db.mv(数据库文件)
这些文件为后期的博客迁移的重要文件,请一定要保存完整!!

#测试启动Halo
java -jar halo-latest.jar

如看到以下字符输出,则表示启动成功!

run.halo.app.listener.StartedListener    : Halo started at         http://127.0.0.1:8090
run.halo.app.listener.StartedListener    : Halo admin started at   http://127.0.0.1:8090/admin
run.halo.app.listener.StartedListener    : Halo has started successfully!

3.完善配置

上面我们已经安装并测试了Halo系统,但是当ssh连接关闭时,Halo也将会关闭,所以我们需要halo模板进行更完善的配置。
注意以上的安装及调试是在halo账户(自己创建的用户)下进行的,下面的配置需要退出halo,使用权限更高的root

#退出当前账户
exit
sudo curl -o /etc/systemd/system/halo.service --create-dirs https://dl.halo.run/config/halo.service

同样要进行修改

sudo vim /etc/systemd/system/halo.service

使用vim打开后如下

[Unit]
Description=Halo Service
Documentation=https://halo.run
After=network-online.target
Wants=network-online.target
 
[Service]
User=USER
Type=simple
ExecStart=/usr/bin/java -server -Xms256m -Xmx256m -jar YOUR_JAR_PATH
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=always
StandOutput=syslog
 
StandError=inherit
 
[Install]
WantedBy=multi-user.target

参数解读:

  • -Xms256m:为 JVM 启动时分配的内存,请按照服务器的内存做适当调整,512 M 内存的服务器推荐设置为 128,1G 内存的服务器推荐设置为 256,默认为 256。
  • -Xmx256m:为 JVM 运行过程中分配的最大内存,配置同上。
  • YOUR_JAR_PATH:Halo 安装包的绝对路径,/home/halo/halo-latest.jar(创建halo用户的路径)或者/root/halo-latest.jar(未创建halo用户的路径)。
  • USER:运行 Halo 的系统用户,如果有按照上方教程创建新的用户来运行 Halo,修改为你创建的用户名称即可。反之请删除 User=USER。
# 修改 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

用户可以使用服务器公网IP:端口,进行访问自己的博客并初始化

4.配置域名解析

在进行域名解析之前请确认以下几点

  1. 请确认服务器域名已经成功解析到服务器公网ip。
  2. 请确认你已经配置好了Halo,并且不在80端口运行。
  3. 请确认服务器防火墙开放80 443 端口。

4.1使用Nginx进行反向代理

#添加Nginx源
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
#安装Nginx
sudo yum install -y nginx
#启动Nginx
sudo systemctl start nginx.service
#设置Nginx开机自启
sudo systemctl enable nginx.service

4.2配置Nginx

#下载Nginx官网配置模板
curl -o /etc/nginx/conf.d/halo.conf --create-dirs https://dl.halo.run/config/nginx.conf

对其进行修改

vim /etc/nginx/conf.d/halo.conf

文件内容如下

upstream halo {
  server 127.0.0.1:8090;
}
server {
  listen 80;
  listen [::]:80;
  server_name www.yourdomain.com;
  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;
  }
}

把example.com和www.example.com修改为自己的域名。
server 127.0.0.1:80端口改为8090

修改完成后

# 检查配置是否有误
sudo nginx -t
 
# 重载 Nginx 配置
sudo nginx -s reload

最后需要在博客的后台重新配置一下博客地址,把默认改为你的域名。
然后你就可以通过你自己的域名访问博客。

5.SSL证书获取与安装

有三种方式

  1. 通过安装cerbot获取免费的ssl证书,但是centos7.x系统自带的python版本为2.7,在安装cerbot-nginx会因为版本过低而报错,如果执意要安装则需要安装python3(不需要卸载python2.7,因为yum需要python2.7运行)教程戳这
  2. 通过cerbot-dns-aliyun认证,这种方法避免了第一种方法ssl证书认证成功之后,装载博客之后还是不成功的问题,通过阿里云进行dns认证,教程戳这需要科学上网
  3. 直接通过阿里云SSL证书免费申请,一年期限20个证书,每年可申请一次。(这种方法比较简单快速)

注意第三种方法获取的ssl证书如果在阿里云本地有服务器可一件部署,如果服务器在其他厂家,则需要下载证书手动安装。

以nginx为例 教程戳这

至此Halo博客系统配置完毕,如有疑问请在下面留言,enjoy it!!!

Q.E.D.