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

推荐订阅源

WordPress大学
WordPress大学
O
OpenAI News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
Webroot Blog
Webroot Blog
GbyAI
GbyAI
S
SegmentFault 最新的问题
Cyberwarzone
Cyberwarzone
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
J
Java Code Geeks
Google DeepMind News
Google DeepMind News
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
博客园 - 【当耐特】
S
Secure Thoughts
酷 壳 – CoolShell
酷 壳 – CoolShell
AWS News Blog
AWS News Blog
Engineering at Meta
Engineering at Meta
S
Security Affairs
H
Help Net Security
Microsoft Security Blog
Microsoft Security Blog
D
DataBreaches.Net
云风的 BLOG
云风的 BLOG
Hugging Face - Blog
Hugging Face - Blog
Google DeepMind News
Google DeepMind News
Spread Privacy
Spread Privacy
T
Threatpost
Forbes - Security
Forbes - Security
C
Cisco Blogs
Scott Helme
Scott Helme
Attack and Defense Labs
Attack and Defense Labs
Simon Willison's Weblog
Simon Willison's Weblog
腾讯CDC
The Last Watchdog
The Last Watchdog
Cloudbric
Cloudbric
Last Week in AI
Last Week in AI
Recorded Future
Recorded Future
小众软件
小众软件
V
Vulnerabilities – Threatpost
美团技术团队
人人都是产品经理
人人都是产品经理
有赞技术团队
有赞技术团队
Apple Machine Learning Research
Apple Machine Learning Research
Hacker News - Newest:
Hacker News - Newest: "LLM"
I
Intezer
月光博客
月光博客
C
Cyber Attacks, Cyber Crime and Cyber Security
博客园 - 司徒正美
C
Cybersecurity and Infrastructure Security Agency CISA
Martin Fowler
Martin Fowler
博客园 - 聂微东

秋澪的博客

MediaWarp说明文档 | 秋澪的博客 MacBook Air M1 2025年211工科本科生体验报告 | 秋澪的博客 Conda安装以及基础使用方法 | 秋澪的博客 利用CloudFlare搭建测速网站 | 秋澪的博客 FastCDN说明文档 | 秋澪的博客 利用CloudFlare搭建镜像站 | 秋澪的博客 Docker入门教程 | 秋澪的博客 UnlockMusic音乐解锁搭建教程 | 秋澪的博客 Excalidraw搭建教程 | 秋澪的博客 AutoFilm说明文档 | 秋澪的博客 利用CDN加速并保护站点 | 秋澪的博客 校园网碎碎念 | 秋澪的博客 三朝元老再就业——百元机装机体验暨P104-100快速上手 | 秋澪的博客 将M.2固态硬盘设为群晖存储池 | 秋澪的博客 Git快速上手指南 | 秋澪的博客 利用Ventoy打造最强硬盘 | 秋澪的博客 为Hexo博客添加后台管理系统 | 秋澪的博客 MarkDown笔记软件推荐 | 秋澪的博客 免费的云数据库推荐 | 秋澪的博客 使用BetterNCM美化网易云 | 秋澪的博客 Armbian手把手玩机指南01-系统刷入并安装可视化桌面 | 秋澪的博客 IOS旧版本应用推荐 | 秋澪的博客 51单片机学习记录-01 | 秋澪的博客 51单片机学习记录-00 | 秋澪的博客 免费域名注册 | 秋澪的博客 Hexo重装记录 | 秋澪的博客 利用CloudFlare创建域名邮箱 | 秋澪的博客 在Render上部署Alist | 秋澪的博客 Docker命令大全 | 秋澪的博客 利用Replit搭建Alist | 秋澪的博客 MariaDB数据库搭建及基础用指南 | 秋澪的博客 Nginx-Proxy-Manager问题补充:DNSPod证书申请错误、NPM端口丢失 | 秋澪的博客 VPS基础配置 | 秋澪的博客 Ubuntu安装及ROS安装教程 | 秋澪的博客 个人图床搭建之Github篇 | 秋澪的博客 利用Replit搭建个人博客Halo | 秋澪的博客 AI工具网站推荐 | 秋澪的博客 MarkDown入门教程 | 秋澪的博客 基于Ubuntu安装docker | 秋澪的博客 利用FRP 和 Nginx-Proxy-Manager 为内网设备提供内外穿透服务 | 秋澪的博客 Hello World | 秋澪的博客
Fcricle踩坑记录 | 秋澪的博客
标签 · 2024-02-21 · via 秋澪的博客

