django 写的项目,部署起来比较麻烦,大家有什么解决办法吗 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fdsfsdfsdf3334
V2EX    问与答

django 写的项目,部署起来比较麻烦,大家有什么解决办法吗

  •  1
     
  •   fdsfsdfsdf3334 2015-01-18 19:35:07 +08:00 5239 次点击
    这是一个创建于 3920 天前的主题,其中的信息可能已经有所发展或是发生改变。

    项目是gunicorn+nginx+django+Supervisor 这样搭配的

    如果一个项目第一次 部署好,以后不做修改,那还好

    但我发现我是经常修改,经常新建项目 或者把主机里的东西都删光了,从头开始部署

    感觉特别的繁琐

    比如 我这几天又要把写好的一个django项目弄到一个服务器上
    用gunicorn+nginx+django+Supervisor

    gunicorn 让它高效
    nginx 作为代理,代理静态资源
    Supervisor 守护进程, [主要是让他在电脑重启的时候自动运行我的web服务,崩溃了也自动重启web服务]


    我的步骤如下:

    ssh连上服务器,默认在 /root 目录

    执行以下命令 初始安装一些软件:
    [
    sudo apt-get update
    sudo apt-get upgrade
    apt-get install supervisor
    apt-get install nginx
    pip install django
    pip install gunicorn
    pip install gevent

    ]

    然后 git clone git://github.com/*****/mysite.git

    然后 cd mypro1/

    vim gunicorn_start

    输入内容: [

    !/bin/bash

    gunicorn --worker-class=gevent mysite.wsgi:application -b 0.0.0.0:8000
    ]

    然后 将gunicorn_start脚本设置为可执行

    执行 [chmod u+x gunicorn_start]

    然后建立supervisor配置文件
    执行 [vim /etc/supervisor/conf.d/mysite.conf]
    输入内容: [
    [program:mysite]
    directory=/root/mysite
    command=sh gunicorn_start
    user=root
    redirect_stderr=true
    stdout_logfile=/var/log/mysite.log
    stdout_logfile_maxbytes=10MB
    ]

    然后执行 [supervisorctl reread] 重启
    再执行 [supervisorctl update] 这个应该是更新,网上说要这么执行

    然后 把nginx的配置文件写到对应目录

    然后重启nginx服务器

    这样基本就可以访问了

    但是实际操作中,特别麻烦,每次部署的时候都很麻烦

    请问大家是怎么做的呀

    如果我用docker 会不会好点呀

    请大家分享下自己的方法可以吗

    谢谢了

    13 条回复    2015-01-19 10:34:55 +08:00
    rebornix
        1
    rebornix  
       2015-01-18 20:00:14 +08:00
    用docker,把环境部署这些事情和source code分开。
    virusdefender
        2
    virusdefender  
       2015-01-18 20:08:00 +08:00
    经常的重复部署的话 就把上面的操作写成脚本啊
    tudou527
        3
    tudou527  
       2015-01-18 20:21:34 +08:00
    到django官方找init.d脚本
    loading
        4
    loading  
       2015-01-18 20:26:03 +08:00 via Android
    建议换到 windows 平台,我每次都是杀掉python,然后等一分钟就好了(有服务检测)

    btw:我也是无辜的,别喷我
    tini9
        5
    tini9  
       2015-01-18 20:47:35 +08:00
    django部署复杂?rails表示笑而不语
    clino
        6
    clino  
       2015-01-18 21:00:13 +08:00
    我都是基本上把能固定写下来的全部整理在一起,比如 nginx 和 supervisor 的配置文件,同步到所有服务器的 /opt 的某个目录下

    然后部署的时候基本上只要做做 link
    nginx和supervisor都可以做成 include 配置文件的方式,每一个应用或者一种方式一个配置文件,这样比较灵活,link起来也方便

    当然需要安装的那些也是类似,把所有安装需要的文件也都同步到 /opt 下,安装步骤记下来,这样重新安装就非常快速了
    whtsky
        7
    whtsky  
       2015-01-18 21:19:07 +08:00 via iPad
    用 Fabric ,写好 Fabfile 之后可以一键部署好
    fdsfsdfsdf3334
        8
    fdsfsdfsdf3334  
    OP
       2015-01-18 21:52:27 +08:00
    @rebornix 嗯 我也重新思考了 打算就用docker 谢谢
    -----------------------------
    @virusdefender 嗯 我打算用脚本+docker 谢谢

    ---------------------------
    @tudou527 好的 我去找找看 谢谢
    ---------------------

    @loading 还是用linux比较好 嘿嘿
    ---------------------

    @clino 谢谢分享
    ---------------------

    @whtsky 谢谢
    9hills
        9
    9hills  
       2015-01-18 22:49:47 +08:00 via iPad
    其实你这个写个脚本不就好了。。。
    lerry
        10
    lerry  
       2015-01-18 22:53:51 +08:00
    同推荐Fabric,既然楼主是做Python开发的,用起来不在话下
    这是我自己用的一些fabric命令,比较乱。。
    https://github.com/lerry/server_tools
    66450146
        11
    66450146  
       2015-01-18 22:56:03 +08:00
    kill -HUP 就可以了。。。
    chloerei
        12
    chloerei  
       2015-01-18 22:58:46 +08:00
    fdsfsdfsdf3334
        13
    fdsfsdfsdf3334  
    OP
       2015-01-19 10:34:55 +08:00
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     903 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 22:36 PVG 06:36 LAX 15:36 JFK 18:36
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86