先声明一下自己的环境,我这服务器上安装了很多东西。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
填写完成之后点击确定即可。
配置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证书,点击其它证书导入就可以了。)
然后打开强制 HTTPS
至此所有配置完成。
评论区