一个完整的博客,怎么能少的了评论系统呢。评论的实现已经有许许多多的方法了,挑来挑去,还是选择了Waline。
一开始我是采用官方推荐的LeanCloud+Vercel的方式进行部署的,结果步骤全部走完后才发现Vercel已经在国内被墙了,不科学根本上不去😇。总不能要求用户还要开梯子才能评论吧,所幸官方提供了其他的部署方式,因为我才买了自己的服务器~~(不榨干怎么行呢)~~,所以就选择本地部署+SQLlite的方式了。
# 部署步骤
# 安装node.js
由于Waline的服务端是由js写的,所以需要安装node.js
-
在nodejs中文网找到需要的版本,选择阿里云镜像,将下载链接复制下来
-
连接服务器,选择nodejs的安装目录,这里我安装在
/usr/local/bin/
1
cd /usr/local/bin/
-
下载安装包到本地
1
wget https://npm.taobao.org/mirrors/node/v14.17.5/node-v14.17.5-linux-x64.tar.gz
-
解压
1
tar -xvf node-v14.17.5-linux-x64.tar.gz
-
重命名目录
1
mv node-v14.17.5-linux-x64 nodejs
-
添加目录到系统变量
1 2
cd /etc/profile.d vim custom.sh
在文件末尾添加
export PATH=$PATH:/usr/local/bin/nodejs/bin
-
测试,输入下面3条命令,如果不报错则安装成功。
1 2 3
node -v npm version npx -v
-
(可选)安装cnpm
1
npm install -g cnpm --registry=https://registry.npm.taobao.org
# 安装Waline服务端
-
安装waline的服务端
1
npm install -g @waline/vercel
-
配置数据库。这里我采用的是SQLite,只需要下载 waline.sqlite 文件至合适的位置。
其他的数据库可以看官方文档来配置。
-
配置环境变量。
这里我选择新建
waline.sh
,方便日后维护。1 2 3 4
cd /etc/profile.d vim waline.sh export SQLITE_PATH=/home/luobo export JWT_TOKEN=eqdVMaEwd
- SQLITE_PATH:表示SQLite文件的位置。
- JWT_TOKEN:随机一串字符串就行。
-
启动模块
1 2
cd /usr/local/bin/nodejs/lib node node_modules/@waline/vercel/vanilla.js
# 配置nginx反代
|
|
# 在hugo中启用Waline
由于我用的主题已经支持Waline评论,所以只需要填入serverURL
就行了。
# 添加QQ推送(可选)
官方提供了四种通知方法,分别为邮箱、微信、QQ、Telegram。
邮箱基本不会去看,Telegram没科学也上不去,微信由于是走的Server酱,没有捐赠一天就支持5条消息。
最终还是决定采用Qmsg 酱。
注册就不在这展开了,具体写一下环境变量的配置。
|
|
# 踩坑
本以为启用评论是一件很简单的事,结果花了整个下午加晚上,踩了好多好多坑。在这里就把我踩的坑记录下来,避免之后出现一样的问题。
-
npm install -g @waline/vercel
报错使用
cnpm
进行安装2021/10/21更新:
更新系统后再尝试安装无论是
npm
还是cnpm
都无法安装,故使用Docker进行安装和运行1 2 3 4 5 6 7 8 9 10 11 12
docker run -d \ -e SQLITE_PATH=/data \ -e JWT_TOKEN=xxx \ -e QMSG_KEY=xxxx \ -e QQ_ID=123 \ -e AUTHOR_EMAIL=xxx@xx.com \ -e SITE_NAME=Blog \ -e SITE_URL=lbqaq.top \ -p 8360:8360 \ -v /home/admin/waline:/data \ --name=waline \ lizheming/waline
-
想使用
lbqaq.top/waline/
这样的链接来设置服务端直接报404错误,还是选择上文中的子域名方法
-
nginx提示没找到http2模块
在安装nginx时加上
--with-http_v2_module
如果已经安装好了,可以重新安装一遍 -
设置了
server_name waline.lbqaq.top
还是跳转首页增加一个默认的server,将所有不匹配的链接阻止
1 2 3 4 5
server { listen 80 default_server; server_name _; return 444; }
-
nginx配置不生效
如果配置没有问题,除了
nginx -s reload
还可以尝试重启nginx