零成本搭建个人 APP 和小程序后台

news2024/9/20 18:39:19

前言

前面也说了,通过 GitHub Pages+GitHub Actions 只是解决了动态数据展示,但是要零成本得完成将用户信息存储下来,并实现数据交互呢?

我开始是想用云文档,种种原因,我还是希望有个自己能二次修改的后台,于是就选择了 Vercel+Railway 方式。

虽然网上也有很多人介绍这俩平台的玩法,但都是 2024 年以前的文章,有些平台最新的修改,和自己踩到的坑而别人没提到的细节,我还是想记录一下。

坑点

  1. 域名已经解析成功了,但是一直无法访问 Vercel 上的页面。
  2. vercel-php 版本和 Vercel 上的 NodeJs 版本冲突,和一些配置问题。
  3. 代码提交推送后,Vercel 没有完成自动部署等等。

准备

  • Vercel:    略过详细介绍,暂且把他理解成云服务器,入门配置免费,需要注册登陆。
  • Railway:  同样略过详细介绍,暂且把他理解成云数据库,几乎免费,需要注册登陆。
  • GitHub:   先创建存放程序的仓库,也几乎完全免费,需要注册登陆。
  • Typecho: 博客程序 ,其他语言的像 Flask 也行,开源免费,下载或自行编写。

Vercel 配置

进入 vercel 官网,推荐使用 GitHub 账号登陆,配置主要完成仓库的代码导入,域名解析绑定,项目部署和相关参数设置。

代码导入

登陆后点击 “Import Git Repository”,然后选择仓库安装并设置权限,接着是 Configure Project,Congratulations 都可以直接下一步进入到 Production Deployment,可参考下图。

域名解析绑定

进入到 “Production Deployment” 时,我们可以看到项目已经创建成功。不但可以看到 source 源仓库分支和提交信息,还能看到 Domains 分配的域名,但是该域名被墙无法访问。

点击上面的 “Domains” 按钮(在 Visit 左边),输入即将要解析过来的域名,系统会展示需要用 CNAM 类型被解析的域名,复制该 value 去到自己的域名服务商控制台,添加一条 CNAME 解析记录。

如果说服务商那边解析成功了,并且 Vercel 平台也显示域名验证成功,也就是前面提到的坑点一。这种一般是 DNS 缓存原因,可以换一台电脑或用手机访问测试,如果能就等待一下,直到能 ping 通。还有 Vercel 会自动办法 SSL 证书,所以后面只需要留意日期就可以,下图我暂时放了一个 index.html 页面,动态程序演示要放到 Railway 后。

Railway 配置

进入 Railway 官网,同样推荐 GitHub 账号登陆,进来后选择 “MySQL” 类型,直接按默认后进入到 production,最主要的是我们需要分配给他的 Host,账号和密码,数据库名等等。

需要注意的是 Railway 每个月只有 5 刀的限额,需要提前备份数据库。超过限额后没有备份的数据就没了,需要删掉账户重新注册才可以。

打开 Data,选择 “Connect” -> “Public Network”,Connection URL 就是该产品对外的连接 Host,用户密码,端口等信息。只需要复制下来,用于在程序中连接配置,Navicat for MySQL 图形化工具连接失败,我试过了。

后端程序部署

以下简单介绍 php 和 python 两种语言的 hello world,和有数据库连接的博客程序,第一步是后端入口文件都不能放在项目的根目录下,放在新建文件夹的 api 中,并添加 vercel.json(用于配置路由和分配内存等信息)。

Python 的 Hello World

新建 vercel.json 文件,和用于打印的 py 文件,最后访问自定义的域名。

{
    "rewrites": [
        { "source": "/(.*)", "destination": "/api/index" }
    ]
}

PHP 的 Hello World

需要注意的是部署 php 项目要用到 vercel-php,而 vercel-php 又与 NodeJs 版本有一定对应关系。目前 2024 年 8 月 vercel 平台默认 Node 版本是 20.x,我下面演示的是 vercel-php@0.6.0,所以再部署前需要先将 Node 版本切换为 18.x,如下图。(以下有两种情况的报错都要 node 和 vercel-php 版本相关)

部署后报错合集

