halo博客搭建
前言:感谢halo官方,感谢那些有关halo博客搭建相关的文章,谢谢分享!
服务器环境:ubuntu 1804
一、安装java环境
更新软件包
#确保服务器的软件包是最新的
apt-get update -y
安装java环境
#安装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配置文件夹的存在性,并包含所有博客相关的材料。
该Halo程序作为一个单独的可执行文件存储在任意目录中,并不包含用户的配置参数设置。因此,在任何位置上放置这个可执行文件都不会影响到其安全性能。由于它只是一个服务程序的存在,并不会对系统造成任何潜在威胁或风险
下载halo安装包
#下载最新的halo-latest.jar
wget http://halo.ryanc.cc/release/halo-latest.jar -O halo-latest.jar
测试halo
#启动测试
Java -jar halo-latest.jar
看到halo has started successfully!说明配置正确。
开机自启halo
以上测试完成后,在SSH连接被关闭的情况下
#下载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
我们发送完该域名后,在收到返回的IP地址时(此IP地址与我的服务器端口绑定),完成域名解析过程。
开放端口
在阿里云实例列表-更多-网络和安全组-安全组设置-配置防火墙规则,在入口方向修改防火墙规则,并开放服务器的所有入站流量,并指定允许通过的端口号为80、443和8090
安装nginx
#安装nginx
apt-get install nginx -y
访问http://服务器IP地址,出现nginx页面则表示正常
配置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页面则表示正常
五、配置SSL证书
#去阿里云申请好证书后,上传至服务器
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页面则正确
六、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的搭建全部完成了!
