Monolith 博客系统部署教程与使用体验分享
最近在研究轻量级博客系统的时候,发现了一个挺有意思的项目——Monolith。听名字就感觉很有极客范儿,主打的就是一个“单文件、零依赖”的纯粹体验。对于折腾惯了 WordPress 这种庞然大物,或者觉得 Hexo 配置起来太麻烦的朋友来说,Monolith 可能会是一股清流。今天就来详细聊聊这个系统,顺带给想上手的兄弟们一份保姆级的部署参考。
为什么选择 Monolith?
Monolith 博客系统主打单文件、零依赖的极简风格。
现在的静态博客生成器虽然多,但很多都需要 Node.js、Python 或者 Ruby 环境,光是配置环境就能劝退不少人。Monolith 的设计初衷非常简单粗暴——它就是一个单独的可执行文件。不管你是 Windows、macOS 还是 Linux,只要下载对应的二进制文件,给它执行权限,跑起来就是一个完整的博客系统。
它的核心优势在于:
- 极致轻量:没有复杂的依赖关系,不依赖数据库,所有数据都存在 Markdown 文件里。
- 易于部署:扔到 VPS 上就能跑,甚至放在本地也能直接预览,配合 Nginx 做反向代理极其方便。
- Markdown 原生:对于喜爱用 Markdown 写作的朋友来说,这简直是刚需,所见即所得的体验非常顺滑。
实战部署:从零开始
既然是干货分享,咱们直接上手。这里假设你手里已经有一台 Linux 服务器(比如 1C1G 的这种小鸡就够用了)。
1. 准备工作
首先,你需要安装 Nginx。当然,如果你想暴利测试,不用 Nginx 直接跑也行,但为了 HTTPS 和域名访问,Nginx 还是标配。
# Ubuntu/Debian
sudo apt update
sudo apt install nginx -y
2. 下载与运行
去 Monolith 的官方 Releases 页面找到最新的 Linux 版本下载链接。假设我们下载到 /opt/monolith 目录下。
在 Linux 终端中下载并配置 Monolith 二进制文件的过程。
mkdir -p /opt/monolith
cd /opt/monolith
wget [下载链接] -O monolith
chmod +x monolith
在启动之前,建议先新建一个目录用来存放你的 Markdown 博客文章。
mkdir posts
# 创建一篇测试文章
echo "# Hello World\n\n这是我的第一篇 Monolith 博客。" > posts/hello.md
现在尝试启动(默认端口通常是 8080,具体看官方文档说明):
./monolith --port 8080 --content-dir ./posts
配置 Nginx 作为反向代理,将端口 80 的请求转发给 Monolith。
这时候访问 http://你的服务器IP:8080,应该就能看到博客首页了。
3. 配置 Nginx 反向代理
为了不裸奔在公网上,我们用 Nginx 把 80 端口转发给 Monolith。
新建配置文件:
sudo nano /etc/nginx/sites-available/monolith
填入以下内容(记得替换域名):
创建 Systemd 服务文件以实现 Monolith 的后台运行和开机自启。
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
启用配置并重启 Nginx:
sudo ln -s /etc/nginx/sites-available/monolith /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
如果需要 HTTPS,再套个 Certbot 的证书就完美了。
4. 进阶:守护进程与后台运行
直接 ./monolith 关掉 SSH 就挂了,推荐用 Systemd 托管。
sudo nano /etc/systemd/system/monolith.service
写入:
[Unit]
Description=Monolith Blog Service
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/monolith
ExecStart=/opt/monolith/monolith --port 8080 --content-dir /opt/monolith/posts
Restart=on-failure
[Install]
WantedBy=multi-user.target
启动并设为开机自启:
sudo systemctl daemon-reload
sudo systemctl start monolith
sudo systemctl enable monolith
常见问题与解决方案
在折腾过程中,可能会遇到一些坑,这里稍微提一下:
- 端口占用:如果 8080 被占用了,在启动参数里改成别的端口就行。检查端口可以用
netstat -tulpn。 - 权限问题:确保
monolith文件有执行权限,且存放文章的目录有读权限。 - 文章不显示:检查 Markdown 文件的后缀名是否正确,以及文件内容格式是否符合规范。Monolith 对纯文本非常友好,但复杂的 Markdown 语法建议先测试渲染效果。
总结
Monolith 是一个非常适合“极简主义者”或者技术博主玩的玩具。它没有后台管理界面,没有复杂的插件生态,甚至没有数据库,它就是你和文字之间的那座最简单的桥梁。如果你厌倦了维护繁重的 CMS,或者只是想找个地方安放你的技术笔记,不妨试试 Monolith,体验一下回归本源的写作乐趣。
评论已关闭