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

python web 怎么部署

  •  2
     
  •   kidneyband · 2015-10-08 10:03:41 +08:00 · 8153 次点击
    这是一个创建于 3334 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我没有 web 前端的经验。之前想学学前端,开始是学 java web ,边看视频边学,视频里用的是 MyEclipse 我用 Eclipse 跟着学,学得非常痛苦。弃坑。

    后来学 python 学了一点 django ,觉得这个框架好。简单,傻瓜式。

    写了一点贼简单的页面就想着,部署到服务器上,可是我看了一点的书,视频等,没有比较完整的讲怎么部署。

    问:如果我要大概了解这一整套的话,需要看些什么东西?
    31 条回复    2015-10-12 22:37:53 +08:00
    matthewgao
        1
    matthewgao  
       2015-10-08 10:08:14 +08:00 via Android
    WSGi 标准,用 gunicorn 或者 uwsgi+Nginx
    windyhoo
        2
    windyhoo  
       2015-10-08 10:19:15 +08:00   ❤️ 1
    刚好我这两天也在看 python 和 django
    因为我做后台的,部署这块比较熟
    我是看这个教程部署的:
    http://www.ziqiangxuetang.com/django/django-basic.html
    看前面四节就可以了,到“基本命令”这一节就可以跑起来了

    可以去阿里云买个服务器部署上去,我部署了一个,没买域名,只能 IP 访问
    启动的时候用 python manage.py runserver 0.0.0.0:8000 ,记得用 0.0.0.0 这个模式启动,我当时测试的时候直接跑 python manage.py runserver ,本地访问都没问题,部署阿里云上面死活访问不了,以为禁了外网的端口,后来加了 0.0.0.0 这种模式启动就可以访问了
    kidneyband
        3
    kidneyband  
    OP
       2015-10-08 10:25:58 +08:00
    @windyhoo 我也是看这个教程学了一段。看你这么说我还是觉得比较模糊啊。疑问就在怎么“部署到阿里云”。
    virusdefender
        4
    virusdefender  
       2015-10-08 10:27:30 +08:00
    fabric

    nginx + gunicorn
    Crossin
        5
    Crossin  
       2015-10-08 10:40:01 +08:00
    google nginx uwsgi django
    limuxy
        6
    limuxy  
       2015-10-08 10:41:00 +08:00 via Android
    直接 manage.py runserver 并不是好主意
    其实官方文档有写怎么部署 很详细的
    Anybfans
        7
    Anybfans  
       2015-10-08 10:46:15 +08:00
    @windyhoo 如楼上 manage.py runserver 并不好。这个只是本地开发环境用的服务器。
    crazyxin1988
        8
    crazyxin1988  
       2015-10-08 10:48:01 +08:00
    我是这样的
    supervisor+virtualenv+ngnix+gunicorn
    junnplus
        9
    junnplus  
       2015-10-08 10:50:18 +08:00 via Android
    如果是部署的话,不会直接 run server 吧,像楼上说的,要么 gunicorn 要么 nginx+uwsgi 去跑 Web ,这两种方法比较简单,还有 https://python-china.org 欢迎来这提问
    roychan
        10
    roychan  
       2015-10-08 10:59:00 +08:00
    nginx 反向代理 unicorn 即可
    JiaFeiX
        11
    JiaFeiX  
       2015-10-08 10:59:27 +08:00
    Dcoker 或者 SAE
    CharlieTian
        12
    CharlieTian  
       2015-10-08 11:12:35 +08:00
    aec4d
        13
    aec4d  
       2015-10-08 12:18:40 +08:00
    上 digitalocean 搜你要用的技术栈 基本都能找到相应的入门配置教程
    https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-gunicorn-and-nginx-on-ubuntu-14-04
    服务器的相应配置我一般都先跑去 digitocean 和 linode 上面去搜
    krizex
        14
    krizex  
       2015-10-08 12:28:29 +08:00
    django book
    cnleoyang
        15
    cnleoyang  
       2015-10-08 12:29:26 +08:00
    @aec4d DO 这件事请做的很赞。
    mengzhuo
        16
    mengzhuo  
       2015-10-08 13:01:35 +08:00
    supervisor + gevent + nginx 就好了
    kslr
        17
    kslr  
       2015-10-08 13:32:49 +08:00
    supervisor
    python web.py
    vicvinc
        18
    vicvinc  
       2015-10-08 13:40:56 +08:00
    nginx supervisor
    kidblg
        19
    kidblg  
       2015-10-08 14:07:06 +08:00
    nginx+uwsgi
    heaton_nobu
        20
    heaton_nobu  
       2015-10-08 14:10:05 +08:00
    virtualenv + gunicorn + nginx
    twor2
        21
    twor2  
       2015-10-08 16:40:59 +08:00   ❤️ 1
    刚开始的时候,没必要买服务器,可以用阿里的 ACE ,支持 python 2.7 ,包月 20 元,按量每小时几分钱。

    扩展服务(免费)包含:
    1.缓存( cache )
    2.数据库( MySql )
    3.定时任务( Cron )
    4.后台任务( Task )
    5.存储( Storage )

    如果要跑 django ,官方帮助见
    https://docs.aliyun.com/?spm=0.0.0.0.S8S75U#/pub/ace/quick-start/python

    我的一点经验:

    1.需要在部署跟目录下添加 requirements.txt
    添加一行 django ;如果要支持 mysql 可以添加一行 MySQL-python ,其他的 pymsql 也可以

    2.需要在部署跟目录下添加 requirements.txt
    from django.core.wsgi import get_wsgi_application
    import os
    os.environ['DJANGO_SETTINGS_MODULE'] = 'myapp_projectname.settings'
    application = get_wsgi_application()

    3.需要在部署跟目录下添加 app.yaml
    version: 1
    static:
    - path: /static/
    files: /static/
    expire: 30d
    - path: /templates/
    files: /templates/
    expire: 30d

    部署采用 svn ,还算方便。

    PS:第一次 svn checkout 的时候会有 requirements.txt , requirements.txt , app.yaml 略微修改一下就好
    twor2
        22
    twor2  
       2015-10-08 16:43:44 +08:00
    更正:
    2.需要在部署跟目录下添加 requirements.txt
    =
    2.需要在部署跟目录下添加 index.py
    twor2
        23
    twor2  
       2015-10-08 16:47:09 +08:00
    @cnleoyang 很多部署资料都能搜到 DO 上面,而且讲的很清楚
    aiver
        24
    aiver  
       2015-10-08 16:51:50 +08:00
    supervisor + gunicorn + virtualenv + nginx
    我觉得你如果是起步的话,可以用 nginx + virtualenv ,阿里云上买台低配的 linux 服务器,应用程序传上去, nginx 配置一个虚拟主机,用 IP 访问基本上就差不多了。另外,新手可以看看 Flask 框架,比 Django 更容易上手
    Silicon
        25
    Silicon  
       2015-10-08 16:55:11 +08:00
    我在用 Tornado ,所以直接 supervisor 加一条 python main.py ,然后 nginx 上设置下反代
    wingyiu
        26
    wingyiu  
       2015-10-08 17:27:49 +08:00
    fabric+supervisor+venv+tornado
    wellsc
        27
    wellsc  
       2015-10-08 19:18:40 +08:00
    python 部署有奇门, Tornado 大法好。
    MrEggNoodle
        28
    MrEggNoodle  
       2015-10-08 19:31:50 +08:00   ❤️ 1
    建议用 uwsgi+Nginx ,在 uwsgi 的官网就有一篇关于 django 的部署,跟着教程走就可以成功了。
    链接:
    http://uwsgi-docs.readthedocs.org/en/latest/tutorials/Django_and_nginx.html?highlight=django
    中文翻译:
    http://www.jianshu.com/p/e6ff4a28ab5a
    kidneyband
        29
    kidneyband  
    OP
       2015-10-09 10:01:45 +08:00
    @twor2 需要的就是这个答案,非常感谢。我去瞅瞅
    lidiya
        30
    lidiya  
       2015-10-09 18:09:23 +08:00
    题主可以看下这个教程 http://www.maiziedu.com/course/python/
    上面有完整的 django 知识及项目部署 高清视频教程 免费学习
    gevin
        31
    gevin  
       2015-10-12 22:37:53 +08:00
    uwsgi 官方文档的翻译:

    基于 nginx 和 uWSGI 在 Ubuntu 上部署 Django
    http://blog.igevin.info/post/12/
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2798 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 02:31 · PVG 10:31 · LAX 18:31 · JFK 21:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.