配了一天了,又是 nginx 又是 uWSGI 又是 Gunicorn,大佬可有 Docker 一键部署的环境
1
lpd0155 2019-12-17 21:42:15 +08:00 via Android
配过 django 的,也是搞了一天多
|
2
Vegetable 2019-12-17 21:46:22 +08:00
熟了就好了,nginx 配静态文件算是最容易踩坑的了,熟悉了就一遍过了.
|
3
ericls 2019-12-17 21:48:09 +08:00 via iPhone
所有程序不都这样吗
一个 server 一个 nginx |
4
hoobyy 2019-12-17 21:50:38 +08:00 via Android
你一个新手,哪需要 nginx,用 runserver 不香吗
|
5
Trim21 2019-12-17 21:51:38 +08:00 1
在 docker 里面用 gunicorn, 然后在机器上用一个 nginx 反代 docker 开出来的 http 端口
|
7
gwy15 2019-12-17 21:55:59 +08:00
flask 要引入 CDN 更烦……
|
8
ysicing 2019-12-17 23:25:45 +08:00 via iPhone 1
你可以参考 ctfd 这个项目
|
9
yuting0501 2019-12-18 01:47:00 +08:00 via iPhone
一直都用 docker 部署,很顺畅,网络上很多参考项目
|
10
Nitroethane 2019-12-18 07:20:45 +08:00 via iPhone
所以我用 flask 写了一半的项目正在用 go 重写
|
11
renmu 2019-12-18 08:36:29 +08:00 via Android 1
Flask + Gunicorn 外面再套个 NGINX 就够了
|
12
sadfQED2 2019-12-18 09:02:38 +08:00 via Android
是的,我也部署过一次这玩意,以后项目这辈子都不想用他了。自己弄个虚拟机先搞搞吧,不熟悉最好别直接在物理机上弄
|
13
HTSdTt3WygdgQQGe OP |
14
hakono 2019-12-18 09:05:43 +08:00
大部分语言都是这样的
语言框架+web 服务+nginx 代理 像 go 或 nodejs 这样写好直接无脑运行起来挂到服务器上自己本身就是个还算高效的 server 才是少数………… 你 php 就得 php-fpm+nginx 呢 |
15
whoosy 2019-12-18 09:06:25 +08:00
flask+gunicorn+docker+nginx
|
16
HTSdTt3WygdgQQGe OP @ysicing 你是指这个嘛? https://github.com/CTFd/CTFd
|
17
durban126 2019-12-18 09:27:23 +08:00
还好吧 没有多复杂吧
如果是开发环境完全就可以使用 flask run 就起来了 如果是生产环境推荐我使用的 nginx + supervisor + gunicorn 你说的复杂,我觉得是你不了解,所以说复杂,就跟吃饭一样,不会用筷子就说筷子不好用,但是学会了,岂不是吃嘛嘛香 其他的看起来简单 都是大家经常用都总结好了的 你直接拿过来就好了 肯定不觉得麻烦 |
18
rosu 2019-12-18 09:29:50 +08:00 via iPhone
|
19
TrickWu 2019-12-18 09:30:32 +08:00
Flask + Gunicorn + supervisor
nginx 代理请求 我都是这样开发的 简单 上手一次之后就都明白了 |
20
inhzus 2019-12-18 09:30:53 +08:00 via Android
写好 supervisord 和 gunicorn 配置文件 volume 映射到 docker 里直接启动 supervisord,物理机套个 Nginx。
flask 我最发愁的是 configuration,哎真的烦 |
21
donotquestion 2019-12-18 09:32:05 +08:00 1
不会啊。。我都是 docker-compose 一遍过啊
|
22
ipwx 2019-12-18 09:38:02 +08:00 via Android
flask gunicorn 足以。uwsgi 既麻烦又不必要
|
23
HTSdTt3WygdgQQGe OP @donotquestion compose 文件是否方便分享一下
|
24
tinybaby365 2019-12-18 09:43:51 +08:00
如果你用 K8S,我就建议一个 pod 多个容器。退而求其次,用 docker-compose。千万不要一个 docker 塞 nginx+gunicron,把它当成一个 VM 使用。
|
25
hmxxmh 2019-12-18 09:50:29 +08:00
@tinybaby365 哈哈,我想起我第一个 docker 镜像一个多 g。。。,把系统,依赖全放到了容器
|
26
encro 2019-12-18 10:03:44 +08:00
nginx + supervisord + uwsgi 一行命令
或者 nginx + supervisord + gunicorn 一个配置 |
27
john170502 2019-12-18 10:41:44 +08:00
golang 直接编译成二进制文件香不香?
|
28
wuwukai007 2019-12-18 11:05:39 +08:00 via Android
确实,不管用 docker 还是手动,都比较麻烦
|
29
dongyx 2019-12-18 11:35:48 +08:00
用 NGINX + Gunicorn 的,如何解决 url_for(..., external=True)返回的 URL 转换的问题?
|
30
Allianzcortex 2019-12-18 11:51:16 +08:00
@Trim21 说的是正解,因为项目很多时候会有很多依赖(e.g. redis/celery),写好 docker-compose 一次编排就够了。做法如:
command: > gunicorn -b 0.0.0.0:5000 expose: - "5000" 之后 Nginx 定义如下: nginx: image: nginx:stable-alpine(或者其他的 Linux 系统) container_name: your_server volumes: - ./nginx/conf.d:/etc/nginx/conf.d ports: - "5000:80" depends_on: - your-server 亲历过所以可以肯定生产环境就是这样做的,用 AWS + rancher 配合很顺畅。 |
31
wangyzj 2019-12-18 12:15:46 +08:00
在会用 nginx 的前提下
Flask + Gunicorn 或者其他 server 搞起来就可以了 |
32
ashCloud 2019-12-18 14:13:32 +08:00
(( nginx+uwsgi+flask )+supervisor )+docker 一把梭。
弄不出来的话晚上可以格尼写个 demo |
33
lihongjie0209 2019-12-18 14:15:52 +08:00
@john170502 #27 这个东西和二进制打包有什么关系? go 的 web 程序内嵌 web 服务器? java 也支持
楼主说的是多个组件之间配置麻烦 |
34
wangmy 2019-12-18 14:19:37 +08:00
@tinybaby365 在一个无外网环境下部署,我就是当容器用的,所有都在 docker 里面。没外网依赖太难处理了, 不知道还有啥简单的办法不
|
35
superalsrk 2019-12-18 18:20:32 +08:00
nginx+gunicorn+flask 啊~很快
|
36
superalsrk 2019-12-18 18:20:49 +08:00
不过你 qps 低的话。。直接 runserver 也行啊
|
37
loading 2019-12-18 18:26:14 +08:00 via Android
我想知道 windows 如何部署,准备写了个网盘,用 runserver,有一个下载就堵死啦
@superalsrk |
38
Les1ie 2019-12-18 18:29:48 +08:00
https://github.com/tiangolo/uwsgi-nginx-flask-docker 我用的这个 缺点是比较耗内存 :( 能用就行的原则
bug: 还真有,偶尔发现网站莫名 500 ( 1 年两三次), 手动重启一下容器才行,确信不是我的代码 bug |
39
Les1ie 2019-12-18 18:30:26 +08:00
我用过 runserver 并发大概为 1 吧... 极度容易挂掉,不推荐
|
40
wzwwzw 2019-12-18 18:40:51 +08:00
runserver 本身就是单线程的,要考虑 gunicorn + gevent 或者单 gunicorn 才行。
|
41
est 2019-12-18 18:45:58 +08:00
可以试试 uWSGI 直出 HTTP 服务。免去了 nginx 的麻烦。
|
42
ysicing 2019-12-18 20:38:48 +08:00 via iPhone
@q409640976 是的,这个项目相对还是比较成熟的,几年前用过
|
44
wybhdxfx 2019-12-18 21:11:03 +08:00
我的博客是 gunicorn+nginx,用着还可以。supervisor 暂时还用不上,需要更新就先 kill gunicorn,从 github pull,然后再启动 gunicorn。nginx 配好都很很少重启。
|
45
hzwjz 2019-12-18 21:38:01 +08:00 via Android
使用 docker 就别用 uwsgi
了,uwsgi 是要编译出来的。用 gunicorn 省时省力。 如果实在是想用 docker+uwsgi,前往同性交友网站:/leollon/yet-another-image-bed.git😂 |
46
CallMeReznov 2019-12-18 22:05:21 +08:00
NGINX+ FLASK 8001 8002 8003 8004 .....................................................多开?
怕崩溃就用 bat 写个 LOOP 没问题吧? |
47
CallMeReznov 2019-12-18 22:07:07 +08:00
没 @就回复了,我说 WINDOWS 上简单的部署方式
我本来是想回 @loading #37 |
48
BFDZ 2019-12-18 23:03:59 +08:00 1
|
49
HTSdTt3WygdgQQGe OP @BFDZ 多谢指点
|