1. PHP Built-In Server HTTP error: Error: connect ECONNREFUSED 127.0.0.1:8000

2. The following Serverless Functions contain an invalid "runtime": - api/index (nodejs18.x)

Typecho 安装

从官网下载源码后,找到 config.inc.php 文件,将数据库的参数修改为 Railway 复制过来的配置。

然后通过 Git 提交代码到仓库,如果发现没有部署成功,可以进入 vercel 平台的 Deployments 查看部署记录,有报错的根据信息修改。

提交并成功部署后,输入自定义域名,并带上 install.php 进行安装,然后用 pdo 方式安装数据库,上面的 railway 参数就再输入一遍。

安装成功后,可以到 Railway 查看到新增的表格,这就表示全部都能正常使用了。

写在后面

当然 Vercel 也不只是可以用来部署动静态网站或 API,也能搭一些国外工具的镜像,像 npm 之类的。

还有一种是,比如国外有一些很好用还免费的 API,你想用在小程序进行调用,但是在小程序后台填写这些 API 访问域名时无法添加,没有国内的备案信息。

这时候就可以用自己备案过的域名再 Vercel 中搭建一个中转,小程序请求自己的域名,而部署的程序请求别人的地址,更多玩法待后续更新了……

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2075544.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

动态网格交易、科创板做市、股票 CTA……DolphinDB 中高频策略回测实例之股票篇

股票中高频交易是量化交易的重要分支,其核心在于在极短时间内处理大量市场数据,执行多笔交易,从而捕捉细微的价格波动并获取利润。中高频交易策略的成功依赖于精准的算法设计、低延迟的交易系统以及交易程序强大的数据分析能力。作为实盘操作…

【系统架构设计】设计模式

