Linux服务器部署halo

6分钟搭建halo视频

前言

halo博客系统是由Java语言开发的,因此Halo的整个应用程序只有一个Jar 包,且不包含用户的任何配置,它放在任何目录都是可行的。所以搭建过程非常简单。下面就开始吧。
环境要求
本次搭建环境CentOS 7.6 1核2G的华为云服务器,在开始之前,最好先到域名服务商解析域名,设置 A 记录并指向服务器的 IP 地址,并确保已经正确解析以及没有被工信部拦截(国内服务器需备案),你可以在本地使用 Ping 命令检查域名是否已经正确解析到了服务器的 IP 地址。以方便在安装过程中为域名配置 SSL 证书。

一,服务器配置

1,更新软件包

确保服务器的软件包已经是最新的

sudo yum update -y

image.png

2,安装 Java 运行环境

# 安装 OpenJDK 软件包
sudo yum install java-1.8.0-openjdk -y

# 检测是否安装成功
java -version

image.png

image.png

二,安装 Halo

1,下载配置文件

考虑到部分用户的需要,可能需要自定义比如端口等设置项,我们提供了公共的配置文件,并且该配置文件是完全独立于安装包的。当然,你也可以使用安装包内的默认配置文件,但是安装包内的配置文件是不可修改的。请注意:配置文件的路径为 ~/.halo/application.yaml。

下载配置文件到 ~/.halo 目录

curl -o ~/.halo/application.yaml --create-dirs https://raw.githubusercontent.com/halo-dev/halo-common/master/application-template.yaml

image.png

修改配置文件

完成上一步操作,我们就可以自己配置 Halo 的运行端口,以及数据库相关的配置了。

Vim命令修改配置文件

vim ~/.halo/application.yaml

打开之后我们可以看到

server:
  port: 8090
spring:
  datasource:
    type: com.zaxxer.hikari.HikariDataSource

    # H2 Database 配置,如果你需要使用 MySQL,请注释掉该配置并取消注释 MySQL 的配置。
    driver-class-name: org.h2.Driver
    url: jdbc:h2:file:~/.halo/db/halo
    username: admin
    password: 123456

    # MySQL 配置,如果你需要使用 H2Database,请注释掉该配置并取消注释上方 H2Database 的配置。
  #    driver-class-name: com.mysql.cj.jdbc.Driver
  #    url: jdbc:mysql://127.0.0.1:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
  #    username: root
  #    password: 123456

  # H2 Database 的控制台相关配置,如果你使用的是 MySQL ,请注释掉下方内容。
  h2:
    console:
      settings:
        web-allow-others: false
      path: /h2-console
      enabled: false

如果需要自定义端口,修改 server 节点下的 port 即可。默认使用的是 H2 Database 数据库,这是一种嵌入式的数据库,使用起来非常方便。需要注意的是,默认的用户名和密码为 admin 和 123456,这个是自定义的,最好将其修改,并妥善保存,我这里设置默认。

三,运行 Halo

下载Halo安装包

wget http://halo.ryanc.cc/release/halo-latest.jar -O halo-latest.jar

启动测试

java -jar halo-latest.jar

image.png

出现下面2个地址说明启动成功

image.png

在华为云控制台安全组开放8090端口

image.png

浏览器输入IP:端口就可以访问了

image.png

提示
以上的启动仅仅为测试 Halo 是否可以正常运行,如果我们关闭 ssh 连接,Halo 也将被关闭。要想一直处于运行状态,请继续看下面的教程。

上面我们已经完成了 Halo 的整个配置和安装过程,接下来我们对其进行更完善的配置,比如:需要开机自启?,更简单的启动方式?
实现以上功能我们只需要新增一个配置文件即可,也就是使用 Systemd 来完成这些工作。

四,下载 Halo 官方的 halo.service 模板

sudo curl -o /etc/systemd/system/halo.service --create-dirs https://raw.githubusercontent.com/halo-dev/halo-common/master/halo.service

image.png

下载完成之后,我们还需要对其进行修改

1,修改 halo.service

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

可以看到:

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

