无服务器搭建Artalk评论系统后端
这篇的无服务器部署Artalk,指的是NoServer而不是Serverless
这篇所写的是部署后端,关于前端部署十分简单,这里不多阐述
Artalk,一款简洁有趣的自托管评论系统。此时,Valine作为老大哥就不得不跳出来了。但是,作为Valine的Leancloud作为第三方托管,数据放在别人那里总是不舒服的,譬如2020/9/24Leancloud华北节点云引擎被 DDoS 攻击
或者说LeanCloud将开发版限额一限在限,亦或者leancloud多次宕机,作为自由开放的我自然不舒服。加上leancloud开发版的SLA实在令人担忧【不包括休眠时间,一个月内宕机超过20次(不过leancloud开发版确实没有保证SLA)】,以及比较严重的管理员冒充。我一直再找一个能用自己服务器托管评论系统,真巧,我找到了Artalk。Artalk的优点:
-
轻量简洁 (~23kB gzipped)
-
有趣有爱
-
自托管
-
Markdown
-
表情自定
-
滑稽表情包
-
管理员密码,防冒名
-
验证码,提交频率限制
-
通知中心,邮件提醒
-
自定义某些页面仅管理员可评论
-
无限层级回复
-
滚动加载更多
-
评论折叠
-
一页多个评论
-
TypeScript
-
提交频繁验证码
-
无数据库
当然没有垃圾评论检测就很蛋疼
有服务器部署起来相当简单,宝塔【虽然被炸0day,不过修修补补还能用】+Artalk能实现5分钟部署完毕【Jalen的Artalk 自托管评论系统的后端部署】,但是,习惯Valine的群友一看到后端部署就立刻皱起了眉头:我没有服务器,怎么办?
Artalk的后端是PHP的,虽然作者也承诺了会开发别的后端Go API / Node API / Python API
,但迟迟没有写出来,考虑到QWQCODE是个学生【我也是】,那么咕咕咕就情有可原了。
实际上,我用的是Euserv白嫖的,至少SLA还是过的去【>=99%】,但是无论是申请还是部署都非常麻烦。此时,我就在想,既然有免费的php托管商,何苦不用呢?
目前找到两个:Gearhost和000webhost
注意,heroku虽然也有免费容器部署php,但是heroku是沙盒制度,一个评论存储为文件后会删除,所以heroku并不适合作为artalk后端。
安装
设置Artalk
与其它评论系统不同,artalk本身并没有做到开箱即用这一特点,所以,你还要做一些事先准备。
GithubAction+Composer安装
Artalk为了缩小原文件大小,并没有安装好依赖,依赖需要你自己安装。
如果你本地有composer,那就直接克隆本地运行composer。但不论其便携性还是效率都不高【composer安装起来比较麻烦】,所以,我建议此处用GithubAction实现composer安装。当然你有composer环境就可以直接clone在本地安装。
进入原项目,Fork到你自己的账户
新建一个文件,文件名为:.github/workflows/composer.yml
内容为:
xxxxxxxxxx
name composer
on
push
branches
# build master branch only master
jobs
download
runs-on ubuntu-latest
steps
name Checkout
uses actions/checkout@v2
with
ref master
name Install
run
npm install composer
composer install
name Deploy
uses peaceiris/actions-gh-pages@v3
with
github_token $ secrets.TOKEN
publish_dir ./
设置Secret,NAME为TOKEN
,内容为你的GithubTOKEN.【Token的获取与这篇文章关联不大】,请自行百度。
回到仓库,新建一个空白的.htaccess 文件夹,里面什么都不写
1,并删除根目录底下的.gitignore
触发GithubAction
此处必须删除
.gitignore
【或者你自行修改】,否则接下来出错一律不管
稍后即部署完毕
本地修改配置文件
Clone你的仓库,指定为gh-pages分支
xxxxxxxxxx
git clone -b gh-pages https://github.com/ChenYFan-Tester/Artalk-API-PHP.git
-b是强制指定分支的意思
速度慢试试github.com.cnpmjs.org,阿里github镜像
打开并修改Config.example.php
具体参照官方文档
完毕后退出,将Config.example.php
重命名为Config.php
此时,你的artalk安装终于告一段落,但是,你还没有将他们部署上去.
部署
Gearhost
Gearhost其实是一个小有名气的托管商,Free计划提供了最高一线程、每小时256MB内存、每小时5%CPU周期和每月1GB流量,作为评论托管是完全足够的。并且不需要信用卡。
进入Gearhost注册一个账号,新建一个免费的CloudSite。
构建完毕后稍等片刻,进入面板设置:
PHP版本设置为7.1
Virtual Directories
网址设置为/
路径设置为site\wwwroot\public\
进入Publish
选项卡,勾选Local Git
,Activate
这个方式
注意,我强烈不推荐你使用FTP上传,FTP看起来有图形化很方便,但是请注意,Composer后的文件将近300+,FTP最致命的上传方式是每上传一个文件就会握一次手,这样子会严重浪费你的时间。而是用Github链接的同学我就要考虑你的危险的想法了,如果没有将仓库设置为Private,那么用Github链接是一个非常不明智的选择
绑定git,上传三步走,git init && git add . && git commit -m "OHH" && git push website master
绑定域名什么不多说了,建议套一层CloudFlare。
Gearhost所用的共享ip,来自美国 科罗拉多州 丹佛,三网优化都不好。当然回源CloudFlare还是不错的。
DEMO:https://artalk-pub1.cyfan.top/
SLA:还在测试,大约95%,你可以前往https://status.cyfan.top查看详情
在页面id为12345有几个测试评论,你可以去测试一下,跨域均设置为'*'。
管理员用户名:admin
管理员邮箱:admin@admin.admin
管理员密码:admin
000webhost
000webhost也是个著名的免费php托管商,虽然早年的种种行为看着十分恶心,但是好歹也是个能白嫖的托管商。000webhost提供了每个账户一个免费的容器,每个容器每月3GB流量、300MB空间、1w个文件和每天25次邮箱发送。
000webhost的部署相对简单些,直接将所有文件拖拽上传【因为它不支持git上传】,稍等即可
上传至public_html
子文件夹下:
000webhost不支持设置运行目录,这意味着data文件夹将会被曝光,但是我们可以设置000webhost的但目录密码保护:
这样,当有人试图访问data/comments.data.json
时,就会遭到密码拦截。
绑定域名
由于000webhost域名验证需要一段时间,请先前往域名托管商设置记录。比如我的app名字是XXX.000webhostapp.com,我要绑定的是artalk-pub2.cyfan.top,就应该这样设置:
请注意000webhost验证域名是通过dns记录来验证的,在验证完毕前请不要开启CDN!
绑定域名,请鼠标移至卡片上,点击QuickActions,点击Details
点击My Domains,进入设置界面:
点击Add domain
选择PointDomain【毕竟把ns改到000webhost是不可能的】
如实填写,稍等即可。
DEMO:https://artalk-pub2.cyfan.top/public/
SLA:还在测试,大约90%,你可以前往https://status.cyfan.top查看详情
000webhost默认线路烂的和shit一样,强烈建议套CloudFlare
和另一个demo一样在页面id为12345有几个测试评论,你可以去测试一下,跨域为'*'。
管理员用户名:admin
管理员邮箱:admin@admin.admin
管理员密码:admin
000webhost对于这些不能展现他的广告徽标的账户可能会存在限制处理,请注意【老恶心了】。
最后
国庆作业有点多,这篇要不是被我亲爱的群友催的要紧,我也不会水这一篇啊呜呜呜。
如果你的artalk卡在了转圈圈的问题上,你可以在html前面加上这一句
xxxxxxxxxx
<link href="https://XXX.XXX.XXX/index.php" rel="preconnect" crossorigin>
preconnect
可以强制在渲染页面试并发一个请求,可以有效解决5s超时问题和并发过多不稳定导致cancel问题。
另外你也可以用我的artalk脚本:
xxxxxxxxxx
https://cdn.jsdelivr.net/gh/ChenYFan-Tester/Artalk@gh-pages/Artalk.js
https://cdn.jsdelivr.net/gh/ChenYFan-Tester/Artalk@gh-pages/Artalk.css
- 修改超时时间为60s
- 掩盖artalk标识
- 杰哥提示语
如果你觉得不放心,你可以亲自检查我做了什么,我会尽量保证与原仓库同步。
国庆快乐!写作业去了