首页 > 代码库 > ubuntu下配置nginx+uwsgi+django

ubuntu下配置nginx+uwsgi+django

服务器配置是Ubuntu14.04 64位OS

ubuntu14.04默认是安装好了python2.7版本不用自己安装了。

先更新下源

sudo apt-get update

第一步先安装pip

sudo apt-get install -y python-pip

有些时候安装pip前需要安装几个相关包

sudo apt-get install -y python-dev

sudo apt-get install -y libevent-dev

安装完pip后我们开始安装django

sudo pip install Django==1.7.1

安装后输入Python进入交互环境输入django.VERSION查看版本

开始装uwsgi

下面这几个可能是相关包

sudo apt-get install -y build-essential

sudo apt-get install -y zliblg-dev

sudo apt-get install -y libsqlite3-dev

sudo apt-get install -y libreadline6-dev

sudo apt-get install -y libgdbm-dev

sudo apt-get install -y libbz2-dev

sudo apt-get install -y tk-dev

sudo apt-get install -y uwsgi-plugin-python

安装uwsgi

sudo pip install uwsgi

可以写个test.py

# test.pydef application(env, start_response):    start_response(200 OK, [(Content-Type,text/html)])    return [b"Hello World"] # python3    #return ["Hello World"] # python2

输入uwsgi --http :8000 --wsgi-file test.py

浏览器输入http://example.com:8000看是否显示helloworld

再安装git

sudo apt-get install -y git

克隆项目

用uwsgi启动项目

uwsgi --ini ${current_path}${sep}/$uwsgi_name

安装nginx

sudo apt-get install -y nginx

修改nginx配置文件,删掉原先包里的东西,加上软链接

ln -s ${current_path}${sep}${p_name}${sep}${conf_name} /etc/nginx/sites-enabled/

service nginx restart

输入网址就可以了。

另外你需要

 python manage.py collectstatic

import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
STATIC_ROOT = os.path.join(BASE_DIR, ‘static2‘, ).replace(‘\\‘, ‘/‘)
STATIC_URL = ‘/static/‘
然后将静态文件从static2移动到static目录下

输入网址就可以了。

几个配置文件:

nginx.conf:

# the upstream component nginx needs to connect toupstream django {    server unix:/etc/nginx/django/daowang/Wangdao.sock; # for a file socket}# configuration of the serverserver {    # the port your site will be served on    listen      80;    # the domain name it will serve for    server_name http://114.215.157.15/; # substitute your machine‘s IP address or FQDN    charset     utf-8;    # max upload size    client_max_body_size 75M;   # adjust to taste    # Django media    location /media  {        alias /etc/nginx/django/daowang/static/media;  # your Django project‘s media files - amend as required    }    location /static {        alias /etc/nginx/django/daowang/static; # your Django project‘s static files - amend as required    }    location /FingerHire{        proxy_pass http://127.0.0.1:8080;    }    # Finally, send all non-media requests to the Django server.    location / {        uwsgi_pass  django;        include     /etc/nginx/django/daowang/uwsgi_params; # the uwsgi_params file you installed    }}

uwsgi.ini

[uwsgi]# Django-related settings# the base directory (full path)chdir           = /etc/nginx/django/daowang# Django‘s wsgi filemodule          = Wangdao.wsgi# mastermaster          = true# maximum number of worker processesprocesses       = 32max-requests    = 1000# the socket (use the full path to be safesocket          = /etc/nginx/django/daowang/Wangdao.sock# ... with appropriate permissions - may be neededchmod-socket    = 666#chown-socket    = www-data:www-data# clear environment on exitvacuum          = truedaemonize       = /var/log/uwsgi/Wangdao.logpidfile         = /tmp/project-master.pid# added 2014-09-17reload-on-as    = 126reload-on-rss   = 126enable-threads  = truepythonpath      = /etc/nginx/django/daowang

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  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;

配置下根目录下的wsgi.py

import osos.environ.setdefault("DJANGO_SETTINGS_MODULE", "Wangdao.settings")from django.core.wsgi import get_wsgi_applicationapplication = get_wsgi_application()

常用命令:

1.查看端口占用情况:

netstat -lpnt

2.杀死所有uwsgi进程

killall -9 uwsgi

3.uwsgi启动命令

uwsgi --ini /etc/nginx/django/lovep2c/lovep2c_uwsgi.ini

4.关闭uwsgi命令

uwsgi --stop /tmp/project-master.pid

5.重启uwsgi命令

uwsgi --reload /tmp/project-master.pid

 

 

nginx错误日志:

 

tail /var/log/nginx/error.log

 

uwsgi日志:

 

tail /var/log/uwsgi/lovep2c.log

 

项目错误日志:

 

tail /etc/nginx/django/debug.log

 

tail /etc/nginx/django/error.log

 



ubuntu下配置nginx+uwsgi+django