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
abccba
V2EX  ›  Python

django 项目怎么和 gunicorn 配合部署?(不用 nginx)

  •  
  •   abccba · 2015-03-18 07:29:57 +08:00 · 3936 次点击
    这是一个创建于 3571 天前的主题,其中的信息可能已经有所发展或是发生改变。

    新学web开发,参照django官网tutorial搭建了那个polls的工程(一个很简单、原始的django项目)。
    想学习怎么和 gunicorn配合起来?不用nginix的前提下。django自带的runserver是OK的。

    网上搜了一下,几乎都是有ngnix的情形。。。
    找到一点零星资料,拼凑了下代码,发现不行:
    % gunicorn -w 2 start:app -b '127.0.0.1:8000'

    这是我的start.py:
    # -- coding:utf-8 --
    import os
    import sys
    reload(sys)
    sys.setdefaultencoding('utf-8')
    sys.path.append("/home/xxx/mysite")
    os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
    from django.core.wsgi import get_wsgi_application
    from dj_static import Cling
    app = Cling(get_wsgi_application())

    % tree mysite | grep -v pyc
    mysite
    ├── db.sqlite3
    ├── manage.py
    ├── mysite
    │   ├── init.py
    │   ├── settings.py
    │   ├── urls.py
    │   ├── wsgi.py
    ├── polls
    │   ├── init.py
    │   ├── admin.py
    .....................(略)

    8 条回复    2015-03-20 13:56:15 +08:00
    chon
        1
    chon  
       2015-03-18 08:32:14 +08:00 via Android   ❤️ 1
    跟nginx没关系,nginx只是个反向代理。
    直接 gunicorn mysite.wsgi:application -b xxxxxx
    就可以了。
    xiaket
        2
    xiaket  
       2015-03-18 08:58:47 +08:00 via iPhone   ❤️ 1
    你找找gunicorn是如何接一个标准的wsgi程序的,再找找如何在Django下写这个wsgi
    happywowwow
        3
    happywowwow  
       2015-03-18 09:11:57 +08:00   ❤️ 1
    gunicorn mysite.wsgi:app -b xxxxxx
    kxxoling
        4
    kxxoling  
       2015-03-18 09:56:54 +08:00
    对的,不过生产环境中还是建议配一个 nginx,gunicorn 官方是这么推荐的。
    virusdefender
        5
    virusdefender  
       2015-03-18 10:01:04 +08:00   ❤️ 1
    在django manage.py文件所在目录运行 gunicorn 工程名.wsgi:application -b 127.0.0.1:8020 --reload

    最好是配合nginx 性能问题 参考 https://virusdefender.net/index.php/archives/120/
    abccba
        6
    abccba  
    OP
       2015-03-18 16:40:09 +08:00
    首先,迟复为歉!谢谢几位朋友。

    @chon 我还以为需要针对django工程单独写一份类似 mysite.wsgi 文件才行呢,原来可以直接这么用
    @xiaket 好好,谢谢您的宝贵建议!
    @happywowwow 谢谢,命令运行良好。
    @kxxoling 嗯嗯,我先研究下简单情况,再上nginx。
    @virusdefender 谢谢您提供的方法还有参考资料。

    谢谢大家!
    julyclyde
        7
    julyclyde  
       2015-03-18 21:24:15 +08:00
    1 gunicorn可以直接对接django app
    2 django当代版本也提供wsgi app
    erhuabushuo
        8
    erhuabushuo  
       2015-03-20 13:56:15 +08:00
    直接用uwsgi
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1018 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 22:22 · PVG 06:22 · LAX 14:22 · JFK 17:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.