2016年08月01日
阅读: 3226
uwsgi+nginx在ubuntu14.04上部署django项目
友情提醒:本文最后更新于 3064 天前,文中所描述的信息可能已发生改变,请谨慎使用。
注意:这里默认已经有完成的django项目,本文不做相关django项目介绍
1.通过python pip安装uwsgi:
sudo apt-get install python-dev
sudo apt-get install python-pip
sudo pip install --upgrade pip
sudo pip install uwsgi
2.安装成功后查看uwsgi版本:
uwsgi --version
3.运行django服务(python manage.py runserver 8000),测试uwsgi,这里要通过django的wsgi启动,wsgi.py 在项目目录下(如:项目名为hello,则wsgi.py应该在hello/hello下):
大致内容如下:
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "hello.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
然后终端里运行:
uwsgi --http :8000 --module hello.wsgi
显示出是否正常工作
4.在django项目下创建uwsgi.ini文件和log文件夹:
touch uwsgi.ini
内容如下:
[uwsgi]
socket=127.0.0.1:9000 # uwsgi运行端口
chdir=/home/ubuntu/my_site/ # 项目位置
module=my_site.wsgi:application
vacuum=True
master=True
workers=4
enable-threads=True
threads=10
pidfile=/home/ubuntu/my_site/log/uwsgi.pid
daemonize=/home/ubuntu/my_site/log/uwsgi-production.log
memory-report=True
5.安装nginx服务器:
sudo apt-get install nginx-full
6.配置nginx文件:
cd /etc/nginx/conf.d/
touch default.conf
将以下内容放入default.conf中:
server{
listen 80;
charset utf-8;
location ~ ^/static {
root /home/cloud/my_site; # 项目static文件夹所在目录
}
location / {
uwsgi_pass 127.0.0.1:9000; # uwsgi运行端口
include /etc/nginx/uwsgi_params;
}
}
确保/etc/nginx下有uwsgi_params文件:
uwsgi_param QUERY_STRING $query_string;
uwsgi_param REQUEST_METHOD $request_method;
uwsgi_param CONTENT_TYPE $content_type;
uwsgi_param CONTENT_LENGTH $content_length;
uwsgi_param REQUEST_URI $request_uri;
uwsgi_param PATH_INFO $document_uri;
uwsgi_param DOCUMENT_ROOT $document_root;
uwsgi_param SERVER_PROTOCOL $server_protocol;
uwsgi_param REQUEST_SCHEME $scheme;
uwsgi_param HTTPS $https if_not_empty;
uwsgi_param REMOTE_ADDR $remote_addr;
uwsgi_param REMOTE_PORT $remote_port;
uwsgi_param SERVER_PORT $server_port;
uwsgi_param SERVER_NAME $server_name;
然后在nginx目录下创建default的软连接:
ln -s /etc/nginx/conf.d/default.conf /etc/nginx/default.conf
7.如果静态文件目录用户权限是root,则需要更改/etc/nginx.conf文件(一般都在第一行的位置):
将 user www-data 改为 user root
8.重启nginx服务并启动uwsgi服务(在django项目下):
service nginx restart
uwsgi -i uwsgi.ini
正常输出如下:
[uWSGI] getting INI configuration from uwsgi.ini
*** Starting uWSGI 2.0.9 (64bit) on [Sat Jan 31 19:27:23 2015] ***
compiled with version: 4.8.2 on 31 January 2015 19:21:57
os: Linux-2.6.32-042stab092.2 #1 SMP Tue Jul 8 10:35:55 MSK 2014
nodename: localhost.localdomain
machine: x86_64
clock source: unix
pcre jit disabled
detected number of CPU cores: 2
current working directory: /root/project/hello
detected binary path: /usr/local/bin/uwsgi
uWSGI running as root, you can use --uid/--gid/--chroot options
*** WARNING: you are running uWSGI as root !!! (use the --uid flag) ***
chdir() to /root/project/hello
your processes number limit is 175957
your memory page size is 4096 bytes
detected max file descriptor number: 4096
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
uwsgi socket 0 bound to TCP address 127.0.0.1:3400 fd 3
Python version: 2.7.6 (default, Mar 22 2014, 23:03:41) [GCC 4.8.2]
*** Python threads support is disabled. You can enable it with --enable-threads ***
Python main interpreter initialized at 0x1dc6ef0
your server socket listen backlog is limited to 100 connections
your mercy for graceful operations on workers is 60 seconds
注: 如果执行完上述步骤后报类似No Python application found的错误,则先执行
aptitude install uwsgi-plugin-python
然后重启uwsgi即可
经过以上步骤,django项目基本上就部署完成了
上一篇:Python的一些内建函数
下一篇:Python列表的常用方法