此内容根据文章生成,并经过人工审核,仅用于文章内容的解释与总结

前言

Fcircle,无需担忧友链太多无暇一个一个访问,可以帮你快速整理出好友们新发的文章,如果你和我一样是一名站长,那么可以尝试部署一下这个项目:Github官方仓库

踩坑

这次就简单记录一下部署遇到的坑吧
其实部署难度并不高,只需要部署一下后端,并且文档教程很详细(仅限于默认部署的方式)

先简单说一下hexo-circle-of-friends这个项目的原理吧,其实很简单,主要分为前后端,前端主要由Hexo的主题负责,如果主题不支持也可以通过安装插件的方式解决,具体安装方式可以参考各主题的文档,如果是插件安装可以去店长的博客观看详细教程

至于后端,我将其分为了三部分,爬虫、数据库、API接口
整个原理很简单,爬虫定期爬取友链文章并存入数据库,当前端访问API接口时,会访问数据库查询最新发布的文章返回给前端

官方文档中提供了3x4共12种部署方式

leancloud存储 mysql存储 sqlite存储 mongodb存储
github部署 github+leancloud github+mysql github+sqlite(默认选项) github+mongodb
server部署 server+leancloud github+mysql server+sqlite server+mongodb
docker部署 docker+leancloud docker+mysql docker+sqlite docker+mongodb

server和docker的部署方式总的来说大同小异,都是本地部署并且本地提供了API接口,只需要放行对应端口即可,而Github部署的话还需要Vercel部署一个API接口
我觉得绝大多数站长都是通过Github+Sqlite部署的,Github部署的原理是通过定时任务触发Github Action任务然后爬虫爬取友链,然后存储在Sqlite中再git commit更新到仓库中,Vervel发现仓库更新了就会重新部署,读取数据库中的内容等待前端调用
这么做确实是挺不错的,但是由于Sqlite数据库的更新会不断提交新的Commit,再加上Git的机制,并不会清除原本的数据库,会占用额外的Github资源,况且用Git仓库做Sqlite数据库这种方式本身并不优雅,于是我就想采用Github+MongoDB的部署方式
原理和之前差不多,都是通过定时任务触发Github Action然后爬取友链的文章,然后会直接存储在MongoDB中,Vercel也不需要每爬虫一次就重新部署一次,会实时访问MongoDB获取数据
根据文档的教程,设置好对应的环境变量手动触发一次Github Action,所有地方都正常,唯独MongoDB中没有获取到数据,自然访问搭建在Vercel上的API也不会有任何数据,一开始我以为环境变量写错了,就查看Github Action的工作流,发现确实是进入到了MongoDB的Update Post的步骤中,并且整个Github Action也没有任何报错,我也找遍了全网没找到解决方案,我也看了源代码,确认了不是MONGODB_URI的格式问题,就这么折腾了5个小时,不停的尝试,将Storage_Tpye更改为sqlite就一切正常,改成mongodb什么都正常就是数据获取不到数据

解决问题

最后只能从源码入手了,先看Github Action的任务执行流程,其实很简单,根据Storage_Tpye的类型传入对应的环境变量执行main.py,然后我在Github Action的日志中发现,虽然我进入了mongodb的分支但是logging模块传出的居然是sqlite的pipline,然后我就去找他是怎么选择的进入哪种存储的pipline的,最后发现是在fc-settings.yaml的下面有个运行方式和存储模式的选择,默认分别是githubsqlite

找了5个小时,搜索朋友圈的搭建方法、重开数据库、重设访问用户、重设访问IP、新开MongoDB账户,查看源码,终于找到问题所在了

最后想想其实就是多部署方式惹的锅,Server和Docker的部署方式完全依赖fc-settings.yaml的配置,但是由于Github不能将fork的仓库设为私有,如果在Github仓库上直接配置fc-settings.yaml由于暴露数据库账号密码的风险,所有使用的Github的Action的环境变量,虽然Action是判断了存储方式并传递了环境变量,但是运行main.py后,程序由以fc-settings.yaml的配置为主,导致使用了默认sqlite的pipline所有没有向MongoDB写入数据,但是由于之前Github Action根据环境变量Storage_Tpye只传入了MongoDB相关的环境变量,Github Action也没有提交db.sql的权限,所以就成了除了运行了一次Github Action其余事情什么都没发生

尾声

希望hexo-circle-of-friends的大佬可以修改一下运行逻辑,改成优先级为:命令行 > 环境变量 > 配置文件的运行逻辑是否更好

如果你也遇到了类似的困难,希望文章对你有帮助