Nginx+Uwsgi部署Django项目
下载uwsgi
下载flup (貌似不装也可以)
下载django
2. 安装
flup和django 都是用 python setup.py install
uwsgi安装
1.
cd uwsgi-0.9.6.8
2.
python uwsgiconfig.py --build
3.
cd nginx
4.
cp uwsgi_params /usr/local/nginx/conf/
3. 建立项目目录
1.
cd /root
2.
django-admin.py startproject my_django
在my_django目录下 vi uwsgi.xml
01.
<
uwsgi
>
02.
<
socket
>0.0.0.0:8000</
socket
>
03.
<
listen
>20</
listen
>
04.
<
master
>true</
master
>
05.
<
pidfile
>/usr/local/nginx/uwsgi.pid</
pidfile
>
06.
<
processes
>2</
processes
>
07.
<
module
>django_wsgi</
module
> #这个文件下面要建立
08.
<
pythonpath
>/root/my_django</
pythonpath
> #刚才建立项目的路径
09.
<
profiler
>true</
profiler
>
10.
<
memory-report
>true</
memory-report
>
11.
<
enable-threads
>true</
enable-threads
>
12.
<
logdate
>true</
logdate
>
13.
<
limit-as
>6048</
limit-as
>
14.
</
uwsgi
>
同样的 vi django_wsgi.py
1.
import os
2.
import django.core.handlers.wsgi
3.
os.environ['DJANGO_SETTINGS_MODULE'] = 'my_django.settings' #这里的my_django.settings 表示 "项目名.settings"
4.
application = django.core.handlers.wsgi.WSGIHandler()
4. 添加nginx配置
01.
server {
02.
listen 80;
03.
server_name 192.168.0.100;
04.
05.
location / {
06.
root /root/my_django;
07.
uwsgi_pass 127.0.0.1:8000;
08.
include uwsgi_params;
09.
access_log off; }
10.
11.
}
5. 启动服务
1.
#/usr/bin/uwsgi -x /root/my_django/uwsgi.xml
2.
#/usr/local/nginx/sbin/nginx
//=======================================
附:
如果nginx出现无法找到uwsgi_pass的话, 升级nginx到0.8.54即可;
如果找不到uwsgi命令则需要复制uwsgi安装目录下, 执行上面命令后生成的uwsgi文件到/usr/bin目录
nginx python spawn-fcgi Flup webpy
环境依赖的软件包
Nginx 0.8.* or 0.7.* (需要包含fastcgi和rewrite模块)。
Webpy 0.34
Spawn-fcgi 1.6.2
Flup
安装webpy
$ wget http://webpy.org/static/web.py-0.34.tar.gz
$ tar xvzf web.py-0.34.tar.gz
$ cd web.py-0.34
$ sudo python setup.py install
安装 Flup
http://www.saddi.com/software/flup/dist/flup-1.0.2.tar.gz
$ wget http://www.saddi.com/software/flup/dist/flup-1.0.2.tar.gz
$ tar xvzf flup-1.0.2.tar.gz
$ cd flup-1.0.2.tar.gz
$ sudo python setup.py install
安装 Spawn-fcgi
wget http://www.lighttpd.net/download/spawn-fcgi-1.6.3.tar.gz
tar zxvf spawn-fcgi-1.6.3.tar.gz
cd spawn-fcgi-1.6.3.tar.gz
./configure –prefix=/usr设置到/usr
make && make install # install
安装Nginx
源码包可以在官方主页上下载。Ubuntu 7.10可以直接通过apt安装,也可以从这里下载最新的deb包:
sudo apt-get install nginx
如果要自己编译的话,需要确保自己已经有编译器和PCRE的库(用于Nginx的rewrite模块,如果不需要这个模块可以在configure时使用./configure –without-rewrite)。
编译方法如下:
wget http://sysoev.ru/nginx/nginx-0.5.34.tar.gz
tar zxvf nginx-0.5.34.tar.gz
cd nginx-0.5.34
./configure #默认配置安装路径为/usr/local/nginx 可以追加–prefix=/usr设置到/usr
make && make install # install要求有root权限
Nginx 配置文件
location / {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name; # [1]
fastcgi_param PATH_INFO $fastcgi_script_name; # [2]
fastcgi_pass 127.0.0.1:9002;
}
对于静态文件可以添加如下配置:
location /static/ {
if (-f $request_filename) {
rewrite ^/static/(.*)$ /static/$1 break;
}
}
重启nginx配置:
/path/to/nginx/sbin/nginx -s reload
停止nginx:
/path/to/nginx/sbin/nginx -s stop
Spawn-fcgi
可以通过一下命令启动一个Spawn-fcgi进程:
sudo /usr/local/spawn-fcgi/bin/spawn-fcgi -d /usr/local/nginx/cgi/ -f /usr/local/nginx/cgi/test.py -a 127.0.0.1 -p 9002 -P /tmp/webpy.pid
将进程PID保存下来方便关闭进程:
kill `cat /tmp/webpy.pid`
参数说明:
-f 指定调用 FastCGI 的进程的执行程序位置,根据系统上所装的 PHP 的情况具体设置
-a 绑定到地址 addr
-p 绑定到端口 port
-F 指定产生的 FastCGI 的进程数 (很多人以为是-C,其实那是PHP专用的,这里要用-F)
-P 指定产生的进程的 PID 文件路径
-u 和 -g FastCGI 使用什么身份运行
如果运行Spawn-fcgi之后,ps -ef 不能发现进程,sudo netstat -antup不能发现端口说明Spawn-fcgi没有正常启动,可以在启动参数中加 -n 之后再启动会有详细信息.问题也就找到了.