目 录CONTENT

文章目录

centos 8 安装 Halo 基于宝塔面板

Seven
2021-07-05 / 0 评论 / 0 点赞 / 891 阅读 / 8898 字 / 正在检测是否收录...

先声明一下自己的环境,我这服务器上安装了很多东西。mysql 5.7数据库,NGINX,都是用宝塔面板安装好了的。所以在数据库我没有用官方推荐的H2.当然你也可以直接用H2。官方指南已经非常清楚了。
官方安装指南:https://docs.halo.run/install/index

更新软件包

请确保服务器的软件包已经是最新的。
使用命令

sudo yum update -y

安装 Java 运行环境

 ##安装 java jdk
 udo yum install java-11-openjdk -y

检查版本:

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)

安装 Halo

创建新的系统用户

Halo官方不推荐使用ROOT用户来运行。如果你需要使用ROOT用户,可跳过这一步。

创建一个名为 webo 的用户(名字随意)

useradd -m halo

给予 sudo 权限

usermod -aG wheel webo

为halo用户创建密码

passwd webo

登录到webo账户

su webo

创建存放运行包目录

我这里以/www/wwwroot/halo为例

mkdir /www/wwwroot/halo && cd /www/wwwroot/halo

下载运行包

wegt https://dl.halo.run/release/halo-1.4.8.jar -O halo.jar

下载示例配置文件到目录

wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml

编辑配置文件,配置数据库、端口等:

vim application.yaml

配置文件参数:默认H2作为数据库

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

  # 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

以mysql作为数据库(我自己是用的mysql)要求是版本5.7及以上:

server:
  port: 8090 #根据需求修改

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

    # MySQL database configuration.
    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    #自己修改

halo:

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

  # memory or level
  cache: memory

注意,使用mysql作为数据库时,官方提供了手动建数据库代码,不要使用宝塔面板去创建,好像会出问题。

create database halodb character set utf8mb4 collate utf8mb4_bin;

此处数据库的名称“halodb”注意和配置文件上的数据库名称匹配。

测试运行Halo

cd /www/wwwroot/halo && java -jar halo.jar

命令后开始启动Halo,稍等一会,如果看到类似以下日志,恭喜你,代表启动成功:

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:端口号 就可以看到安装引导界面。

按下CTRL+C 停止运行 测试进程。

----------------------------------------------------------------

运行Halo

接下来有几种方式,让他运行于服务器上;
1、作为服务运行。(我之前用的是这个,相当于做为开机运行的服务。要下载官方的服务模板文件。官方有详细说明:https://docs.halo.run/install/linux)
2、用宝塔面板的Supervisor托管Halo进程(此教程用的这个方法)

首先,到宝塔面板-软件商店-应用搜索Supervisor 选择安装
完成后点设置,点击 添加守护进程 按钮。
名称:Haloweb
启动用户:本例新建了用户“webo”来运行,如果没有创建就默认root。
运行目录:本例是"/www/wwwroot/halo"
启动命令:

java -server -Xms256m -Xmx256m -jar halo.jar

填写完成之后点击确定即可。
image.png

配置NGINX代理Halo

添加网站

宝塔面板点击左侧网站-添加站点

域名:填写您已经解析到当前服务器公网 IP 的域名。也可以直接填写IP。

PHP版本:纯静态

其它的不用填写。

修改nginx配置文件

在根节点添加:

upstream halo {
    server 127.0.0.1:8090;
}

其中8090为Halo的运行端口,请按需求修改。

在server 节点添加:

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;
}

修改 server 节点中的 location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ 节点:

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
    proxy_pass http://halo;
    expires      30d;
    error_log /dev/null;
    access_log off;
}

修改 server 节点中的 location ~ .*.(js|css)?$ 节点:

location ~ .*\.(js|css)?$
{
    proxy_pass http://halo;
    expires      12h;
    error_log /dev/null;
    access_log off;
}

下面是本例中的完整配置文件:

upstream halo {
    server 127.0.0.1:8090;
}
server
{
    listen 80;
    server_name XXXXXXXXXXX;
    index index.php index.html index.htm default.php default.htm default.html;
    root /www/wwwroot/halo;
    
    #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
    #error_page 404/404.html;
    #SSL-END
    
    #ERROR-PAGE-START  错误页配置,可以注释、删除或修改
    #error_page 404 /404.html;
    #error_page 502 /502.html;
    #ERROR-PAGE-END
    
    #PHP-INFO-START  PHP引用配置,可以注释或修改
    include enable-php-00.conf;
    #PHP-INFO-END
    
    #REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
    include /www/server/panel/vhost/rewrite/XXXXXXXXXXX.conf;
    #REWRITE-END
    
    #禁止访问的文件或目录
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
    {
        return 404;
    }
    
    #一键申请SSL证书验证目录相关设置
    location ~ \.well-known{
        allow all;
    }
    
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
    proxy_pass http://halo;
    expires      30d;
    error_log /dev/null;
    access_log off;
    }
    
    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;
    }
    
    location ~ .*\.(js|css)?$
    {
        proxy_pass http://halo;
        expires      12h;
        error_log /dev/null;
        access_log off; 
    }
    access_log  /www/wwwlogs/XXXXXXXXXXX.log;
    error_log  /www/wwwlogs/XXXXXXXXXXX.error.log;

随后点击保存即可。如果配置不生效,请重载 Nginx 或者 重启 Nginx。
最后,访问域名即可进行 Halo 的初始化
其中的"XXXXXXXXXXX"为你的公网IP或者域名。

接下来配置SSL

点击你刚刚添加的网站;进入设置。

首先你要去申请SSL证书,可以直接在宝塔面板申请。(我是在云服务商申请的免费SSL证书,点击其它证书导入就可以了。)
image.png

然后打开强制 HTTPS
image.png

至此所有配置完成。

0

评论区