惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Vercel News
Vercel News
Recorded Future
Recorded Future
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
The GitHub Blog
The GitHub Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Google DeepMind News
Google DeepMind News
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Microsoft Azure Blog
Microsoft Azure Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
M
MIT News - Artificial intelligence
云风的 BLOG
云风的 BLOG
Y
Y Combinator Blog
N
News | PayPal Newsroom
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Help Net Security
Help Net Security
博客园 - Franky
SecWiki News
SecWiki News
Recent Announcements
Recent Announcements
T
Troy Hunt's Blog
The Register - Security
The Register - Security
The Last Watchdog
The Last Watchdog
Webroot Blog
Webroot Blog
S
Security Affairs
博客园 - 司徒正美
S
Schneier on Security
I
InfoQ
博客园_首页
www.infosecurity-magazine.com
www.infosecurity-magazine.com
T
Threat Research - Cisco Blogs
Forbes - Security
Forbes - Security
腾讯CDC
N
Netflix TechBlog - Medium
N
News and Events Feed by Topic
Cloudbric
Cloudbric
T
The Exploit Database - CXSecurity.com
P
Proofpoint News Feed
A
About on SuperTechFans
Engineering at Meta
Engineering at Meta
Recent Commits to openclaw:main
Recent Commits to openclaw:main
B
Blog
V
Vulnerabilities – Threatpost
C
Check Point Blog
Google DeepMind News
Google DeepMind News
Google Online Security Blog
Google Online Security Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
Hacker News - Newest:
Hacker News - Newest: "LLM"
C
Cisco Blogs
Schneier on Security
Schneier on Security
O
OpenAI News
K
Kaspersky official blog

WAYJAM

告别 NPM Token:迁移到 Trusted Publishing 全记录 Sing-box:IPv6 优先出站与 Netflix 强制 IPv6 分流 [All In One] HomeLab 虚拟化 iKuai + Mihomo - IPv6 支持 [All In One] HomeLab 虚拟化 iKuai + Mihomo LiteLLM 多模型 API 中转 MacOS Bootstrp with Nix Fluency Support Full Rss [All In One] PVE 中 OpenWrt LXC 重启问题 Tabby 终端配置以及配置全平台同步 Cloudflare Tunnel + Nginx Proxy Manager:服务穿透 PVE 7 升级 8 笔记 PVE 安装 Android x86 & 安装 Magisk [All In One] HomeLab 2023 搭建总结 [All In One] 轻量的文件 & 媒体服务器配置 [All In One] R71s 主机散热改造 [All In One] PVE LXC 安装 OpenWrt 软路由以及网络规划 [All In One] 安装 Proxmox VE 7.4 从零开始配置Rime - 2023 Self Hosted Bitwarden + Cloudfare HTTPS Debian NFS Server 以及 MacOS Client AdguardHome 和 Clash 透明代理配合使用 使用 Kind 部署 Prow 手记 BackBlaze B2 + Cloudfare Worker 图床 PicGo Amazon S3 插件 自动给模板生成 Inline-Svg Hugo Theme WeUI 发布! Hugo Theme Fluency 发布! Docker Clash 和 透明代理 有限状态机与分布式熔断器 「家庭娱乐」N1刷 EmuELEC 做游戏盒子 「家庭娱乐」N1刷 Armbian 做家庭服务器 分布式限流器之令牌桶实现 Kustomize 管理 Kubernetes 集群 Mixedpaper 主题发布到 Hugo 官方仓库 About 优化 Docker 构建时间 解决 etcd 与 grpc 不兼容问题 Kubernetes 部署 ElasticSearch7 集群 从零开始配置Rime - 2019 转移域名,更换评论系统,更换图床 搭建 NPM Proxy 之预编译包 搭建 NPM Proxy 美区Apple ID终于绑定PayPal成功 无可奈何的页面增强方案 LogStash的调试 GitLab Shell如何通过SSH工作 Python打开类 荒原 [Theme] Bitcron主题Mixedpaper发布! Ngrok端口转发 故事之五 - 柠檬茶 故事之四 - 我是天才 故事之一 Arch滚挂了怎么办? OpenWrt内网IPv6之二 某次更新后Primusrun不能启动Dota2 OpenWrt的DNS智能解析方案 替换Google CDN库 使用Privoxy将socks代理转化为http代理 ArchLinux之软件篇 再次安装ArchLinux手记 博客再次重生 搞了个Minecraft服务器 【LnV工作室荣誉出品】小苹果MV华农大版 雨梦 醉臥石中笑人間 路由器内网IPV6地址分配 OPENWRT安装软件的两个问题 路由器上进行锐捷认证 改了BIOS的LOGO Windows下搭建我的C/C++的开发环境 Linux下用Mentohust认证校园网 Archlinux+Windows 双系统安装手记(UEFI+GPT) Google-code-prettify代码高亮 《末世迷踪》 Hello Net World!
Fly.io 部署 Artalk 评论系统
2023-06-02 · via WAYJAM

