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

每次部署 Django 项目都抓狂,求正确姿势

  •  
  •   sayhier · 2018-08-20 20:40:28 +08:00 · 5350 次点击
    这是一个创建于 2288 天前的主题,其中的信息可能已经有所发展或是发生改变。

    个人练手用的小项目,用的是 Django 的后端和 Bootstrap 前端,部署用 gunicorn + suervisor + nginx 在 ubuntu 下,每次搞一堆配置文件都不顺利,究其原因还是对原理不够了解,求详细解读,或求推荐其他的部署方案。

    24 条回复    2018-08-22 21:57:16 +08:00
    0xABCD
        1
    0xABCD  
       2018-08-20 20:44:41 +08:00
    把报错信息贴出来,大家一起帮你看看。
    tanglangshan
        2
    tanglangshan  
       2018-08-20 20:47:53 +08:00
    docker 就是解决这个问题的
    vakara
        3
    vakara  
       2018-08-20 20:53:06 +08:00 via Android
    docker 可以帮你解决这些问题。
    pepesii
        4
    pepesii  
       2018-08-20 20:53:30 +08:00 via iPhone
    你写个 bash shell,或者 ansible,以后就一样的了
    Cbdy
        5
    Cbdy  
       2018-08-20 21:10:44 +08:00
    我一度认为,Docker 就是为 Python 而发明的技术
    chengxiao
        6
    chengxiao  
       2018-08-20 23:38:48 +08:00 via iPhone
    感觉就第一次部署有难度吧,后面熟了直接把配置文件 uwsgi 和 nginx 的配置文件路径参数一改就行了
    dcalsky
        7
    dcalsky  
       2018-08-21 00:06:57 +08:00
    练手小项目直接 python ./manage.py runserver 0.0.0.0:8000 够用。等你多了解了一个 wsgi,再用 uwsgi, gunicorn 之类的 web server.
    julyclyde
        8
    julyclyde  
       2018-08-21 06:33:32 +08:00
    如果你把文件拷贝过去不能运行,用了 docker 也照样不能运行
    kios
        9
    kios  
       2018-08-21 08:02:22 +08:00
    docker~
    lihongjie0209
        10
    lihongjie0209  
       2018-08-21 09:12:40 +08:00
    换个语言喽, 用 docker 有必要吗?
    nimdanoob
        11
    nimdanoob  
       2018-08-21 10:11:52 +08:00
    docker 了解一下
    tt67wq
        12
    tt67wq  
       2018-08-21 10:20:41 +08:00
    docker swarm
    zhengxiaowai
        13
    zhengxiaowai  
       2018-08-21 10:37:07 +08:00
    Django 部署很简单啊,官网文档都有,另外写个 makefile。。。反正我这个 makefile 用了 2 年了。。
    chengxiao
        14
    chengxiao  
       2018-08-21 10:55:42 +08:00
    感觉就是楼主要分清楚 Nginx gunicorn suervisor 这三个都是负责干嘛的
    一上来可以先不用 suervisor 这东西主要负责进程管理 快速重启和启动 gunicorn 和 nginx 的
    搞清楚 nginx 和 gunicorn 或者 uwsgi 的关系 基本就能理清楚和排查错误了
    scriptB0y
        15
    scriptB0y  
       2018-08-21 10:56:08 +08:00
    asuraa
        16
    asuraa  
       2018-08-21 11:15:57 +08:00
    我用的 dokku 部署的 也即是 heroke 每次部署只需要 push 一下就行了
    xanthu
        17
    xanthu  
       2018-08-21 11:23:10 +08:00 via Android
    1.你可以试试 cookiecutter-django,命令行自动生成配置好的项目,也可以自己写 cookiecutter


    2.建议开发环境和部署环境分开,可以继承 Configuration,写配置类,我一般是一个通常配置文件,一个开发配置文件,一个部署配置文件...然后每次只要在 manage.py 里指定下环境变量就可以了。


    3.Pycharm 直接连接 docker 环境进行开发


    有段时间没用 Django 开发了,可能有说错的地方....
    sayhier
        18
    sayhier  
    OP
       2018-08-21 13:13:34 +08:00 via Android
    看来推荐 docker 的多
    herozhang
        19
    herozhang  
       2018-08-21 13:18:09 +08:00
    用 docker 吧
    warcraft1236
        20
    warcraft1236  
       2018-08-21 13:21:35 +08:00
    为啥不用 uwsgi 呢
    est
        21
    est  
       2018-08-21 13:22:13 +08:00
    @Cbdy 然而还是 go 用的多。。
    zzlettle
        22
    zzlettle  
       2018-08-21 18:16:44 +08:00 via iPad
    有谁用 systemd 来部署虚拟环境中的 gunicorn Django 的教程吗?
    gladuo
        23
    gladuo  
       2018-08-21 23:51:05 +08:00
    gunicorn -d 其实都贼稳,不用担心
    cosven
        24
    cosven  
       2018-08-22 21:57:16 +08:00
    写了一个示例: https://gist.github.com/cosven/e308359b83df5cbbe7398b4a95247add

    Python 3 + venv + gunicorn + NGINX + supervisor
    (配合其它原理文章食用更佳)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   882 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 21:34 · PVG 05:34 · LAX 13:34 · JFK 16:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.