前言

因为服务器被我重置了,需要重新安装一次halo;所以以下是在全新系统中进行操作

环境:

centos 7.9

连接工具:

xshell

步骤

1. 安装JRE

写这篇文章是,最新halo版本要求JRE版本为11,故我们安装JRE11

yum install java-11-openjdk -y

检查版本

java -version

无问题进行下一步

2. 安装halo

这里我没有新建用户,直接用的root用户

2.1 创建存储安装包目录
mkdir ~/app && cd ~/app
2.2 下载运行包
wget https://dl.halo.run/release/halo-1.4.3.jar -O halo.jar
2.3 创建工作目录
mkdir ~/.halo && cd ~/.halo
2.4 下载示例配置文件到工作目录
wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml
2.5 编辑配置文件
vim application.yaml

以下是我的配置
我用的mql远程数据库

server:
  port: 8090

  # Response data gzip.
  compression:
    enabled: false
spring:
  datasource:

    # H2 database configuration.
#    driver-class-name: org.h2.Driver
#    url: jdbc:h2:file:~/.halo/db/halo
#    username: admin
#    password: 123456

    # MySQL database configuration.
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://rm.mysql.rds.aliyuncs.com/halo # 数据库地/数据库名
    username: root # 数据库用户名
    password: xxxx # 数据库密码

  # H2 database console configuration.
#  h2:
#    console:
#      settings:
#        web-allow-others: false
#      path: /h2-console
#      enabled: false

halo:

  # Your admin client path is https://your-domain/{admin-path}
  admin-path: admin

  # memory or level
  cache: memory

2.6 运行halo
cd ~/app && java -jar halo.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!

然后打开 http://ip:端口号 即可开始进入安装引导界面,如果不能进入页面,检查服务器8090端口是否开放

3. 作为服务运行halo

3.1 下载halo官方service模板
wget https://dl.halo.run/config/halo.service -O /etc/systemd/system/halo.service
3.2 修改service模板
vim /etc/systemd/system/halo.service

以下为我的配置

Description=Halo Service
Documentation=https://docs.halo.run
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
# User=USER # 如果照我的步骤则删除该行
ExecStart=/usr/bin/java -server -Xms256m -Xmx256m -jar /root/app/halo.jar # 到halo运行包路径
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=always
StandOutput=syslog

StandError=inherit

[Install]
WantedBy=multi-user.target

验证 命令路径即ExecStart
/usr/bin/java -server -Xms256m -Xmx256m -jar /root/app/halo.jar

3.3 重新加载 systemd
systemctl daemon-reload
3.4 运行服务
systemctl start halo
3.5 在系统启动时启动服务
systemctl enable halo
[可选] 查看日志
journalctl -n 20 -u halo

4. 安装配置nginx

以下也配置了ssl证书

4.1 安装nginx
sudo yum -y install nginx
4.2 证书上传[可选]
  1. 下载rz
yum -y install lrzsz
  1. 到nginx配置目录
cd /etc/nginx
  1. 创建 ssl证书目录
mkdir ssl && cd ssl
  1. 选择证书文件上传
rz
4.3 配置nginx
  1. 编辑nginx
vim /etc/nginx/nginx.conf
  1. 修改配置项
    以下是我的配置,仅供参考 lijiakai.cn 请换成自己的域名
# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;
    client_max_body_size 1024m;
    client_header_timeout 60;
    client_body_timeout 60;
    #lingering_timeout 20;
    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;
    upstream halo {
        server 127.0.0.1:8090;
    }
    server {
        #SSL 监听80和443
        listen 80;
        #自行替换
        server_name lijiakai.cn;
        if ($scheme != https) {  return 301 https://lijiakai.cn$request_uri;  }
    }
    server{
        listen 443 ssl;
        #填写绑定证书的域名
        server_name lijiakai.cn;
        #证书文件名称
        ssl_certificate /etc/nginx/ssl/3722511_www.lijiakai.cn.pem; # 证书文件路径,此路径仅供参考,具体请您按照实际目录操作
        #私钥文件名称
        ssl_certificate_key /etc/nginx/ssl/3722511_www.lijiakai.cn.key; # 私钥文件路径,此路径仅供参考,具体请您按照实际目录操作
        ssl_session_timeout 5m;
        #请按照以下协议配置
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;
        location /{
            #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
            proxy_pass http://halo;
            #proxy_read_timeout 150;
            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;
        }
    }
}
4.4 启动nginx

1.设置开机启动

sudo systemctl enable nginx

2.启动nginx

sudo service nginx start

以下是nginx 服务 命令

sudo systemctl enable nginx # 设置开机启动 
sudo service nginx start # 启动 nginx 服务
sudo service nginx stop # 停止 nginx 服务
sudo service nginx restart # 重启 nginx 服务
sudo service nginx reload # 重新加载配置,一般是在修改过 nginx 配置文件时使用。
4.5 配置halo后台

进入 系统/博客设置/常规设置
将 博客地址改为 自己的网站 如:

https://lijiakai.cn

配置ssl证书的一定要为https,不然页面样式会丢失

结语

希望大家能配置成功

Q.E.D.