前言
该教程支持系统环境CentOS7.X
- 请确认服务器配置为CentOS7.x。
- 服务器最低内存512MB。
- 请确认域名已经正确解析到公网IP。
- 请确认服务器的防火墙已经打开8090 443 80 端口 。
- 要有一定的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.配置域名解析
在进行域名解析之前请确认以下几点
- 请确认服务器域名已经成功解析到服务器公网ip。
- 请确认你已经配置好了Halo,并且不在80端口运行。
- 请确认服务器防火墙开放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证书获取与安装
有三种方式
- 通过安装cerbot获取免费的ssl证书,但是centos7.x系统自带的python版本为2.7,在安装cerbot-nginx会因为版本过低而报错,如果执意要安装则需要安装python3(不需要卸载python2.7,因为yum需要python2.7运行)教程戳这
- 通过cerbot-dns-aliyun认证,这种方法避免了第一种方法ssl证书认证成功之后,装载博客之后还是不成功的问题,通过阿里云进行dns认证,教程戳这需要科学上网
- 直接通过阿里云SSL证书免费申请,一年期限20个证书,每年可申请一次。(这种方法比较简单快速)
注意第三种方法获取的ssl证书如果在阿里云本地有服务器可一件部署,如果服务器在其他厂家,则需要下载证书手动安装。
以nginx为例 教程戳这