8

无服务器搭建

 3 years ago
source link: https://blog.cyfan.top/p/480ab6ed.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
无服务器搭建Artalk评论系统后端 || 陈YFの博客( ̄▽ ̄)"
无服务器|
2020年10月1日 下午
2.1k字 24 分钟 227 阅读量

这篇的无服务器部署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

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分支

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

管理员邮箱:[email protected]

管理员密码: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

管理员邮箱:[email protected]

管理员密码:admin

000webhost对于这些不能展现他的广告徽标的账户可能会存在限制处理,请注意【老恶心了】。

国庆作业有点多,这篇要不是被我亲爱的群友催的要紧,我也不会水这一篇啊呜呜呜。

如果你的artalk卡在了转圈圈的问题上,你可以在html前面加上这一句

<link href="https://XXX.XXX.XXX/index.php" rel="preconnect" crossorigin>

preconnect可以强制在渲染页面试并发一个请求,可以有效解决5s超时问题和并发过多不稳定导致cancel问题。

另外你也可以用我的artalk脚本:

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错误

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK