博客全家桶
halo
halo
是一个部署简单,操作方便,生态比较完善的一个开源博客~
部署方式又好几种,这里推荐使用 docker
的方式部署。
准备数据库
halo
的运行依赖于数据库。所以需要提前准备。
当然,它也支持一件运行数据库+本体。不推荐这种做法。
我使用的是 mysql
。
dockerfile
文件准备
如果你跟我一样,使用 docker compose
的话,可以直接复制我的 dockerfile
文件
yaml
version: "3"
services:
halo:
image: halohub/halo:2.11
container_name: halo
restart: on-failure:3
network_mode: "host"
volumes:
- ./halo2:/root/.halo2 # 配置文件映射到外部,存到当前目录下。需要提前准备。
command:
# 修改为自己已有的 MySQL 配置
- --spring.r2dbc.url=r2dbc:pool:mysql://localhost:3306/halo
- --spring.r2dbc.username=xxxxx
- --spring.r2dbc.password=xxxxxxx
- --spring.sql.init.platform=mysql
# 外部访问地址,请根据实际需要修改
- --halo.external-url=https://1love.pub/
# 端口号 默认8090
- --server.port=8090
开始运行
使用 docker compsoe
执行文件
bash
docker compose up -d
运行成功后,可以使用
bash
docker compose logs -f
查看日志。
访问站点
假设你的 ip 是 192.168.0.1
那访问地址:http://192.168.0.1:8090
这就是后台的地址了。
你可以在后台进行 评论审核、文章发布等操作。
配置域名
当然,以上操作其实已经安装完成了一个简单的博客。
但是访问起来不太方便 111.222.333.444:xxxx
看到这种域名就没有访问的欲望了
所以,你需要一个域名~
各大厂商都有域名服务,大部分四位数以上的地址其实都很便宜。
有了域名之后。就可以对你的项目进行 反向代理
因为我们的项目是用 docker 进行启动的,直接配置 域名也支持。看个人喜好,我为了配置 ssl 所以选择了使用反向代理~
nginx 安装
反向代理的前提是你拥有一个 nginx,所以你需要在服务器安装。
这里推荐使用一些服务器运维面板: 宝塔、1pane...
这些服务器运维面板比较方便,一键安装各种环境~
这里以宝塔为例:
这是我们启动的 docker 服务,也就是 halo 本体
我们点击到网站目录,点击添加
这里看图,填写域名。 下面php 版本可以不选择,直接使用纯静态。
反向代理
点击网站,在弹窗中选择反向代理。点击添加,按图所示即可~
此时域名已经可以正常访问了~
图床
写文章,必定是涉及到图片存储。
如果说把图片直接上传到halo中,会有一个问题,一般的云服务器其实内存都不是那么的大~
比如我的,一共也才30G。
所以,这个时候需要一个图床。
这个图床呢,是本地的图床。
我在本地搭建了一个nas服务器。用来存储影视、图片等资料
这个nas,4T。便宜好使~
搭建图床的话,我有以下两个建议
- 兰空(
LSKY PRO
) chevereto
chevereto
目前 chevereto
最新版,不支持中文。而且对php版本有要求,还有些拓展之类的。
不太符合我的预期。要么就安装低版本的。
兰空
使用 Laravel 框架开发。全中文,支持对接 S3
、腾讯Cos、阿里oos、七牛等第三方存储,十分方便的啦。
所以,我选择的是兰空作为图床。
lsky pro 安装
lsky-org/lsky-pro: ☁️兰空图床(Lsky Pro) - Your photo album on the cloud. (github.com)
直接进Release下载最新版即可。
关于兰空的安装,这里提供官方安装文档
基础配置
安装完成之后,是这个样子
我们需要对他进行一点点的配置
系统设置
因为我们这个图床,仅仅是给自己使用的,并不需要给别人使用。所以,这里关闭游客上传、注册。
如果开了游客上传、注册,十分不好搞。如果别人上传点奇奇怪怪的东西,就烂掉了。。当然,你也可以配置审核策略
审核策略
是的,兰空支持腾讯云、阿里云以及Nefwjs做审核。我不太推荐,我想省钱~并不想去为了这个花钱。
常规设置
因为是给自己使用的,所以直接给上传数量、文件大小、拉满!
关联typora
图床配置成功了,怎么让我在写md文档的时候,直接上传到图床,而不是手动上传,并复制出链接呢?
请看VCR:
对象存储
已经有图床了,为什么还要搞个对象存储?岂不是多此一举?
我只能说:生命在于搞事~
开玩笑的。
图床有个很致命的缺点,比如我,其实我更喜欢直接在网页,或者vscode中直接编写文档。
此时图床就不太爽利了。。
于是乎,就萌生了搞个对象存储的想法。
当然,还是在本地搭建的,没花钱。
minIO
我看了下,只有这一个选项。
安装minIO
依然是熟悉的配方,docker
bash
docker run -p 9000:9000 -p 9001:9001 --name minio \
-d --restart=always \
-e "MINIO_ACCESS_KEY=111" \ # 账号
-e "MINIO_SECRET_KEY=222" \ # 密码
-v /data/minio-data:/data \ # 对应的数据映射
-v /data/minio-config:/root/.minio \ # 他也是!
minio/minio server /data --console-address ":9001" --address ":9000" # 看下文!
server /data
表示文件存储在/data下- 9001 代表的是web console的端口。 当docker启动完成后,可以使用 ip:9001访问
- 9000 可以理解是向外暴露的接口端口
创建accesskey
创建的时候会有弹窗,让你把key下载到本地。此时可以下载下来,保存一波~
创建存储桶
创建完成之后记得把这个桶的权限改成public。
不然是加载不了的哦~
配置https
因为我们的博客站点是https的,所以我们的对象存储,访问图片的地址也应该是https的,不然没法加载。
但是我们的服务是docker启动的,怎么处理?
还是老配方,使用反向代理。
但是要记住,9001和9000端口,不要代理错了。
我们只需要代理9000端口就行了。
因为我们上传完文件,使用 域名+桶名称+文件名称=>图片,是使用的9000端口。
比如本站的图片:io.1love.pub/38d5/1.png
其实就是代理的原始ip的9000端口~
在web编辑器中配置
需要前置一个插件
需要先安装好这个插件,再进行以下操作~😕
这个地方一定要注意!
一定是 域名+桶名!
然后就可以上传图片试试了~
如果失败了,需要去看docker的日志。
vscode
这里需要安装一个halo的vscode插件
Halo - Visual Studio Marketplace
安装完成后,根据操作提示,进行文章同步、上传、图片上传等操作~
三十八度五 欢迎访问~