共219行
2026-02-08 16:36:46
GitHub 的免费托管服务 GitHub Pages 主要针对静态网站(如博客、文档、个人主页),不支持直接运行后端代码(如 PHP、Python、Node.js 等)。
如果你需要托管动态服务(如需要连接数据库、处理用户登录的网站),以下是具体方案:
如果你必须运行后端代码,建议将前端部署在 GitHub Pages,后端部署在以下免费平台:
GitHub 本身无法免费托管动态服务,但你可以利用它托管前端,再配合其他免费的后端平台来搭建完整的动态网站。
Heroku 部署后端服务主要依赖 Git 推送 和 容器化 技术,核心原理是“代码即应用”,你不需要管理服务器,只需提交代码即可。
Heroku 的架构基于 PaaS(平台即服务),它通过抽象化底层硬件,让你只关注代码逻辑。
如果你需要免费的替代方案,可以考虑 Railway 或 Render,它们目前仍提供免费额度,且部署流程与 Heroku 类似。
Cloudflare 确实可以免费托管动态服务,而且它提供了两种非常强大的免费方案:Cloudflare Workers(无服务器函数)和 Cloudflare Pages(全栈应用托管)。
这两种方案都提供永久免费额度,对于个人项目、博客或小型 API 来说完全够用。
这是 Cloudflare 的“无服务器函数”服务,专门用来运行后端代码(如处理 API 请求、数据库操作)。
原本用于托管静态网站,现在通过 Pages Functions 功能,可以直接在 Pages 项目中编写后端逻辑,实现“全栈”部署。
动态服务离不开数据存储,Cloudflare 也提供了配套的免费存储服务:
Cloudflare 是目前免费托管动态服务的最佳选择之一。如果你只需要一个简单的后端 API,直接用 Workers;如果你在做一个完整的网站(包含前端页面),用 Pages 会更方便。
直接部署 Gin 框架到 Cloudflare Workers 是不可行的,因为两者架构完全不同。但你可以用 Cloudflare Workers 的 Workers 语法 重写一个类似的 Go 语言 HTTP 服务。
这是最标准的方法,虽然用 JavaScript/TypeScript 语法,但性能最好:
// index.js
export default {
async fetch(request, env, ctx) {
return new Response("Hello World from Cloudflare Workers!", {
headers: { "Content-Type": "text/plain" },
});
},
};Hono 是专门为边缘计算设计的框架,API 类似 Gin,支持在 Workers 上运行:
// 安装依赖:npm install hono
import { Hono } from 'hono';
const app = new Hono();
// 类似 Gin 的路由
app.get('/', (c) => {
return c.text('Hello World!');
});
app.get('/api/user/:id', (c) => {
const id = c.req.param('id');
return c.json({ user_id: id, message: 'Hello User' });
});
app.post('/api/data', async (c) => {
const body = await c.req.json();
return c.json({ received: body });
});
// 导出给 Workers
export default app;Cloudflare Workers 通过 Wasm Workers 支持 WebAssembly,但配置复杂且功能有限:
// main.go
package main
import (
"github.com/syumai/workers"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello from Go WASM!"))
})
workers.Serve(nil) // 启动 Workers
}需要编译为 WebAssembly 并配置
"wrangler.toml",但不推荐用于生产。
完整部署步骤(以 Hono 为例)
npm install -g wrangler
mkdir my-worker && cd my-worker
npm init -y
npm install hono"src/index.js"
import { Hono } from 'hono';
const app = new Hono();
app.get('/', (c) => c.text('Hello World!'));
app.get('/api/hello/:name', (c) => {
const name = c.req.param('name');
return c.json({ message: `Hello ${name}!` });
});
export default app;"wrangler.toml"
name = "my-hello-worker"
main = "src/index.js"
compatibility_date = "2024-01-01"wrangler login
wrangler deploy部署后你会获得一个 URL(如
"https://my-hello-worker.youraccount.workers.dev"),访问即可看到 "Hello World!"。