这篇的无服务器部署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: 
      - master # build master branch only
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 GitActivate这个方式

注意,我强烈不推荐你使用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标识
  • 杰哥提示语

如果你觉得不放心,你可以亲自检查我做了什么,我会尽量保证与原仓库同步。

国庆快乐!写作业去了


1 此处不写.htaccess,gearhost就会莫名其妙炸500错误 ↩

无服务器搭建Artalk评论系统后端相关推荐

  1. 5分钟Serverless实践 | 构建无服务器的敏感词过滤后端系统

    前言 在上一篇"5分钟Serverless实践"系列文章中,我们介绍了什么是Serverless,以及如何构建一个无服务器的图片鉴黄Web应用,本文将延续这个话题,以敏感词过滤为例 ...

  2. 云服务器搭建调查问卷系统,云服务器搭建调查问卷系统

    云服务器搭建调查问卷系统 内容精选 换一换 本方式建议用于非生产系统.本方式通过使用云硬盘备份服务或云服务器备份服务,对SAP HANA的一个或多个卷执行快照,再将卷快照创建成备份,自动上传到华为云O ...

  3. 原神3.2服务端架设服务器搭建教程ubuntu系统(保姆级)

    原神3.2服务端架设服务器搭建教程ubuntu系统(保姆级) 大家好,我是艾西今天跟大家分享下原神3.2服务端架设ubuntu系统实操教程 准备阶段:服务器一台 32h32g起.服务端.客户端.服务器 ...

  4. Gitment给基于hexo的yilia主题的博客搭建免费评论系统

    我的拔牙经历 我的博客用的是搜狐的畅言,功能确实非常强大,但是很多功能我用不上,也不会用,有两个问题:1)评论需要登录,有门槛:2)页面底部有广告.严重影响视觉体验. 点击站长去广告吧,跳到了付费页面 ...

  5. 网易商业化项目分享|网易云音乐-评论系统后端架构设计

    ​截止2019年二季度,网易云音乐用户数已经突破8亿,成为最活跃的音乐社区,位居在线音乐行业第一阵营. 相信大家或多或少都使用过网易云音乐,不知道有没有人跟我一样,在云音乐听歌的时候喜欢打开评论看一看 ...

  6. rtsp服务器搭建_直播系统搭建所用到的技术原理

    在开发直播系统平台中,会运用到非常多的技术难点,例如视频/音频处理,图形处理.视频/音频压缩.CDN分发等,每一个技术都够学好几年的.今天就跟大家介绍一下开发一套视频直播系统,整个流程中所运用到的技术 ...

  7. 这家零部件制造企业用无代码搭建个性化ERP系统,实现全业务闭环管理

    目录 引入LCHub低代码无代码开发平台 最佳实践--ERP应用 1.订单管理 3.BOM 管理 4.库存管理 5.不合格品管理 结 语 "很多企业对于上信息化系统是望而生畏的,主要原因在于 ...

  8. Minecraft我的世界服务器搭建之Linux系统,我的世界服务器推荐

    Minecraft 是一个流行的沙箱独立游戏,由瑞典程序员 Markus "Notch" Perssion 首先创造,后来由 Mojang 开发并发布.这是一款关于打碎和放置砖块的 ...

  9. 使用gpu服务器搭建人脸识别系统,人脸识别gpu服务器配置

    人脸识别gpu服务器配置 内容精选 换一换 设置动态Batch档位参数,适用于执行推理时,每次处理图片数量不固定的场景.在某些推理场景,如检测出人脸后再执行人脸识别网络,由于人脸个数不固定导致人脸识别 ...

  10. 服务器搭建微信会员卡系统,智络会员管理系统如何与微信对接

    智络连锁会员管理系统现已经进行升级,很多功能与以前的版本有所不同,微信对接这块也有所改变,可以上微信端查看消费数据.商品展示.微信红包.大转盘.在线咨询等等,现小编就带您体验不一样的微系统怎么进行对接 ...

最新文章

  1. 第一批 90 后30 岁了!那些 30 岁前就成博导的人都怎样了...
  2. 汇智清华,医道生机 | 第四届清华校友三创大赛医疗健康行业论坛圆满召开
  3. Uva1600 巡逻机器人
  4. AngularJS模块——module
  5. CodeForces - 803C Maximal GCD(贪心 + 枚举)
  6. Java基本类型练习1
  7. Lucene创建索引入门案例
  8. 通用无线设备对码软件_珞光全新发布国产通用软件无线电平台 :USRP-LW N310!珞光品牌已实现国产替代...
  9. 吴恩达机器学习笔记(二) —— Logistic回归
  10. matplotlib导包
  11. 【UML】使用环境(转)
  12. 【Spark】Spark的一个案例 Encountered removing nulls from dataset or using handleInvalid = “keep“ or “skip“
  13. Web Service 移除 xmlns
  14. antd 日期选择框如何提交_基于Ant Design的Modal组件来实现一个可拖拽的React模态框...
  15. 18.案例实战:体验lombok的核心@Data和@Slf4j注解
  16. 从数据类型 varchar 转换为 numeric 时出错.
  17. linux上的mysql数据库恢复
  18. java hash 数组_Java数组 哈希表 属性类 -解道Jdon
  19. python爬虫爬取安居客并进行简单数据分析
  20. Web(万维网)发展简史

热门文章

  1. 基于springboot的医院体检预约管理系统
  2. Java调用百度/高德地图API实现根据经纬度查地名
  3. android源码定制之初探--定制android关机界面
  4. 学习计算机基本知识,怎样按序学习计算机基本知识
  5. 编译原理-递归子程序法
  6. 关于win10无法打开.msi文件的解决方法
  7. python生成正态分布矩阵_统计学习 | 矩阵正态分布 (matrix normal distribution)
  8. Ajax中readyState和status
  9. vs2010环境下提示找不到d3dx9.h,及其“dxerr.lib”。
  10. publish over ssh、 Kubernetes Continuous Deploy插件