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

2015-01-18 19:35:07 +08:00
 fdsfsdfsdf3334

项目是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 会不会好点呀

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

谢谢了

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

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

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

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

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

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

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

@whtsky 谢谢
9hills
2015-01-18 22:49:47 +08:00
其实你这个写个脚本不就好了。。。
lerry
2015-01-18 22:53:51 +08:00
同推荐Fabric,既然楼主是做Python开发的,用起来不在话下
这是我自己用的一些fabric命令,比较乱。。
https://github.com/lerry/server_tools
66450146
2015-01-18 22:56:03 +08:00
kill -HUP 就可以了。。。
chloerei
2015-01-18 22:58:46 +08:00
fdsfsdfsdf3334
2015-01-19 10:34:55 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/163272

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX