Tesp: The Everlasting Self-Perception

Ghost+Commento安装笔记

前几天我原来的博客被宕了,又正好一直有逃离WordPress的想法,所以干脆换成了Ghost。由于Ghost没有自带的评论系统,几经对比后用了Commento作为评论插件,原因就是Commento支持MarkDown语法(说的好像有人想评论你的文章似的),看起来跟正文统一一些。不过自己选有个问题就是配起来会比较蛋疼,这篇文章就是记录一下这些东西,顺便也为未来可能的重装留个指示。

Ghostlike Ghost

实名夸Ghost的官方傻瓜安装!

--某T

对比隔壁WordPress的“五分钟*n”安装,Ghost官方文档里的安装指南的详细可以让人觉得受到了智商侮辱(泥垢)。我们看看指南的第一行命令:

ssh root@your_server_ip

(。。。。。。)

然而如果直接一路&&下来的话还是不行的,你会发现

-bash: curl: command not found

好吧,批评一下,怎么不把要apt的包也放指南里面呢(

总之Ghost部分没有什么难受的,尤其是(如果按照指南来的话)最后的ghost-cli,看起来比WordPress的不知漂亮到哪去了。

一个值得注意的地方就是Ghost可以用acme.sh自动签HTTPS证书,这一点我们之后也会再次用到。

Comment on Commento

官方代码还能有问题?

--某T

Commento就没有Ghost那么傻瓜了(被惯坏.png),不过基本的文档还是有的,我们来详细记一记。

PostgreSQL

首先把PostgreSQL装好

sudo apt update
sudo apt install postgresql postgresql-contrib

进去创一个数据库,并且开一个新的Role,给不给superuser权限都行

sudo -i -u postgres
sudo -u postgres createuser --interactive
createdb <commento_database_name>

改新Role的数据库密码,如果没给superuser的话记得手动把owner改成创建的账户

psql
postgres=# ALTER ROLE <commento_user_name> with PASSWORD '<commento_user_sql_password>';
postgres=# ALTER DATEBASE <commento_database_name> OWNER TO <commento_user_name>;
postgres=# \q

打开PostgreSQL的后台

systemctl enable postgresql

回来创一个账户,名字跟刚刚新建Role的名字一样,之后下载Commento,解压(为了方便,我们就放在了<commento_user_name>下,当然可以解压到其它地方)

su <commento_user_name>
cd ~
wget https://commento-release.s3.amazonaws.com/commento-linux-amd64-v1.7.0.tar.gz
mkdir <commento_dir>
tar xvf commento-linux-amd64-v1.7.0.tar.gz -C ./<commento_dir>

SSL+反代

然后把Commento注册SSL证书,这里用了这篇博客里的迷之方法——告诉Ghost说我是博客网址,让Ghost-cli(调用acme.sh)帮我们签证书,丢到nginx里面等等。

su <ghost_user_name>
cd /var/www/ghost
ghost config url https://<commento_url>
ghost setup nginx ssl
ghost config url https://<blog_url>

接下来把反代配好。由于我们是用Ghost傻瓜配置的nginx,所以反代的端口必然不对,改掉。

vim /var/www/ghost/system/files/<commento_url>.conf
vim /var/www/ghost/system/files/<commento_url>-ssl.conf

找到locationproxy_pass一项,把后面的端口号改成喜欢的端口号<commento_port>

同一篇博客中提到commento目前不兼容nosniff

vim /etc/nginx/snippets/ssl-params.conf

搜索nosniff,注释掉

add_header X-Content-Type-Options nosniff;

这一行。

配置服务和环境

参照官方的示例说明写好配置

vim /etc/systemd/system/commento.service

参考配置见下

[Unit]
Description=Commento daemon service
After=network.target postgresql.service

[Service]
Type=simple
ExecStart=/home/<commento_user_name>/<commento_dir>/commento
Environment=COMMENTO_ORIGIN=https://<commento_url>
Environment=COMMENTO_PORT=<commento_port>
Environment=COMMENTO_POSTGRES=postgres://<commento_user_name>:<commento_user_sql_password>@127.0.0.1:5432/commento?sslmode=disable
Environment=COMMENTO_STATIC=/usr/share/commento

[Install]
WantedBy=multi-user.target

开跑

sudo chmod u+x /etc/systemd/system/commento.service
sudo systemctl start commento
sudo systemctl enable commento
sudo nginx -s reload

结束了?

不,还没有。配完环境,按照Commento的文档尝试着打开<commento_url>/signup注册账号并登入...然后就在登入界面卡住了:密码正确的时候登入反而没有反应。

F12看控制台,发现报错了

SCRIPT5009: 'origin' is not defined

然后换一个浏览器(从Edge换成Chromium)后能跑了。仔细查看代码之后猜测是少了一个this指针,加上就好。

vim /home/<commento_user_name>/<commento_dir>/js/login.js

找到一处

/^https:\/\//i.test(origin)

改成

/^https:\/\//i.test(this.origin)

再重新加载js

sudo systemctl restart commento

现在就真的是结束了。再进入Dashboard按照说明上把Commento配好,在Ghost主题里post.hbs中插入Commento代码就可以用了。

后记

没有后记,以及这鸡肋的语法高亮(谁叫你不好好写)