Featured image of post 为博客添加评论系统

为博客添加评论系统

记录Waline的部署过程和踩坑

一个完整的博客,怎么能少的了评论系统呢。评论的实现已经有许许多多的方法了,挑来挑去,还是选择了Waline。

一开始我是采用官方推荐的LeanCloud+Vercel的方式进行部署的,结果步骤全部走完后才发现Vercel已经在国内被墙了,不科学根本上不去😇。总不能要求用户还要开梯子才能评论吧,所幸官方提供了其他的部署方式,因为我才买了自己的服务器~~(不榨干怎么行呢)~~,所以就选择本地部署+SQLlite的方式了。

# 部署步骤

# 安装node.js

由于Waline的服务端是由js写的,所以需要安装node.js

  1. nodejs中文网找到需要的版本,选择阿里云镜像,将下载链接复制下来

  2. 连接服务器,选择nodejs的安装目录,这里我安装在/usr/local/bin/

    1
    
    cd /usr/local/bin/
    
  3. 下载安装包到本地

    1
    
    wget https://npm.taobao.org/mirrors/node/v14.17.5/node-v14.17.5-linux-x64.tar.gz
    
  4. 解压

    1
    
    tar -xvf node-v14.17.5-linux-x64.tar.gz
    
  5. 重命名目录

    1
    
    mv node-v14.17.5-linux-x64 nodejs
    
  6. 添加目录到系统变量

    1
    2
    
    cd /etc/profile.d
    vim custom.sh
    

    在文件末尾添加export PATH=$PATH:/usr/local/bin/nodejs/bin

  7. 测试,输入下面3条命令,如果不报错则安装成功。

    1
    2
    3
    
    node -v
    npm version
    npx -v
    
  8. (可选)安装cnpm

    1
    
    npm install -g cnpm --registry=https://registry.npm.taobao.org
    

# 安装Waline服务端

  1. 安装waline的服务端

    1
    
    npm install -g @waline/vercel
    
  2. 配置数据库。这里我采用的是SQLite,只需要下载 waline.sqlite 文件至合适的位置。

    其他的数据库可以看官方文档来配置。

  3. 配置环境变量。

    这里我选择新建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:随机一串字符串就行。
  4. 启动模块

    1
    2
    
    cd /usr/local/bin/nodejs/lib
    node node_modules/@waline/vercel/vanilla.js
    

# 配置nginx反代

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#waline
server {
    listen 80;
    listen 443 ssl http2;

    server_name waline.lbqaq.top;

    if ($server_port !~ 443){
        rewrite ^(/.*)$ https://$host$1 permanent;
    }

    ssl_certificate cert/waline.lbqaq.top.pem;
    ssl_certificate_key cert/waline.lbqaq.top.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

    location / {
        proxy_pass http://127.0.0.1:8360;
        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;
        proxy_set_header REMOTE-HOST $remote_addr;
        add_header X-Cache $upstream_cache_status;
        # cache
        add_header Cache-Control no-cache;
        expires 12h;
    }
}

# 在hugo中启用Waline

由于我用的主题已经支持Waline评论,所以只需要填入serverURL就行了。

# 添加QQ推送(可选)

官方提供了四种通知方法,分别为邮箱、微信、QQ、Telegram。

邮箱基本不会去看,Telegram没科学也上不去,微信由于是走的Server酱,没有捐赠一天就支持5条消息。

最终还是决定采用Qmsg 酱

注册就不在这展开了,具体写一下环境变量的配置。

1
2
3
4
5
6
7
cd /etc/profile.d
vim waline.sh
export QMSG_KEY=xxxxxx
export QQ_ID=xxxxxx
export AUTHOR_EMAIL=xxxxxxx
export SITE_NAME=Blog
export SITE_URL=lbqaq.top

# 踩坑

本以为启用评论是一件很简单的事,结果花了整个下午加晚上,踩了好多好多坑。在这里就把我踩的坑记录下来,避免之后出现一样的问题。

  • 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

# 参考链接

Licensed under CC BY-NC-SA 4.0
最后更新于 2021-10-21 11:30:00