04 Nov 2016
step 1 >> python虚拟环境搭建
# virtualenv环境创建 cd /vagrant/example virtualenv venv27 -p python2.7 source venv27/bin/activate # 安装django和uwsgi vi requirement.txt *********************** Django==1.8 uWSGI==2.0.14 *********************** # requirement.txt中是虚拟环境需要安装的pip包 pip install -r requirement.txt
step 2 >> django项目初始化(例子中使用example项目,需要换成你自己的)
cd /vagrant/example
django-admin startproject example
step 3 >> django静态文件准备
cd /vagrant/example vim example/settings.py *************************** # 增加下面内容 STATIC_ROOT = os.path.join(BASE_DIR, "static/") *************************** # 将项目的静态文件收集到上面定义的/vagrant/example/static/中 python manage.py collectstatic
step1 >> nginx 安装
yum install nginx
step2 >> uwsgi_params文件准备
# 其实nginx yum安装后会自带这个文件 ls /etc/nginx/uwsgi_params /etc/nginx/uwsgi_params # 若不存在,需要去下载 # 因为uwsgi_params在nginx配置目录/etc/nginx中,所以下面配置文件中可以直接"include uwsgi_params;",否则需要指定绝对路径。
step3 >> nginx 配置
cd /vagrant/example # 创建nginx配置文件 vi ./example_nginx.conf *********************** server { listen 80; server_name _; charset utf-8; access_log /var/log/nginx/nginx.log main; error_log /var/log/nginx/error.log error; # max upload size client_max_body_size 75M; # adjust to taste # Django media location /media { alias /vagrant/example/media; } location /static { alias /vagrant/example/static; } location / { uwsgi_pass unix:/tmp/example.sock; include uwsgi_params; } } *********************** # 配置文件中的三个location分别为media、static、/,其中的路径需要按照你实际的来更换 # 因为我们将配置文件放在了example项目目录下,而nginx默认的虚拟主机配置目录是/etc/nginx/conf.d,所以需要拷贝过去 cp ./example_nginx.conf /etc/nginx/conf.d/ # 因为我们监听的是本机的ip:80,所以要把nginx默认的default.conf给备份起来,否则会冲突 mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bak
step 4 >> nginx 重载服务
nginx -t nginx -s reload
step 1 >> uwsgi 配置
cd /vagrant/example # 创建uwsgi的配置文件 vi uwsgi.ini *********************** [uwsgi] chdir=/vagrant/example module=example.wsgi master=true processes = 10 #max-requests=5000 pidfile=/tmp/example.pid daemonize=/var/log/uwsgi/example.log socket = /tmp/example.sock chmod-socket = 666 vacuum=true ***********************
配置说明
- chdir 指定base目录(既example的project根目录)
- module 指定django的wsgi接口文件
因为django新版将project根目录下的example.wsgi文件替换成了example/wsgi.py文件,而module的指定不支持文件名称,所以只能用python的模块调用方式”example.wsgi”来指定django的wsgi接口文件- master true的话,就开启了master 模式,会有一个master process 和多个worker process
- processes 指定worker process的数量
- pidfile 指定pid文件
- daemonize 在app加载后,将uwsgi服务化
- socket 指定socket文件,如果你使用的是socket监听的话
- chmod-socket 指定socket文件的权限,权限不足会无法访问,可在日志中看到错误提示
- vacuum uwsgi结束后,删除socket和所有生成的文件
step 2 >> uwsgi 启动
uwsgi --ini uwsgi.ini