基于性能等多方面考虑,搭建Nginx+uWSGI环境
环境:ubuntu12.04
安装版本:nginx1.3.4+python2.7.3(系统自带)+django1.4.1+uWSGI1.2.5
一.安装NGINX (使用官方
PPA源安装最新版本)
注:先更新源,安装最新nginx版本1.3.4,参考http://nginx.org/en/download.html
1)修改源信息:
sudo vim /etc /apt /sources.list
sudo vim /etc /apt /sources.list
增加下面2行(此版本为1.3.4开发版)
deb http://ppa.launchpad.net/nginx/development/ubuntu precise main
deb-src http://ppa.launchpad.net/nginx/development/ubuntu precise main
增加公钥
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C300EE8C #注意没有此行,会安装默认版本
官方源(安装版本1.2.2稳定版):
deb http://nginx.org/packages/ubuntu/ precise nginx
deb-src http://nginx.org/packages/ubuntu/ precise nginx
2)并update一下。
sudo apt-get update
3)安装NGINX
sudo apt-get install nginx
安装uWSGI可能提示没有python.h文件,需要安装python-dev
sudo apt
-get install python
-dev
二.安装uWSGI
注意:安装uWSGI可能提示没有python.h文件,需要安装python-dev
sudo apt
-get install python
-dev
方法
1(安装默认
1.
0.
3版本)
apt -get install uwsgi uwsgi -plugin -python #ubuntu12.04下默认安装uWSGI1.0.3,会自带安装上python-pulign
apt -get install uwsgi uwsgi -plugin -python #ubuntu12.04下默认安装uWSGI1.0.3,会自带安装上python-pulign
方法
2(编译安装
1.
2.
5版本)
wget -c http : //projects.unbit.it /downloads /uwsgi - 1. 2. 5.tar.gz
tar zxvf uwsgi - 1. 2. 5.tar.gz
cd uwsgi - 1. 2. 5
make
sudo cp uwsgi /usr /bin /
wget -c http : //projects.unbit.it /downloads /uwsgi - 1. 2. 5.tar.gz
tar zxvf uwsgi - 1. 2. 5.tar.gz
cd uwsgi - 1. 2. 5
make
sudo cp uwsgi /usr /bin /
三.安装django
wget
-c https
:
/
/www.djangoproject.com
/download
/
1.
4.
1
/tarball
tar zxvf Django - 1. 4. 1.tar.gz
cd Django - 1. 4. 1
sudo python setup.py install #需要root权限创建文件
tar zxvf Django - 1. 4. 1.tar.gz
cd Django - 1. 4. 1
sudo python setup.py install #需要root权限创建文件
默认路径在: /usr/local/lib/python2.7/dist-pachages/Django-1.4.1
此处使用sqlite3数据库,如果使用mysql或其他数据库,需要安装python-mysql或其他相应包
环境配置:
配置django
mkdir
/home
/wwwdjango
/
cd /home /wwwdjango /
django -admin.py startproject mysite
tree mysite #查看django自动生成的文件目录结构如下:
mysite /
| - - manage.py
` - - mysite
| - - __init__.py
| - - settings.py #这是主要的django配置文件
| - - urls.py
` - - wsgi.py
cd /home /wwwdjango /
django -admin.py startproject mysite
tree mysite #查看django自动生成的文件目录结构如下:
mysite /
| - - manage.py
` - - mysite
| - - __init__.py
| - - settings.py #这是主要的django配置文件
| - - urls.py
` - - wsgi.py
修改settings.py
配置数据库DATABASES中配置sqlite3
'ENGINE': 'django.db.backends.sqlite3',
'ENGINE': 'django.db.backends.sqlite3',
'NAME': '/home/wwwdjango/mysite/mysite.db', #注意使用sqlite此文件及所在目录需要有读写权限
STATIC_ROOT = '/home/wwwdjango/mysite/mysite/static/' #为了处理admin的样式问题
INSTALLED_APPS 中取消django.contrib.admin的注释
修改urls.py
取消下列行的注释
from django.contrib import admin
admin.autodiscover()
url(r'^admin/', include(admin.site.urls)),
生成数据表,处理admin样式
cd /home/wwwdjango/mysite
sudo ./manage.py syncdb #首次使用按提示创建数据库用户
sudo ./manage.py collectstatic #确保settings.py中设置的STATIC_ROOT目录存在,有写权限,nginx有读权限
sudo ./manage.py syncdb #首次使用按提示创建数据库用户
sudo ./manage.py collectstatic #确保settings.py中设置的STATIC_ROOT目录存在,有写权限,nginx有读权限
配置nginx
cd
/etc
/nginx
/
sites
-available
/
sudo vi mysite.com.conf
添加下面内容
sudo vi mysite.com.conf
添加下面内容
#django project conf
server {
listen 80;
server_name mysite.com;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8080; #注意此处与uwsgi配置的socket地址一致
}
location /static/ {
alias /home/wwwdjango/mysite/mysite/static/admin/;
#root /home/wwwdjango/mysite/mysite/static/;
access_log off;
}
location /admin {
uwsgi_pass 127.0.0.1:8080;
include uwsgi_params;
}
}
cd ../sites-enable
sudo ln -s /etc/nginx/sites-avilable/mysite.com.conf mysite.com.conf
配置uwsgi
cd
/home
/wwwdjango
/
sudo vi uwsgi. xml 或者 sudo vi uwsgi.ini #参考 https://docs.djangoproject.com/en/1.4/howto/deployment/wsgi/uwsgi/
sudo vi uwsgi. xml 或者 sudo vi uwsgi.ini #参考 https://docs.djangoproject.com/en/1.4/howto/deployment/wsgi/uwsgi/
添加如下ini格式:
[uwsgi]
chdir = /home /wwwdjango /mysite
module =mysite.wsgi
env DJANGO_SETTINGS_MODULE =mysite.settings
master = True
pidfile = /tmp /project -master.pid
socket = 127. 0. 0. 1 : 8080
porcesses = 5
vacuum = True
max -requests = 5000
daemonize = /var /log /uwsgi /mysite.log
[uwsgi]
chdir = /home /wwwdjango /mysite
module =mysite.wsgi
env DJANGO_SETTINGS_MODULE =mysite.settings
master = True
pidfile = /tmp /project -master.pid
socket = 127. 0. 0. 1 : 8080
porcesses = 5
vacuum = True
max -requests = 5000
daemonize = /var /log /uwsgi /mysite.log
xml格式
<uwsgi>
<socket>127.0.0.1:8080</socket>
<listen>80</listen>
<master>true</master>
<pythonpath>/home/wwwdjango/mysite</pythonpath>
<module>django_uwsgi</module>
<wsgi-file>/home/wwwdjango/mysite/mysite/wsgi.py</wsgi-file>
<processes>8</processes>
<logdate>true</logdate>
<daemonize>/home/wwwdjango/uwsgi.log</daemonize>
<plugins>python</plugins>
</uwsgi>
启动uwsgi
uwsgi
-
-ini uwsgi.ini 关闭uwsgi
: killall
-
9 uwsgi
uwsgi -x uwsgi.xml
uwsgi -x uwsgi.xml
启动nginx
sudo
/etc
/init.d
/nginx restart 加载配置 sudo
/etc
/init.d
/nginx
reload
修改hosts
sudo vi
/etc
/hosts
添加
127. 0. 0. 1 mysite.com
添加
127. 0. 0. 1 mysite.com
此时可以通过mysite.com访问,会提示page not found,访问mysite.com/admin应该可以登录
创建自动启用sh<或添加到开机自启动>
sudo vi /etc/rc.local
exit 0前添加
uwsgi -x /home/wwwdjango/uwsgi.xml