一个博客,有一个评论系统应该有一定必要性,评论可以告诉作者其他人对文章的看法和建议。虽然……也可能会出来一大堆垃圾评论什么的……

道听途说isso之类的其他评论系统不太好……,所以我决定搭一个commento评论系统,就是这样。

下载commento

下载并解压commento二进制包,等待进一步配置。

1
2
3
mkdir commento ;cd commento
wget https://dl.commento.io/release/commento-v1.8.0-linux-glibc-amd64.tar.gz #1.8.0版本,截止至2020-06-05
tar -xzvf commento-v1.8.0-linux-glibc-amd64.tar.gz #解压缩二进制包

安装和配置postgreSQL

commento依赖postgreSQL,用于保存数据。

安装postgerSQL

安装postgerSQL,执行:

1
2
sudo apt install postgresql postgresql-client  #安装postgresql
sudo sudo -u postgres bash #切换至postgres用户,以获得postgreSQL权限

安装postgresql软件包,并切换至postgres1用户。

配置postgerSQL数据库

以postgres用户执行 createuser 命令来创建新的数据库用户。

1
2
3
4
5
[postgres] $ createuser --interactive
输入要增加的角色名称: web #(新建的数据库用户)
新的角色是否是超级用户? (y/n) n
新的角色允许创建数据库吗? (y/n) y
新角色允许创建其它新的角色吗?  (y/n) n

如此这般,现在创建一个postgres数据库用户(这里是"web"),并允许其创建数据库。然后,创建一个用于commento的数据库

1
$ createdb -U [用户名] commento #(新建的数据库名称)

登陆到数据库,并更改密码

1
2
3
4
$ psql -d [数据库名称] -U [用户名]
commento=> \password web
输入新的密码: [设置密码(不会显示)]
再次输入: [输入密码(不会显示)]

如此,postgreSQL的部分就此结束。

配置commento(后端)

commento会通过一系列环境变量来获取配置,需要在启动前配置一些2环境变量,否则无法正常启动。

创建启动脚本

虽然通过一些其他方式也能够设置这些环境变量,不过,创建一个启动脚本可能更为方便。

1
nano start-commento.sh

使用喜欢的文本编辑器创建一个shell脚本

1
2
3
4
export COMMENTO_ORIGIN="https://commento.example.com"  #配置托管域名
export COMMENTO_POSTGRES=postgres://user:pass@host:port/commento?sslmode=disable  #配置postgreSQL链接
export COMMENTO_PORT=8080 #配置监听端口(非必须)
./commento  #启动commento

commento启动前,必须设置 COMMENTO_ORIGINCOMMENTO_POSTGRES 这两个环境变量,否则无法正常启动。

  • COMMENTO_ORIGIN : 设置托管Commento的子域或IP地址,所有请求都将会转发至该域。其格式为 http(s)://你所设置的域名
    如: https://commento-blog.logc.icu
  • COMMENTO_POSTGRES : 设置PostgreSQL服务器的URI
    其格式为 postgres://user:pass@host:port/commento?sslmode=disable
    或者称作 postgres://用户名:密码@主机名:端口/数据库名称?sslmode=disable
    postgres://[用户名]:[密码]@127.0.0.1:5432/commento?sslmode=disable
  • COMMENTO_PORT :配置commento监听端口0-65535(可选,默认为8080)

配置域名[非必须]

commento目前必须在一个新的域名下使用,所以需要创建一个新的域名A解析到commento服务上。

然后,初始化 COMMENTO_ORIGIN 环境变量为该域名。

当然,不设置也可以,这样就需要将 COMMENTO_ORIGIN 配置为IP地址了。

配置域名ssl证书[非必须]

安装certbot,以webroot模式验证域名,签发let‘s encrypt的ssl证书

1
certbot certonly --webroot -w /usr/share/nginx/html/ -d 要签发证书的域名

certbot生成的ssl证书会保存在/etc/letsencrypt/live/[域名]/文件夹内。

配置nginx反向代理[非必须]

