一、服务器
本文是选择腾讯云,可根据需求进行选择
二、域名
在腾讯云上购买,域名购买好还要备案,备案过程会有几天审核,具体这里就不细说
三、宝塔面板
本文选择了宝塔linux面板,可根据需求进行选择
安装完后,有个推荐安装套餐,本文选择了LNMP+极速安装,以后有其他需要得化也可以在软件管理修改
四、安装Docker
(一)安装Docker管理
在宝塔界面安装docker,安装后就可以安装halo了
(二)安装官方文档步骤,使用远程工具和Docker部署Halo
官方文档-使用 Docker 部署 Halo
创建工作目录
mkdir ~/.halo && cd ~/.halo
下载示例配置文件到【工作目录】
wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml
编辑配置文件,配置数据库或者端口等,如需配置请参考 配置参考
vim application.yaml
Halo默认是H2数据库,但是主机安装过MySQL,所以使用MySQL数据库。
【application.yaml】中注释掉H2数据库配置:
#spring:
# datasource:
# driver-class-name: org.h2.Driver
# url: jdbc:h2:file:~/.halo/db/halo
# username: admin
# password: 123456
# h2:
# console:
# settings:
# web-allow-others: false
# path: /h2-console
# enabled: false
并且取消掉Mysql相关注释:
spring:
datasource:
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 #需要更改为MySQL用户名
password: 123456 #需要更改为MySQL密码
Halo的MySQL数据库要求:
版本:5.7 +
字符集(Character Set):utf8mb4
排序规则(Collate):utf8mb4_bin
存储引擎:InnoDB
创建数据库halodb
(1)方法一:采用命令创建数据库halodb
create database halodb character set utf8mb4 collate utf8mb4_bin;
(2)方法二:在宝塔面板上创建数据库halodb
至此,数据库halodb创建成功。
拉取最新的 Halo 镜像
docker pull halohub/halo:1.5.2
创建容器
如果使用H2数据库,则按照官方文档步骤
因为使用MySQL数据库,需要更改容器的网络配置:从零部署halo博客
docker run -it -d --net host --name halo -p 8090:8090 -v ~/.halo:/root/.halo --restart=unless-stopped halohub/halo:1.5.2
-it: 开启输入功能并连接伪终端
-d: 后台运行容器
-net,指定容器的网络配置:
–net=bridge 这个是默认值,连接到默认的网桥。
–net=host 容器使用本地主机的网络,它拥有完全的本地主机接口访问权限
–net=container:NAME_or_ID 让 Docker 使用其他容器的网路,共享IP和PORT等网络资源,两者进程可以直接通过 lo 环回接口通信
–net=none 容器使用自己的网络,但是不进行网络配置,之后用户可以自行配置
–name: 为容器指定一个名称
-p: 端口映射,格式为 主机(宿主)端口:容器端口 ,可在 application.yaml 配置。
-v: 工作目录映射。形式为:-v 宿主机路径:/root/.halo,后者不能修改。
–restart: 建议设置为 unless-stopped,在 Docker 启动的时候自动启动 Halo 容器。
官方论坛上更多关于MySQL的问题:Halo社区
安装引导界面
http://ip:端口号,端口号默认8090,这里需要在云服务器和宝塔面板上都开放这个端口。
五、配置反向代理
官方文档:与宝塔面板配合使用
点击左侧的【网站】菜单项,点击【添加站点】按钮。
需要填写的表单信息如下:
域名:填写您已经解析到当前服务器公网 IP 的域名。
PHP版本:纯静态
填写完成之后点击【提交】按钮即可。
设置 SSL
可选择【宝塔 SSL】或者【Let’s Encrypt】进行证书申请。
需要开启右上角的【强制 HTTPS】。
修改配置文件
(1)在根节点添加:
upstream halo {
server 127.0.0.1:8090;
}
其中的 8090 为 Halo 的运行端口,请按需修改。
(2)在 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;
}
(3)修改 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;
}
(4)修改 server 节点中的 location ~ .*\.(js|css)?$节点:
location ~ .*\.(js|css)?$
{
proxy_pass http://halo;
expires 12h;
error_log /dev/null;
access_log off;
}
(5)完整配置文件示例(仅包含关键部分):
upstream halo {
server 127.0.0.1:8090;
}
server
{
...
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
proxy_pass http://halo;
expires 30d;
error_log /dev/null;
access_log off;
}
location ~ .*\.(js|css)?$
{
proxy_pass http://halo;
expires 12h;
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;
}
...
}
六、Halo初始化
访问网站地址,比如:blog.aiwan.ch,进行初始化。
七、服务器开机自启动Docker
systemctl enable docker
至此,Halo博客简单搭建完成了。
评论区