最近在研究轻量级博客系统的时候,发现了一个挺有意思的项目——Monolith。听名字就感觉很有极客范儿,主打的就是一个“单文件、零依赖”的纯粹体验。对于折腾惯了 WordPress 这种庞然大物,或者觉得 Hexo 配置起来太麻烦的朋友来说,Monolith 可能会是一股清流。今天就来详细聊聊这个系统,顺带给想上手的兄弟们一份保姆级的部署参考。

为什么选择 Monolith?

Monolith 博客系统概念图

Monolith 博客系统主打单文件、零依赖的极简风格。

现在的静态博客生成器虽然多,但很多都需要 Node.js、Python 或者 Ruby 环境,光是配置环境就能劝退不少人。Monolith 的设计初衷非常简单粗暴——它就是一个单独的可执行文件。不管你是 Windows、macOS 还是 Linux,只要下载对应的二进制文件,给它执行权限,跑起来就是一个完整的博客系统。

它的核心优势在于:

  1. 极致轻量:没有复杂的依赖关系,不依赖数据库,所有数据都存在 Markdown 文件里。
  2. 易于部署:扔到 VPS 上就能跑,甚至放在本地也能直接预览,配合 Nginx 做反向代理极其方便。
  3. 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 配置示意图

配置 Nginx 作为反向代理,将端口 80 的请求转发给 Monolith。

这时候访问 http://你的服务器IP:8080,应该就能看到博客首页了。

3. 配置 Nginx 反向代理

为了不裸奔在公网上,我们用 Nginx 把 80 端口转发给 Monolith。

新建配置文件:

sudo nano /etc/nginx/sites-available/monolith

填入以下内容(记得替换域名):

Systemd 服务配置代码

创建 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,体验一下回归本源的写作乐趣。

标签: none

评论已关闭