最近写了几篇博客,发现博客原来使用的 Valine 评论系统已经年久失修,被 LeanCloud 冻结停止服务了,于是在多个评论系统中选中了 Artalk 重新部署博客评论系统。

Artalk 支持 Docker 形式部署,故需要部署在 CVM 上或者支持 Docker 的 PaaS 上,而我的 CVM 基本是实验环境,经常重建,不太适合评论系统此类需要稳定部署的应用,另外老牌的 Heroku 要下线免费套餐,之前看到网上有推荐 fly.io ,提供有限的免费额度,跑小博客的评论系统完全足够了。

Artalk 是一款简洁的自托管评论系统,你可以在服务器上轻松部署并置入前端页面中。

Fly.io 的核心功能是分布式的应用部署与执行,可以轻松部署和运行多种类型的应用程序(包括 Web 应用、API 应用、容器应用等),支持多种编程语言和框架,例如 Go、Rust、Python、Node.js 等,可以自动水平扩展和负载均衡。Fly.io 利用了全球范围内分布的 20 多个数据中心和数千个云计算节点,提供了高可用的、低延迟的应用程序部署和全球分发服务。

安装 flyctl

fly.io 的 Docker 形式部署目前还不能在页面直接进行,需根据官方文档安装 cli 工具(如 macOS):

brew install flyctl

创建 Fly.io 应用

Fly.io 的 Docker 部署文档:https://fly.io/docs/languages-and-frameworks/dockerfile/,常规的应用简要步骤: 0. 创建 dockerfile

  1. flyctl launch 创建应用(此步骤会新建 fly.toml 配置文件)
  2. 创建 storage
  3. 配置使用 storage
  4. 执行 deploy

但由于 fly.io 无法配置挂载,所以首次部署时 Artalk 会因为没有配置文件无法启动,所以我在模板仓库里面使用了 entrypoint.sh 脚本拷贝配置文件到部署副本内。

我新建了一个部署模板,Git Clone 模板仓库:https://github.com/wayjam/artalk-deploy

(1) 初始化应用

(2) 创建 Storage

flyctl volumes create data --size 1 --app 上一步初始化的应用名

如果 Storage 名不是 data 则需要修改 fly.toml 的 mounts。

(3) 创建 Artalk 配置

下载配置模板到 Git 仓库根目录:

wget -O artalk.yml https://raw.githubusercontent.com/ArtalkJS/Artalk/master/conf/artalk.example.zh-CN.yml

根据 Artalk 文档 以及自身站点场景修改配置。

不建议修改监听端口,修改后需要更新 fly.toml 且监听端口不会暴露到外部,暴露端口在 fly.toml 中另外声明。

(4) 使用 Postgres 数据库

Artalk 默认使用 sqlite3 作为 DB 存储,Fly.io 同时也支持创建 Postgres 数据库,所以也可以创建一个 Postgres 数据库给 Artalk 使用。

创建完数据库会显示 DB 的连接信息,

连接数据库实例 & 创建数据库

flyctl postgres connect -a wayjam-db
create database artalk;

修改连接信息

将数据库连接信息填入 artalk.yaml

(5) 部署

  • 首次部署 or 需要上传本地配置到部署副本flyctl deploy --build-target with-conf --remote-only
  • 不上传本地配置到部署副本flyctl deploy --build-target base --remote-only

我的模板仓库使用了 Dockerfile 的 multistage 提供的两种部署选项是为了兼容部署场景:是否要上传本地 conf 到远端的场景。用处主要在于首次部署的场景,其他需要更改远端配置的场景可以使用下面提到的 ssh 手工更改或者 sftp 上传。但远端编辑的体验肯定比不上在本地修改再上传。

(6) SSH 连接到副本

flyctl 中内建了很多有用的命令,比如 flyctl ssh console 就可以连接到远程副本。

总结

目前 Fly.io 部署应用基本上没有遇到不可解决的问题,但总体易用性还是比不上 Heroku,很多问题文档没有特别说明的还需到官方论坛去查找解决办法。

本文以 Artalk 的部署为例展示一个完整应用的部署生命周期,希望也可以给到部署其他应用一个参考。