配置反向代理,以便于共用端口什么的?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
    #=====commento-example.vom=============
      server {
      listen 443 ssl; #配置监听端口和启用ssl
      ssl_certificate /etc/letsencrypt/live/commento.example.com/fullchain.pem; #配置ssl证书路径
      ssl_certificate_key /etc/letsencrypt/live/commento.example.com/privkey.pem;  #配置ssl证书密钥路径
      server_name commento.example.com;  #配置监听域名
      location / {
      proxy_pass http://127.0.0.1:7845  ; #配置反向代理
	  }
}

网站初始化

执行第一步完成的启动脚本 bash start-commento.sh

在浏览器打开 https://commento.example.com/signup 如果一切正常的话,将会进入账户注册页

进入账户注册页里注册帐号,然后登陆页面。

点击左边的 +New Domain ,在弹出的窗口里添加准备集成评论的网站。

一切正常的话,就可以尝试集成进hugo了

集成commento评论进入hugo

进入hugo配置所在的目录,

1
cd ~/hugo/path

并将下述内容添加至模板文件:

1
2
3
<!--commento评论插入-->
<script defer src="https://commento.example.com/js/commento.js"></script>
<div id="commento"></div>

然后执行

1
2
hugo      #编译站点
rsync . user@host:/remote/host/path/  #使用rsync上传更新后的站点文件至远程服务器

来更新站点,并通过rsync上传至服务器。

常见问题

如果评论部分遇到了 This domain is not registered with Commento. 这样的错误,则需转到commento管理页面将网站所在域添加至后台。

一些其他配置

配置github关联登陆

github配置

访问github开发人员设定Developer settings,点击 New OAuth App 填写一些信息,注册OAuth应用程序

  • Application name :应用程序名(可以随便填,不过建议起一个好记的名称)
  • Homepage URL :应用主页的完整url
  • Application description :应用说明,可以不填
  • Authorization callback URL :授权回调网址,commento则需要将该值配置为commento的绑定链接(https://commento.example.com)

填写完成后,点击 Register application 来注册OAuth。

环境变量配置

OAuth注册完成后,复制 Client ID,和 Client Secret 的值,用于配置commento

在启动脚本内添加以下命令

1
2
3
#github登陆关联
export COMMENTO_GITHUB_KEY=[Client ID]
export COMMENTO_GITHUB_SECRET=[Client Secret]

一切正常的话,就能用github来登陆了。

邮箱配置

在启动脚本加入以下命令

1
2
3
4
5
export COMMENTO_SMTP_HOST=smtp.yandex.com  #设置smtp服务器
export COMMENTO_SMTP_PORT=587              #设置端口
export COMMENTO_SMTP_USERNAME=[email protected]            #设置登陆邮箱
export COMMENTO_SMTP_PASSWORD=password     #密码
export COMMENTO_SMTP_FROM_ADDRESS=[email protected]   #设置另一个邮箱

默认情况下,这些值为空,同时电子邮件相关的功能(邮件通知和重置密码)处于关闭状态。

翻译

commento并不支持多语言,不过commento支持指定资源目录位置,可以通过这一设置来配置翻译后的前端资源文件

下载修改过的翻译资源目录

1
git clone https://github.com/tntwiki/commento-static

在启动脚本中加入以下命令

1
export COMMENTO_STATIC=~/commento-static  #指定翻译后的静态资源文件位置,默认情况下与二进制文件为同一目录

目前这一翻译版本仅仅简要翻译了 js/commento.js 的一部分,还有很多内容都没有翻译。

仍待进一步完善。

(希望commento未来能支持多语言呢……[或者在那之前换成其他评论系统或者干脆关掉评论功能?])

到这里,commento算是搭建完成了吧,希望评论系统能够提供理性,友好的交流。

如果不能的话……关掉也不是什么特别麻烦的事情?

如果有什么看法建议的话,就请各位到下面的评论区发一下吧。^_^


  1. postgres用户默认拥有postgreSQL数据库的全部权限。 ↩︎

  2. 关于commento的环境变量的具体内容,可以访问https://docs.commento.io/configuration/backend/。 ↩︎