【系统架构设计】设计模式 设计模式概述GoF设计模式Factory MethodAbstract Factory (*)BuilderPrototype(原型)Singleton(*)AdapterBridgeComposite(组合)Decorator(装饰)(*)Facade(外观)(*&am…

恢复指定人微信聊天记录,看这里,4种方法帮您找回记录

微信在今天成为了我们日常生活中不可或缺的一部分,它承载着我们的社交、工作乃至生活的点点滴滴。然而,有时出于各种原因,我们可能会选择注销微信账号,但随后又可能因种种原因希望恢复其微信进行使用。那么,微信注销了…

CSS溢出——WEB开发系列20

在网页设计中,“溢出”是一个常见且重要的概念。它涉及到如何处理那些超出预定范围的内容,以确保网页的布局和视觉效果达到预期。 一、什么是溢出? 在 CSS 中,“溢出”(overflow)指的是内容超出其包含块的…

构建高效NLP管道:PydanticOutputParser与Langchain的结合

PydanticOutputParser 是一个用于解析语言模型输出的实用工具,它允许用户指定一个 Pydantic 模型,并查询语言模型以生成符合该模型的 JSON 输出。这个工具特别有用,因为它可以帮助开发者确保从语言模型获得的结构化数据符合预期的格式&#x…

全面解析:四大LLM模型——预训练与后训练的新范式

导读 最初,大语言模型LLM的训练过程只关注于预训练,但如今已经扩展到包含预训练和后训练两个阶段。后训练通常包括监督指令微调和对齐,这一方法在ChatGPT发布后广泛流行! 翻译自:https://magazine.sebastianraschka.com/p/new-l…

NAT网关产品手册

产品用途 SG-NAT-410 网关支持 IP 地址跨网段和通讯端口的转换,为不方便修改参数的以太网通讯设备的信息化联网提供便捷的解决方案。网关有 1 个两口以太网交换机接口(LAN 口 ) 和 1 个单口以太网通讯接口 (WAN 口 ) 。不对原系统做任何硬件和软件修改&…

WAF一般是怎么防御SQL注入的

目录 参数化查询在防止SQL注入中起到什么作用? 为什么要限制数据库用户权限来预防SQL注入? WAF是如何检测SQL注入特征的? WAF防范SQL注入的主要策略包括: 参数化查询和预编译语句:使用参数化查询或预编译语句可以确…

虚拟试穿技术分享

虚拟试穿技术,通过计算机视觉和人工智能,允许用户在数字界面上试穿服装,无需实际穿戴。这项技术广泛应用于电子商务和时尚工业,使得消费者可以在购买前预览衣物在自己身上的样子。 基于扩散的方法:这种方法使用基于图像…

微波网络分析仪VNA原理详解:电磁波测量基础-测试狗科研测试

微波网络分析仪VNA原理详解:电磁波测量基础 微波网络分析仪(Vector Network Analyzer,简称VNA)是一种用于测试和测量微波频段元件和网络特性的电子测试设备。 一、电磁波 电磁波是由电场和磁场相互垂直并相互依赖振荡传播的波动现…

餐饮商标怎么注册自己的品牌!

餐饮行业是创业者选的比较多的行业,也有许多人从小做起,成为当地知名品牌,那企业或个体户如何注册餐饮行业的商标。 在餐饮行业首先是申请注册类别43类餐饮住宿,这个是餐饮的核心类别,开店、饭店都在这个类别&#xf…

学习之adb命令

adb命令作用: 用来操作手机系统的 类似于window的cmd,linux的bash 如果添加环境变量的adb不能识别设备通常是因为存在两个不同的版本 如下: adb devices 如果没有发现,可以尝试手动连接设备 需要先执行 adb kill-server adb start-server …

前端模块自动导入的插件

前言 开发中通常会有很多导入语句&#xff0c;如何确保一些通用的api和hook无需每次手动导入即可使用。 <script setup lang"ts"> import { ref, reactive } from "vue" import { useRoute, useRouter } from "vue-router" import { log…

【Spring】Cookie和Session

系列文章目录 第一章 初识Spring MVC 文章目录 系列文章目录前言一、Cookie和Session二、Cookie操作获取Cookie指定Cookie 三、Session操作设置Session数据获取Session数据 四、获取Header总结 前言 HTTP是"无状态"的协议&#xff0c;我们可以理解为它没有记忆力。…

UnrealEngine学习(02):虚幻引擎编辑器界面详解

学习一款软件&#xff0c;我个人建议是先学习怎么用&#xff0c;然后是学习怎么用的好&#xff0c;再研究源码。 上一篇文章详细描述了我们该如何安装虚幻5引擎&#xff1a; UnrealEngine学习(01)&#xff1a;安装虚幻引擎https://blog.csdn.net/zuodingquan666/article/deta…

Kubernetes存储Volume

数据是一个企业的发展核心,他涉及到数据存储和数据交换的内容。在生产环境中尤为重要的一部分&#xff0c;在 Kubernetes 中另一个重要的概念就是数据持久化 Volume。 一、Volume的概念 对于大多数的项目而言&#xff0c;数据文件的存储是非常常见的需求&#xff0c;比如存储用…

SEO优化租用站群服务器需要考虑哪些?

在SEO(搜索引擎优化)的背景下&#xff0c;站群服务器是一种运行多个网站的器&#xff0c;每个网站共享同一个IP地址&#xff0c;但也可拥有独立IP。下面将详细探讨SEO使用站群服务器租用需要考虑的各种因素&#xff0c;rak小编为您整理发布。 1. 网站内容的原创性与相关性 内容…

淘客系统源码的架构分析

淘客系统的架构分析可以从多个层面进行探讨&#xff0c;包括业务流程、技术选型、系统模块、安全性、可扩展性等方面。 业务流程&#xff1a;淘客返利系统的主要业务流程包括用户注册、商品推广、订单跟踪、返利结算等。用户注册成功后&#xff0c;将获得推广链接&#xff0c;…

html+css+js网页设计 电商 珠宝珠宝行业的专业领域应用先状、前沿及发展展望13个页面

htmlcssjs网页设计 电商 珠宝珠宝行业的专业领域应用先状、前沿及发展展望13个页面 网页作品代码简单&#xff0c;可使用任意HTML编辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编…

Python新手必看!这个模块让Python的重试更加便捷灵活!

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 Python重试 📒📝 安装📝 使用📝 进阶使用⚓️ 相关链接 ⚓️📖 介绍 📖 在Python编程中,网络请求、数据库操作或任何可能因外部因素而失败的场景中,错误重试显得尤为重要。它能有效减少因暂时性问题导致的程序崩溃…