环境要求
- CentOS 7.x
- 512M以上内存
一、配置Nginx
1. 添加nginx存储库
yum install epel-release
# 添加源(此步骤可以省略) # 进入 /etc/yum.repos.d/ 目录下 cd /etc/yum.repos.d/ # 新建 vim nginx.repo 文件 vim nginx.repo # 输入模式插入以下数据 [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$ba> search/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key>
2. 安装nginx
yum install nginx
3. 启动Nginx
systemctl start nginx
systemctl restart nginx #重启
4. 验证nginx是否启动成功
ps -ef | grep nginx
5. 设置开机启动
systemctl enable nginx
6. 启动停止Nginx
cd /usr/sbin/
./nginx
./nginx -s stop #此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。
./nginx -s quit #此方式停止步骤是待nginx进程处理任务完毕进行停止。
./nginx -s reload
7. 查看nginx安装位置
rpm -ql nginx
8. 配置location
安装vim命令
yum install vim
修改nginx.conf配置文件
vim /etc/nginx/nginx.conf
修改完后记得重启一下(重启前先配置好SSL证书)
cd /usr/sbin/
./nginx -s reload
nginx.conf
# 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;
# 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;
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name sly.plus;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
proxy_pass http://127.0.0.1:9000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
}
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
# Settings for a TLS enabled server.
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
server_name sly.plus;
root /usr/share/nginx/html;
ssl_certificate "/etc/pki/nginx/sly.plus.cert";
ssl_certificate_key "/etc/pki/nginx/private/sly.plus.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
proxy_pass http://127.0.0.1:9000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
client_max_body_size 10m;
}
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
}
二、安装JDK
1. 查看可用jdk版本
yum -y list java-1.8*
2. 使用yum命令安装openjdk
yum install -y java-1.8.0-openjdk.x86_64
3. 查看jdk安装位置
# yum 安装
which java
# rpm 安装
rpm -ql java-1.8.0-openjdk.x86_64
4. 配置环境变量
a. 执行下面命令打开配置文件
vim /etc/profile
b. 按键盘的i或者Insert键,切换到输入模式
c. 找到文档最后,在unset i的前面一行添加以下内容
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el7_8.x86_64
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
d. 按Esc键退出编辑模式,输入:wq保存并退出
e. 执行下面命令生效环境变量
source /etc/profile
5. 验证是否安装成功
java -version
三、安装Halo
1. 更新软件包
sudo yum update -y
2. 创建Halo用户
# 创建 halo 用户
sudo useradd -m halo
# 直接登录该用户
sudo su halo
注意:除了进阶配置需要使用root权限,其余的均使用Halo用户来操作,使用Halo用户操作的数据均在/home/halo/.halo文件夹,也就是Halo用户的根目录,备份数据时只需要备份整个.halo文件夹即可。
3. 下载配置文件
# 下载配置文件到 ~/.halo 目录
curl -o ~/.halo/application.yaml --create-dirs https://dl.halo.run/config/application-template.yaml
4. 修改配置文件
# 使用 Vim 工具修改配置文件
vim ~/.halo/application.yaml
application.yaml
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://127.0.0.1:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
# username: root
# 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
- 如果需要自定义端口,修改 server 节点下的 port 即可。
- 默认使用的是 H2 Database 数据库,这是一种嵌入式的数据库,使用起来非常方便。需要注意的是,默认的用户名和密码为 admin 和 123456,这个是自定义的,最好将其修改,并妥善保存。
- 如果需要使用 MySQL 数据库,需要将 H2 Database 的所有相关配置都注释掉,并取消 MySQL 的相关配置。另外,MySQL 的默认数据库名为 halodb,请自行配置 MySQL 并创建数据库,以及修改配置文件中的用户名和密码。
- h2 节点为 H2 Database 的控制台配置,默认是关闭的,如需使用请将 h2.console.settings.web-allow-others 和 h2.console.enabled 设置为 true。控制台地址即为 域名/h2-console。注意:非紧急情况,不建议开启该配置。
- server.compression.enabled 为 Gzip 功能配置,如有需要请设置为 true,需要注意的是,如果你使用 Nginx 或者 Caddy 进行反向代理的话,默认是有开启 Gzip 的,所以这里可以保持默认。
- halo.admin-path 为后台管理的根路径,默认为 admin,如果你害怕别人猜出来默认的 admin(就算猜出来,对方什么都做不了),请自行设置。仅支持一级,且前后不带 /。
- halo.cache 为系统缓存形式的配置,可选 memory 和 level,默认为 memory,将数据缓存到内存,使用该方式的话,重启应用会导致缓存清空。如果选择 level,则会将数据缓存到磁盘,重启不会清空缓存。如不知道如何选择,建议默认。
5. 运行Halo
Halo 的整个应用程序只有一个 Jar 包,且不包含用户的任何配置,它放在任何目录都是可行的。需要注意的是,Halo 的整个额外文件全部存放在 ~/.halo 目录下,包括 application.yaml(用户配置文件),template/themes(主题目录),upload(附件上传目录),halo.db.mv(数据库文件)。一定要保证 ~/.halo 的存在,你博客的所有资料可都存在里面。所以你完全不需要担心安装包的安危,它仅仅是个服务而已。
# 下载最新的 Halo 安装包,{{version}} 为版本号,不带 v,更多下载地址请访问 https://halo.run/archives/download.html
wget https://dl.halo.run/release/halo-{{version}}.jar -O halo-latest.jar
# 启动测试
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!
6. 进阶配置
实现以上功能我们只需要新增一个配置文件即可,也就是使用 Systemd 来完成这些工作。
如果当前用户为 halo 用户,则需要退出 halo 用户,进入一个拥有管理员权限的用户下:
# 查看当前登录用户
whoami
# 退出 halo 登录,进入一个有管理员权限的用户
su xxx 或者直接 exit
# 下载 Halo 官方的 halo.service 模板
sudo curl -o /etc/systemd/system/halo.service --create-dirs https://dl.halo.run/config/halo.service
# 修改 halo.service
sudo vim /etc/systemd/system/halo.service
这里需要修改YOUR_JAR_PATH,就是你的包存放的位置,使用Halo用户下载时是在/home/halo
[Unit]
Description=Halo Service
Documentation=https://halo.run
After=network-online.target
Wants=network-online.target
[Service]
User=halo
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 安装包的绝对路径,例如 /www/wwwroot/halo-latest.jar。
- 如果你不是按照上面的方法安装的 JDK,请确保 /usr/bin/java 是正确无误的。
- systemd 中的所有路径均要写为绝对路径,另外,~ 在 systemd 中也是无法被识别的,所以你不能写成类似 ~/halo-latest.jar 这种路径。
- 如何检验是否修改正确:把 ExecStart 中的命令拿出来执行一遍。
service命令:
# 修改 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
四、更新Halo
1. 使用Halo用户
sudo su halo
2. 备份数据
cp -r ~/.halo ~/.halo.bak
3. 备份旧的安装包
mv halo-latest.jar halo-latest.jar.bak
4. 下载最新的安装包
# 下载最新的 Halo 安装包,{{version}} 为版本号,不带 v,更多下载地址请访问 https://halo.run/archives/download.html
wget https://dl.halo.run/release/halo-{{version}}.jar -O halo-latest.jar
5. 测试是否能启动
java -jar halo-latest.jar
6. 重启应用
sudo service halo restart