部署Django项目

最近做了个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.py
def 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 中的 application
module=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:18001
socket=/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的运行状态就好了。

你可能感兴趣的:(部署Django项目)