部署discuss评论系统
1. 环境说明
2. 部署方式
Discuss由两部分组成: 服务端(后端服务) + 客户端(前端页面)。
Discuss的后端服务支持 服务器(Server) 和 无服务器(Serverless) 两种部署方式。因为我买了阿里云的ECS服务器,所以我选择了 服务器部署 方式,这样可以自己完全掌控整个评论功能。
3. 服务端部署
登录你的服务器,然后按照以下步骤进行部署操作。
3.1. 安装node.js
- 安装
# -y表示:在执行apt命令时出现的交互式口令会自动应答"yes"
sudo apt install -y nodejs
- 验证
node -v
npm -v
显示具体的版本号则说明安装成功。
如果npm未安装成功,可以手动执行以下命令来安装:
sudo apt install -y npm
3.2. 初始化Discuss后端项目
# 1. 创建你的Discuss后端代码的存放目录
mkdir -p /home/www/discuss_comment
# 2. 进入目录
cd /home/www/discuss_comment
# 3. 初始化npm
npm init -y
# 4. 安装Discuss
npm install discuss --save
3.3. 创建并编辑 index.js
const discuss = require('discuss')
discuss.server() // 服务器使用
3.4. 创建并编辑 .env 文件
# Discuss environment Config
# 启动的端口号(仅对服务器有用)
DISCUSS_PORT=6870
# Token 加密的密钥字符串([可选]自定义)
DISCUSS_SECRET=discuss
# 数据库连接
# 使用什么数据库
## 目前可选的数据库 [cloudbase, deta, leancloud, mongodb, mysql, postgresql, sqlite]
DISCUSS_DB_TYPE=mysql
# ------ MySQL ------
D_MYSQL_URL=mysql://username:password@host:port/database
# 例子:
# D_MYSQL_URL=mysql://spencer:xxxxxxx@localhost:3306/discuss_comment
把 username:password@host:port/database 替换成你的数据库连接信息。
- 数据库的安装和配置,参见上一章: 《博客建站11 - 安装MySQL并配置子账户》
- MySQL外,其他数据库的配置,参见: .env.example
3.5. 启动服务
node index.js

3.6. 可能遇到的问题
我这边启动服务时遇到以下问题:
3.6.1. 端口占用
问题现象:

问题原因:
可能你启动了多次服务,或者端口号6870已被其他程序占用了。
解决方法:
找到端口被占用的进程,把他kill掉。
# 查看端口被占用的进程
lsof -i :6870
# 杀掉进程
kill -9 PID
3.6.2. No "exports" main defined
问题现象:

问题原因:
可能是因为npm install的时候没有完整安装。
解决方法:
Discuss作者回复:
可以尝试清理以下npm缓存
npm cache clean --force,删除 node_modules 文件夹rm -rf node_modules,然后重新安装依赖npm install。 如果按照以上步骤操作后仍然有错误的话,你可以试试将 index.js 内容改为
// index.js
const discuss = require('./node_modules/discuss/index')
discuss.server()
3.6.3. 部署后浏览器无法访问
检查你的云服务器的端口访问是否被限制,如阿里云的ECS服务器,6870的端口默认是关闭的,需要手动打开。
打开方式如下:
- 登录阿里云 --> 控制台 --> 云服务器ECS --> 实例 --> 安全组。

- 入方向 --> 添加规则 --> 填写要增加的端口号。

3.7. 让Discuss服务在后台一直运行
前面通过 node index.js 启动的服务,只会在当前命令行终端窗口中运行,当命令被中断或终端窗口被关闭,服务就停止了。
但我们的服务是需要服务器一直运行的,所以需要让Discuss服务在后台一直保持运行,可以使用forever工具。
- 下载 forever
# 全局安装
sudo npm install forever -g
# 验证是否安装成功
forever --version
- 启动服务
# 通过forever启动服务
forever start index.js
- forever相关命令
# 查看forever启动的服务
forever list
# 停止pid下的服务
forever stop [pid]
# 停止所有服务
forever stopall
4. 客户端部署
因为我用的Volantis主题,本身就支持Discuss的评论功能,所以前端的配置就会简单很多。
只需要在主题配置文件 _config.volantis.yml 或 themes/volantis/_config.yml(取决于你启用的是哪个配置文件) 中,配置好Discuss的相关参数即可。
comments:
title: <i class='fa-solid fa-comments'></i> 评论
subtitle:
service: discuss
# 可选评论系统 #
...
# Discuss
# https://discuss.js.org
discuss:
serverURLs: http://sunlogging.com:6870
visitStat: true # 是否显示文章阅读数
# https://discuss.js.org/Quick-Start.html#path
5. 初始化管理员账户
- 访问启动的服务地址,因为我的Discuss服务和网站静态页面的服务是部署在同一台ECS服务器的,所以直接访问我的网站域名+Discuss端口号即可:
http://sunlogging.com:6870。

-
输入用户名、密码、邮箱进行管理员账户初始化。
-
账户初始化完毕后你可以在网站上使用评论功能了。
6. 评论管理系统
6.1. 登录管理系统
- 访问Discuss启动的服务地址(如:
http://sunlogging.com:6870),或点击前端评论面板的“设置”按钮。

- 输入用户名、密码登录管理系统。

6.2. 评论管理
点击右上角“管理评论”按钮,进入评论管理页面。

可以对评论进行 删除、评审、置顶 等操作。
6.3. 系统配置
点击右上角“管理配置”按钮,进入系统配置页面。

可以对评论系统进行相关的配置,具体配置说明参见: Discuss配置管理