我的服务器就 512M 内存,想跑一个非常简单的 Web 框架,当然也得有数据库和网页服务器这样的
需求大概就跑一个极少几个人访问的 API 服务,能满足最基本的 POST GET 数据库增删改就成,学习门槛可不要太高。
请问哪些搭配能符合这样的,最好是 Python,PHP 我也可以看看,谢谢各位!
1
christopheredwar 2021-07-16 12:21:20 +08:00
flask
|
2
0ZXYDDu796nVCFxq 2021-07-16 12:23:44 +08:00
API 不是很耗性能(CPU, 内存)的话,你这个量其实不需要考虑占用资源的问题
|
3
Rache1 2021-07-16 12:41:09 +08:00
云函数不更合适吗 😃
|
4
learningman 2021-07-16 12:45:33 +08:00 via Android
500m 已经很大了,人家 64m 的都能跑
|
5
tttttv2 2021-07-16 12:46:07 +08:00
肯定 Node.js 呀,koa, express 简单小巧,或者复杂一点的 egg.js
|
6
ThomasTrainset 2021-07-16 12:47:17 +08:00 via iPhone
512 已经足够了,几个人访问,跑啥都没问题
|
7
snowfuck 2021-07-16 12:49:42 +08:00
加点 swap 也行,不用太担心,数据库可以用 sqlite
|
8
Phishion OP 好的,谢谢各位,我研究研究
|
9
fkdog 2021-07-16 13:30:05 +08:00
一般量级的 web 服务压力都体现在数据库等网络 IO 上.
web 框架资源什么的其实挺无所谓的. |
10
PinkRabbit 2021-07-16 13:53:45 +08:00 1
FastAPI
|
11
blockmin 2021-07-16 14:06:08 +08:00
fastapi 一把梭
|
12
jslang 2021-07-16 14:12:49 +08:00
fastapi 不错,又快又 restful
|
13
abersheeran 2021-07-16 14:16:38 +08:00 1
楼上推荐 asyncio 框架的可别了,asyncio orm 至今没有一个能打的。还是用 django 、flask 、bottle 这种同步框架吧。
|
14
xdeng 2021-07-16 14:35:03 +08:00
http.HandleFunc("/", index)
http.ListenAndServe(":80", nil) |
15
SuperMild 2021-07-16 14:42:40 +08:00
我也是用 512M 的服务器,跑着大概 5 个没啥访问量的网站,都是用 Go 写的,估计再加几个都没问题。
你只跑一个小网站的话,完全不需要考虑资源问题,任何语言任何框架都跑不满 512M 。 |
16
CEBBCAT 2021-07-16 14:57:35 +08:00 via Android
@SuperMild 借楼问一下,有没有用 MySQL 、Redis 或消息队列等等服务?这些服务也会占不少资源吧?
|
19
luke2sweet 2021-07-16 15:06:52 +08:00
推荐我一个自己的,gin+mysql,go 打包后就 10 几 m 的二进制包,丢服务器上去就能直接运行了,如果嫌 mysql 太大可以换成 sqlite
https://github.com/lukedever/api-scaffold |
20
Phishion OP @luke2sweet 收藏了,谢谢
|
22
wizzer 2021-07-16 15:54:19 +08:00
|
23
keepeye 2021-07-16 15:58:38 +08:00
php 可以试试 lumen,包含数据库和 orm
python 可以用 tornado,不包含数据库,可以直接用 pymysql,反正你没几个访问量 |
24
Bromine0x23 2021-07-16 16:18:01 +08:00 1
Sinatra http://sinatrarb.com/
|
25
labulaka521 2021-07-16 16:21:00 +08:00
数据库记着用 sqlite
|
26
jslang 2021-07-16 16:23:11 +08:00
@jslang 最开始以为楼主要 Python 或者 PHP,现在看楼主需求,golang 的 gin 或者 echo 比较满足
|
27
jslang 2021-07-16 16:24:29 +08:00
数据库直接 Redis 也可吧,需要关系数据库的话可以 sqlite,或者其它云 mysql 啥的
|
28
yEhwG10ZJa83067x 2021-07-16 16:26:40 +08:00
php 的话 ci
|
29
jin7 2021-07-16 16:27:30 +08:00
go php
|
30
also24 2021-07-16 16:37:47 +08:00
『能满足最基本的 POST GET 数据库增删改就成』
那还上框架干啥,直接裸的 php 呗 |
31
hushao 2021-07-16 16:46:07 +08:00
python 的话,tornado+sqlite 裸跑,直接 80 端口或者想加一层 nginx 也可以,记得定期重启服务。
|
32
lesismal 2021-07-16 16:49:26 +08:00
golang
```golang package main import ( "context" "fmt" "io" "net/http" "os" "os/signal" "time" "github.com/lesismal/nbio/nbhttp" ) func onEcho(w http.ResponseWriter, r *http.Request) { data, err := io.ReadAll(r.Body) if err != nil { return } if len(data) > 0 { w.Write(data) } else { w.Write([]byte(time.Now().Format("20060102 15:04:05"))) } } func main() { mux := &http.ServeMux{} mux.HandleFunc("/echo", onEcho) svr := nbhttp.NewServer(nbhttp.Config{ Network: "tcp", Addrs: []string{":8080"}, MessageHandlerPoolSize: 256, EnableSendfile: true, }, mux, nil) err := svr.Start() if err != nil { fmt.Printf("nbio.Start failed: %v\n", err) return } interrupt := make(chan os.Signal, 1) signal.Notify(interrupt, os.Interrupt) <-interrupt ctx, cancel := context.WithTimeout(context.Background(), time.Second*3) defer cancel() svr.Shutdown(ctx) } ``` |
33
falcon05 2021-07-16 16:56:44 +08:00 via iPhone
框架倒还好,只要不是 Java 那些重量级的。我以前在搬瓦工 128m 内存的小鸡上还能跑 WordPress,唯一的问题是 mysql 经常 oom 。
|
34
rationa1cuzz 2021-07-16 17:23:50 +08:00
python 的话 flask 学习成本很低
|
35
fansfans 2021-07-16 18:09:12 +08:00
建议 flask + sqlite3 文档全 demo 多 mysql 有点吃内存
|
36
beginor 2021-07-16 20:44:44 +08:00 via Android 2
dotnet5 试一下, 绝对干翻楼上说的这些
|
37
d5 2021-07-16 21:20:15 +08:00
推荐使用 fastapi 大佬打包的 docker 镜像,镜像大概 90M,配合 Gtihub Action 做 ci/cd 。性能也不错。
https://github.com/tiangolo/meinheld-gunicorn-flask-docker/tree/master/docker-images 测试站点: https://surface.wiki/ |
38
yeqizhang 2021-07-16 21:26:47 +08:00 via Android
512 可能就数据库比较吃紧,我 1g 的树莓派跑了 flask 还跑了另外的 python 脚本 mysql syncthing docker,也能正常用
|
39
ttyn 2021-07-16 22:07:49 +08:00
Golang 使用 gin 大概 6M 左右
Node.js 使用 Excpress 大概 15M 左右 dotnetcore 大概 25M 左右 这些都是基础框架启动时的内存,加载 Mysql 数据调用,内存大概增加 10M 的样子,如果还要加其它插件,就不好说了 Golang 是真的小,使用 Alpine 构建镜像也只有 20M 左右 |
40
seakingii 2021-07-16 22:19:41 +08:00
占用资源少,首先 是 C ,C ++ ,RUST,其次是 GOLANG
|
41
seakingii 2021-07-16 22:23:51 +08:00 1
我自己会选择 .NET 5 ,它本身就是自带框架,数据库用文件型的 LiteDB,简单好用
|
42
wuwukai007 2021-07-16 22:58:57 +08:00
服务器预装 python,flask 10 行起服务
|
43
misaka19000 2021-07-17 01:33:38 +08:00
Flask + uWsgi + SQLite 最简单的方案
|
44
treizeor 2021-07-17 09:49:34 +08:00
可以跑个 frp 映射本地的服务出去
|
45
narmgalaxy 2021-07-17 14:51:14 +08:00
建议使用 vercle,不用服务器.
|
46
yizmaoaa 2021-07-17 15:02:54 +08:00
如果用 Java 的话可以用 Vert.x,然后用 Graalvm 打包
|
47
fox0001 2021-07-17 16:12:16 +08:00 via Android
512MB 已经非常充裕了。直接考虑 MariaDB + Python3 。至于是 Python3 的哪个 Web 框架,都不是问题。我的 VPS,256MB 内存,照样跑 Blog 、私人 web 服务等
|
48
encro 2021-07-17 16:43:52 +08:00
|
49
encro 2021-07-17 16:45:30 +08:00
不用框架,直接用 headless cms ?
|
50
cyd 2021-07-18 15:48:17 +08:00
? 512m 很大了。我直接跑了 java spring boot + mariaDB + nginx 。还有那个不可描述的东西。
记得开 swap 就行。我搞了 1G 。 |
51
beyondex 2021-07-18 19:45:14 +08:00 via Android
.NET Core 5
|
52
threeEggs123 2021-07-18 22:46:24 +08:00 via Android
aws lambada,然后在上面写 python,按量付费,外面套一个 api gateway 。很便宜,每个月还有免费的额度。
|
53
cloverzrg2 2021-07-19 10:16:19 +08:00
go 的 gin+sqlite3 (几个人访问没啥问题,而且可以随时切到 mysql ),内存占用不会超过 10M 。你说的网页服务器,可以不要,除非你知道你想干啥(多站点路由配置、ssl 证书等需求)
|
54
HUNYXV 2021-07-19 10:53:25 +08:00
|
56
NCE 2021-07-19 19:42:18 +08:00
512MB 就老老实实用 php 把,nginx+mysql+slim 之类的轻框架都没什么压力
|
57
aru 2021-07-19 20:47:08 +08:00
php 很合适的
|