[Service]
Type=simple
ExecStart=/usr/bin/java -server -Xms256m -Xmx256m -jar JAR_PATH
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=always
StandOutput=syslog

StandError=inherit

[Install]
WantedBy=multi-user.target

image.png

参数:
-Xms256m:为 JVM 启动时分配的内存,请按照服务器的内存做适当调整,512 M 内存的服务器推荐设置为 128,1G 内存的服务器推荐设置为 256,默认为 256。
-Xmx256m:为 JVM 运行过程中分配的最大内存,配置同上。
JAR_PATH:Halo 安装包的绝对路径,例如 /www/wwwroot/halo-latest.jar。
注意:
如果你不是按照上面的方法安装的 JDK,请确保 /usr/bin/java 是正确无误的。

2,刷新 Systemd

sudo systemctl daemon-reload

image.png

3,使 Halo 开机自启

sudo systemctl enable halo

image.png

启动 Halo

sudo service halo start

image.png

# 重启 Halo
sudo service halo restart
# 停止 Halo
sudo service halo stop

4,更新

1,停止运行

sudo service halo stop

2,下载最新的 Halo 安装包替换旧的包

wget http://halo.ryanc.cc/release/halo-latest.jar -O halo-latest.jar

3,启动

service halo start

4,查看 Halo 的运行状态,如下图

sudo service halo status

image.png

五,配置域名访问-使用 Caddy 进行反向代理

1,安装 Caddy 软件包

yum install caddy -y

2,配置 Caddy
下载 Halo 官方的 Caddy 配置模板

curl -o /etc/caddy/conf.d/Caddyfile.conf --create-dirs https://raw.githubusercontent.com/halo-dev/halo-common/master/Caddyfile

下载完成之后,我们还需要对其进行修改,使用 vim 编辑 Caddyfile

vim /etc/caddy/conf.d/Caddyfile.conf

打开之后我们可以看到

https://www.simple.com {
 gzip
 tls xxxx@xxx.xx
 proxy / localhost:port {
  transparent
 }
}

请把 https://www.simple.com 改为自己的域名。tls 后面的 xxxx@xxx.xx改为自己的邮箱地址,这是用于自动申请 SSL 证书用的。需要注意的是,不需要你自己配置 SSL 证书,而且会自动帮你续签,localhost:port请将 port 修改为 Halo 的运行端口,默认为 8090,修改完成之后启动 Caddy 服务即可。

3,开启自启 Caddy 服务

systemctl enable caddy

启动 Caddy

service caddy start

停止运行 Caddy

service caddy stop

重启 Caddy

service caddy restart

查看 Caddy 运行状态

service caddy status

注意:
如果 Caddy 启动出现诸如 [/usr/lib/systemd/system/caddy.service:23] Unknown lvalue 'AmbientCapabilities' in section 'Service' 这样的问题,请使用 yum update -y 更新系统。然后再使用 service caddy restart 重启,已知 CentOS 7.3 会出现该问题。

六,进阶设置

多网址重定向到主网址,比如访问 simple.com 跳转到 www.simple.com 应该怎么做呢?

使用 vim 编辑 Caddyfile

vim /etc/caddy/conf.d/Caddyfile.conf

打开之后我们在原有的基础上添加以下配置:

https://simple.com {
  redir https://www.simple.com{url}
}

https://simple.comhttps://www.simple.com{url} 修改为自己需要的网址就行了。比如我要求访问 zzjava.xyz 跳转到 www.zzjava.xyz,完整的配置如下:

http://ryanc.cc {
  redir https://www.ryanc.cc{url}
}
https://www.ryanc.cc {
  gzip
  tls i@ryanc.cc
  proxy / localhost:8090 {
    transparent
  }
}

最后我们重启 Caddy 即可。到这里,关于 Caddy 反向代理的配置也就完成了,现在你可以访问一下自己的域名,并进行 Halo 的初始化了。

注:本文演示用的是H2数据库,如果更换MySQL数据库,需要在服务器安装MySql(没有安装mysql情况下),具体安装配置参看我的另一篇文章:服务器安装mysql及配置

官方文档详见:https://halo.run