记录部署评论系统的过程。
1. 简介
- 网站框架:Hugo
- 网站主题:Hugo PaperMod
- 评论系统:Twikoo
- VPS操作系统:Ubuntu 24.04.3 LTS
- 后端部署方式:Docker
备注:配置文件内容由AI生成,请自行检查是否正确。
2. 后端部署
2.1 Docker部署
因为有VPS,我选择了Docker私有部署。
在VPS里安装Docker。参照官方文档,运行下面的命令就可以通过Docker快速部署。
docker run --name twikoo -e TWIKOO_THROTTLE=1000 -p 8080:8080 -v ${PWD}/data:/app/data -d imaegoo/twikoo
在VPS上运行命令curl http://localhost:8080/,测试部署是否成功。出现类似下面的结果,就部署成功了。记录其中的version版本信息,比如我这里是1.7.14,后面部署前端时需要对应这个版本。
{"code":100,"message":"Twikoo 云函数运行正常,请参考 https://twikoo.js.org/frontend.html 完成前端的配置","version":"1.7.14"}
可以注意到,这时候twikoo走http。如果尝试用https访问,访问会失败。接下来配置nginx反向代理,让twikoo评论走https。
2.2 Nginx配置
nginx配置有两个方案。假设博客的域名是<domain>.com,两个方案如下:
- 使用子目录,通过
https://<domain>.com/twikoo/访问twikoo。 - 使用子域名,通过
https://twikoo.<domain>.com/访问twikoo。使用子域名时,需要在DNS服务商里添加记录,把子域名指向VPS的IP地址。
我选用了子域名方案。
创建/etc/nginx/sites-available/twikoo文件,写入下面的内容。需要修改其中的域名、证书密钥文件路径。
# HTTP 自动跳转 HTTPS
server {
listen 80;
server_name twikoo.<domain>.com; # 替换为你的域名
return 301 https://$host$request_uri;
}
# HTTPS 服务器配置
server {
listen 443 ssl http2;
server_name twikoo.<domain>.com; # 替换为你的域名
# 替换为你的真实证书路径
ssl_certificate /path/to/your/certificate.pem;
ssl_certificate_key /path/to/your/private.key;
# 推荐的 SSL 安全配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
# 转发到 Docker 的 8080 端口
proxy_pass http://127.0.0.1:8080;
# 传递客户端真实信息
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
然后运行下面的命令:
# 创建软链接启用配置
sudo ln -s /etc/nginx/sites-available/twikoo /etc/nginx/sites-enabled/
# 检查 Nginx 语法是否正确
sudo nginx -t
# 重载 Nginx
sudo systemctl reload nginx
不出意外的话,nginx配置就完成了。
在命令行输入curl https://twikoo.<domain>.com,或者在浏览器访问https://twikoo.<domain>.com。如果看到“Twikoo 云函数运行正常”之类的信息,说明nginx配置没有问题。
3. 前端部署
修改hugo网站根目录下的配置文件hugo.yaml。添加下面的内容,默认开启全局评论功能。
params:
comments: true
接下来添加twikoo前端代码。在网站根目录下创建layouts/partials/comments.html文件,添加下面的内容。需要保证其中的版本信息和前面部署后端时的版本信息一致。还需要把域名改成自己的域名。
<div class="post-comments">
<!-- 放置 Twikoo 评论框的容器 -->
<div id="tcomment"></div>
<!-- 引入 Twikoo 的前端 JS,版本号与你的后端保持一致 -->
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/twikoo.all.min.js"></script>
<script>
twikoo.init({
// 将此处替换为你刚才部署成功的域名
envId: 'https://twikoo.<domain>.com',
el: '#tcomment',
// 语言配置(默认与你的浏览器一致,若想固定写死可以取消下面注释)
// lang: 'zh-CN',
});
</script>
</div>
<!-- 下面是一小段可选的 CSS,让评论框与 PaperMod 主题更协调 -->
<style>
.post-comments {
margin-top: 2rem;
padding-top: 2rem;
border-top: 1px solid var(--border);
}
</style>
到这里,twikoo博客的前端、后端部署都完成了。在网站根目录下运行命令hugo,就可以更新网页内容、添加评论功能。