前言:感谢halo官方,感谢那些有关halo博客搭建相关的文章,谢谢分享!
服务器环境:ubuntu 1804
#确保服务器的软件包是最新的
apt-get update -y
#安装openJRE
apt-get install openjdk-8-jre
#验证JRE是否安装成功
java -version
#配置文件内容解释
server:
port: 8090 #port后面可以自定义端口
# Gzip的功能设置,如果采用了nginx反向代理,默认开启了gzip,所以这里可以保持默认
compression:
enabled: false
spring:
datasource:
# H2 数据库配置
driver-class-name: org.h2.Driver
url: jdbc:h2:file:~/.halo/db/halo
username: ******** #修改数据库用户名
password: ******** #修改数据库密码
# H2数据库控制台配置
h2:
console:
settings:
web-allow-others: false
path: /h2-console
enabled: false
halo:
#后台管理的根路径,默认为admin
admin-path: admin
# 系统缓存形式配置,可选memory或者level,默认memory,将数据缓存到内存,使用该方式的话,重启应用会导致缓存清空。如果选择level,则会将数据缓存到磁盘,重启不会清空缓存,如果不知道如何选择,建议默认
cache: memory
Halo的整个额外文件全部存放在~/.halo目录下。一定要保证~/.halo目录的存在,博客的所有资料都在其中。
Halo安装包(halo的整个应用程序是一个jar包,且不包含用户的任何配置)放在任何目录都是可行的,无需担心该安装包的安危,因为它仅仅是个服务而已
#下载最新的halo-latest.jar
wget http://halo.ryanc.cc/release/halo-latest.jar -O halo-latest.jar
#启动测试
Java -jar halo-latest.jar
看到halo has started successfully!说明配置正确。
以上测试完成后,如果关闭SSH连接,那么halo也将被关闭,如果想要服务器常年开机自启halo,那么需要借助linux系统的systemd程序来完成该项任务
#下载halo官方制定好的halo.service模板
curl -o /etc/systemd/system/halo.service --create-dirs http://halo.ryanc.cc/config/halo.service
#修改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 YOUR_JAR_PATH
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=always
StandOutput=syslog
StandError=inherit
[Install]
WantedBy=multi-user.target
主要修改的地方就是YOUR_JAR_PATH,这里填写halo-latest.jar的绝对路径
#修改完halo.service文件之后,需要刷新systemd
Systemctl daemon-reload
#halo开机自启
Systemctl enable halo.service
#halo运行状态
service halo status
IP+端口测试访问
前提:
确保域名已经成功解析到服务器IP,并确认服务器是否需要备案
检查服务器上的80、443、8090端口是否开放
比如我的域名:www.epiol.top
我们ping完该域名后,返回的IP地址是我的服务器IP地址,那么域名解析就完成了
在阿里云实例列表-更多-网络和安全组-安全组设置-配置防火墙规则,在入方向更改规则,允许任何IP访问服务器的80、443、8090端口
#安装nginx
apt-get install nginx -y
访问http://服务器IP地址,出现nginx页面则表示正常
#修改nginx虚拟主机配置文件
cd /etc/nginx/sites-available/default
修改内容:
server {
listen 80 ;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name 域名;
}
#检查配置是否错误
nginx -t
#重载nginx配置
nginx -s reload
访问http://域名,出现nginx页面则表示正常
#去阿里云申请好证书后,上传至服务器
scp .pem文件绝对路径 root@服务器IP:/root
scp .key文件绝对路径 root@服务器IP:/root
#将证书放入你想放的目录中
mv .pem文件 /etc/ssl/certs/.pem文件
mv .key文件 /etc/ssl/private/.key文件
#修改虚拟主机配置文件
server {
listen 443 ssl;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name 域名;
ssl_certificate /etc/ssl/certs/.pem文件;
ssl_certificate_key /etc/ssl/private/.key文件;
}
#重复检查配置是否错误和重载nginx配置
访问https://域名,出现nginx页面则正确
#修改虚拟主机配置文件
server {
listen 80 ;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name 域名;
location / {
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;
proxy_pass http://127.0.0.1:8090/;
}
rewrite ^(.*) https://$host$1 permanent; //重定向到https
}
server {
listen 443 ssl;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name 域名;
ssl_certificate /etc/ssl/certs/.pem文件;
ssl_certificate_key /etc/ssl/private/.key文件;
location / {
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;
proxy_pass http://127.0.0.1:8090/; //跳转到8090端口
}
}
访问域名,直接到达halo博客初始化页面,至此halo的搭建全部完成了!
我的博客,欢迎访问!