部署Django项目

来源:互联网 发布:淘宝便利店入口 编辑:程序博客网 时间:2024/06/02 20:39

最近做了个python web项目,用的是Django框架,搭配的软件都有uWSGI + Nginx + Django+supervisor+virtualenv

一、用virtualenv来配置python的虚拟环境。

tips:为什么要用虚拟环境?

首先python有很多个发行版,我这个项目用的是python3.4,但我系统上有2.7,3.4,3.5这三个版本,我为了隔绝与系统环境的关联,而且开了虚拟环境之后,搜所有的python指令都默认会指向虚拟环境的python版本,所以说,一个项目建一个虚拟环境,在导出需求包的时候也非常方便。

关于virtualenv的搭建与安装使用:http://www.cnblogs.com/technologylife/p/6635631.html

二、测试运行Django项目

找到你的manage.py文件,这个是在你创建Django项目时系统自动创建的一个文件。

然后运行:

python manage.py runserver 0.0.0.0:8000

打开你的浏览器,网址输ip:8000。如果运行正常,说明这个项目的环境配置已经完成了。

三、安装配置nginx

apt-get install nginx  #安装
/etc/init.d/nginx start         #启动/etc/init.d/nginx stop          #停止/etc/init.d/nginx restart       #重启
配置nginx:

nginx的默认端口是80端口,如果你的80端口被占用了,你可以修改默认端口,在 /etc/nginx/sites-enabled/*,或者重新写配置文件

重新写配置文件:

在 /etc/nginx/conf.d/目录下创建 .conf 文件,nginx会在启动时自动读取这个文件,重写之后记得在/etc/nginx/nginx.conf这个文件里把include /etc/nginx/sites-enabled/*这句话给注释掉

给一个配置文件的例子


upstream django {    # 有两种选择,根据 uWSGI 中配置而定    # server 127.0.0.1:18001;    server unix:///tmp/mysite.sock;}server {        listen   18090;        charset utf-8;                # 认证日志          access_log /usr/local/var/log/nginx/exam_access_log;          # 错误日志            error_log /usr/local/var/log/nginx/exam_error_log;            location /static {                # 静态文件链接地址                alias /your/web/path/static/;        }        location / {                include uwsgi_params;                uwsgi_pass django;        }}

这样的话就可以用浏览器访问静态文件,listen是端口号。


四、安装配置uwsgi


sudo apt-get install nginx uwsgi uwsgi-plugin-python

可以使用 uwsgi –version 查看 uwsgi 版本,如果版本过低则


$ pip install -U uwsgi$ cd /usr/bin$ mv uwsgi uwsgi-old$ ln -s /usr/local/bin/uwsgi uwsgi
为了测试可以先生成一个测试文件 test.py

# test.pydef application(env, start_response):    start_response('200 OK', [('Content-Type','text/html')])    #return ["Hello World"] # python2    return [b"Hello World"] # python3
然后测试一下,端口自定

uwsgi --http :8000 --wsgi-file test.py

用浏览器打开后能够看到“hello world”则说明正常运行

然后写配置文件,包括程序运行的命令,运行环境,线程数等


给一个配置文件的例子mysite.ini

[uwsgi]# 项目目录chdir=/Users/hourong/PycharmProjects/examination# 从文件夹中找 /your/project/wsgi.py 中的 applicationmodule=examination.wsgi:application# 设置环境env=DJANGO_SETTINGS_MODULE=examination.settings# pid 文件地址pidfile=/tmp/project-master.pid# 开放的端口( http, tcp, unix socket )# http=127.0.0.1:49152# socket=127.0.0.1:18001socket=/tmp/mysite.sock# unix socket 需要指定文件的chmod-socket=664# 用于添加 virtualenv 的地址home=/Users/hourong/venv/examnation# 当前进程数processes=1# 允许多线程enable-threads=True

运行程序的时候只要执行

uwsgi --ini mysite.ini

五、程序运行起来如果正常,那么恭喜你,所有配置就都完成了。当然这个服务器可能并不稳定,有可能会挂掉,为了防止这种风险,我们用supervisor来守护进程,万一这个进程挂掉了,supervisor会再把它拉起来。具体配置见http://blog.csdn.net/xyang81/article/details/51555473


以后就只用监控supervisor的运行状态就好了。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 1、你在主持时说错话了怎么办? 领导让你替他参加重要会议怎么办 在备孕期老公照了片怎么办 和混混打架后被混混纠缠怎么办 开了一年的瑜伽馆想关掉会员怎么办 广东工厂宿舍里面床板有臭虫怎么办 胃癌手术后12天引流液多怎么办 八个月了胎儿头还在上面怎么办 喂奶一个月后奶头又裂开了怎么办 孩子吃奶吃的奶头裂开了怎么办 很想打坐久就是受不了腿疼怎么办 宝宝含乳一直纠正不过来怎么办 婴儿衘乳不正确只吸乳头怎么办 怀孕7个月了晚上睡不着怎么办 尚德学校学费交了一半退学怎么办 随着年龄的增长胸越来越来小怎么办 运动文胸里边的海绵垫会乱跑怎么办 带胸罩时在外面忽然扣子开了怎么办 我的脸一边大一边小怎么办 桶装水盖子吸在饮水机了怎么办? 孕37周大腿内侧被内裤磨烂怎么办 生存指南合成的时候闪退怎么办 王者荣耀队友用语音骂我怎么办? 轨道衡电子计量数据不对上怎么办 孕5个月胎儿发育慢怎么办 扎高马尾后面头发扎不上去怎么办 吃了不太新鲜的肉怎么办 军训腿疼的蹲不下去怎么办 面对对老师不尊重的学生该怎么办? 当学生犯了错老师应该怎么办? 用木棒按摩脚底感觉有疙瘩怎么办 人流后按摩造成子宫复位不好怎么办 留守儿童不去学校你该怎么办 在校读书的留守儿童自身应该怎么办 进行定向越野活动时迷路了怎么办 温十系统更新后卡死无法开机怎么办 在武术比赛中被打昏了了怎么办 孩子被欺负了怎么办怎么告诉孩子 网贷雇佣黑社会到家要钱要怎么办 穿越火线枪声和脚步声没有了怎么办 魅蓝5s快充不了怎么办