V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
aljun
V2EX  ›  Python

求靠谱的 gunicorn+nginx 的教程(新手问)

  •  
  •   aljun · 2015-12-04 17:04:49 +08:00 · 3808 次点击
    这是一个创建于 3271 天前的主题,其中的信息可能已经有所发展或是发生改变。

    楼主是个在学 web 的大学生

    已经做过一个网站,之前用的 uwsgi+nginx ,部署过两次,每次都被各种有些不对的教程搞的累得不行,然后 nginx 的各类参数和 wsgi 的关系也让我搞不懂关系

    现在想用 gunicorn+gevent+nginx 部署楼主的另一个项目,现在服务器正在备案,马上就可以了,希望有老司机能给点建议

    (大神勿喷)

    大家一起讨论一下 python 部署问题,反观 php 和 apache 的结合之好我只能羡慕

    16 条回复    2017-06-27 13:11:02 +08:00
    recall704
        1
    recall704  
       2015-12-04 19:09:51 +08:00   ❤️ 1
    binux
        2
    binux  
       2015-12-04 19:23:32 +08:00
    sunchen
        3
    sunchen  
       2015-12-04 20:51:25 +08:00
    官方文档写的不清楚吗?
    neoblackcap
        4
    neoblackcap  
       2015-12-05 10:53:47 +08:00
    php 跟 apache 结合是一个请求一个进程, apache 负责启动

    python 已经定义好了 wsgi ,前面的 web server 转发 http 请求给 wsgi server 就可以了,这个有什么问题?

    就是个简单的进程管理, nginx 转发而已,每次都是 git push 触发钩子脚本就可以部署了,没什么大的问题。
    aljun
        5
    aljun  
    OP
       2015-12-05 13:47:44 +08:00 via iPhone
    @neoblackcap 好吧,我渣,球详细教程
    matthewgao
        6
    matthewgao  
       2015-12-05 14:31:10 +08:00
    各种博客都瞎扯,直接看官方文档就都有了
    neoblackcap
        7
    neoblackcap  
       2015-12-05 17:37:24 +08:00
    @aljun 这个不是渣不渣的问题,而是你要理解为什么 Python 这样跟 mod_php 的区别,你说若要学 php,Python 上古时期还有 mod_python 呢,就是用 Python 替代 php ,一样的执行模式。

    至于部署,你真的需要 gevent 吗?你无端端增加中间件,那复杂度肯定上升啊,你直接单用一个 Gunicron 就好了。也就是 nginx+Gunicron ,过早的优化是万恶的源泉。你的网站先将日流量跑到上万的 PV 再说,若是一日才几百 PV ,然后就做高并发的时期,然后吐槽,这。。。。。。。

    淘宝单重启就要几个小时。
    neoblackcap
        8
    neoblackcap  
       2015-12-05 17:38:57 +08:00
    @aljun Gunicron 文档超级简单的,上面甚至还有 supervisor 的配置文件,你下载下来改改就能跑了。官方文档就是详细教程,为什么还要求?
    aljun
        9
    aljun  
    OP
       2015-12-05 18:59:23 +08:00 via iPhone
    @neoblackcap 我直接上 gevent 不行么⋯⋯gunicorn 对 gevent 配置很简单⋯⋯早期这样做有什么坏处,求指点(我还在考虑要不要加 redis⋯⋯)
    neoblackcap
        10
    neoblackcap  
       2015-12-05 19:12:48 +08:00
    @aljun 没有什么坏处,你配置多花点功夫而已,就好像你觉得 uwsgi 费时,我们生产还不是上 uwsgi 。

    redis 之类的,你能用自然就用。反正玩而已,你去试试就知道。坏处我能想到就是你要付出时间精力去配置这些东西,不过现在这个学习阶段,这些都不是事,多试试就好。

    多读文档,多读源码,多写代码。别人给你个 benchmark 结果真的就对你有用吗?一切都还是得自己去试,你试过就知道,大学里面这样的机会多。出去社会就不多了,赶紧试,试玩多总结就好了,不会的单词就查字典,不要吐槽英语,以后的文档都是英语的。不要期望那么多教程,以后很多时候甚至连文档都没有都有可能。
    aljun
        11
    aljun  
    OP
       2015-12-05 19:14:57 +08:00 via iPhone
    @neoblackcap 我个人博客用 flask 开发的,每套 nginx (懒),直接 gunicorn➕gevent ,反应特别快,不过现在这个项目是面向整个京城的大学,所以我想保守点,又想做最好,用的阿里云最低配的服务器,怎么样的架构最适合我呢(不拍累,但也不要太麻烦)
    neoblackcap
        12
    neoblackcap  
       2015-12-05 19:24:33 +08:00
    @aljun 什么架构?你最熟悉的架构就是最好的。说架构你上 InfoQ 一搜一大把,你一个人能用吗?选择你能维护,你最熟悉的就是最好的,性能不行的时候再加机器,升机器。

    没有最好的,你现在在网上看到的所有架构都是 trade off 之后的结果。你说你的项目食面向整个京城的大学,我还见过很多面向全国的的项目呢?所以年轻人不要想太多,扎克伯格当你也没有想那么多,就很直接的撸个 the facebook 。你就先去撸吧,等你上了一定规模,你的性能真不行的时候,你自然就会了,没有一步到位的。
    MrEggNoodle
        13
    MrEggNoodle  
       2015-12-05 19:43:55 +08:00
    yangzh
        14
    yangzh  
       2015-12-06 19:11:28 +08:00 via iPhone
    https://www.digitalocean.com/community/tutorials/how-to-deploy-python-wsgi-applications-using-uwsgi-web-server-with-nginx

    基本思路:首先想办法在本地成功用 uwsgi 启动好 python 程序。然后在服务器上同样地配置 uwsgi ,接着修改端口变成 localhost:port 的模式或者 tcp 模式。最后,在 nginx 上的某个 server 字段里面“反向代理”在服务器本地运行的 uwsgi python 网站,使得用户可以在公网访问网站。架构是 user <-> nginx <-> uwsgi <-> webapp.py

    使用 gunicorn 的话,思路完全一样。
    yangzh
        15
    yangzh  
       2015-12-06 19:13:36 +08:00 via iPhone
    如果你配置过 nginx + php (不是 apache )的话,你会发现思路完全一样。只是 php 使用 php-fpm 驱动, python 使用 uwsgi 或 gunicorn 驱动,而已。
    lfzyx
        16
    lfzyx  
       2017-06-27 13:11:02 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3618 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 04:32 · PVG 12:32 · LAX 20:32 · JFK 23:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.