V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
fdsfsdfsdf3334
V2EX  ›  问与答

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

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

    项目是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   ·   我们的愿景   ·   实用小工具   ·   3578 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 11:03 · PVG 19:03 · LAX 04:03 · JFK 07:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.