最近做了个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;
}
}
四、安装配置uwsgi
sudo apt-get install nginx uwsgi uwsgi-plugin-python
$ 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
然后写配置文件,包括程序运行的命令,运行环境,线程数等
给一个配置文件的例子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的运行状态就好了。