学习了一下django, 试着用nginx + uwsgi + django 来搭建一个web
1. nginx 的搭建
下载nginx 的code nginx-1.6.2.tar.gz, 然后解压code , ./configure xxxx && make , build 出相应的nginx, 我把nginx build 在/usr/nginx
然后conf dir 下面有一个nginx.conf, 我简单做一下配置,在http 下面做以下配置:
server {
listen 80;
server_name localhost;
charset utf-8;
access_log /usr/nginx/logs/host_access.log;
location / {
#root html;
#index index.html index.htm;
uwsgi_pass 127.0.0.1:9000;
include uwsgi_params;
}
location /static/ {
alias /usr/nginx/static/;
index index.html index.htm;
}
}
2. uwsgi 的搭建
下载uwsgi , 我download 的是uwsgi-1.4.5.tar.gz 然后 build (或者easy_install uwsgi) 然后做配置uwsgi.ini
[uwsgi]
http = 127.0.0.1:9000 (注意如果前面加nginx了,这个时候我们不能用http了, 改用socket , 增加protocol = uwsgi)
chdir =/root/myWebApp/mysite (django 的project path)
wsgi-file = mysite/wsgi.py (django project 下面的wsgi.py)
processes = 4
threads = 2
stats = 127.0.0.1:8000
然后我们将django 下面的static 文件放在nginx 下面,看nginx 的配置location /static/
所以我们可以run :python manage.py collectstatic /usr/nginx/static/
但是我们要在setting 中STATIC_ROOT = "/usr/nginx/static/", INSTALLED_APPS 中要有'django.contrib.staticfiles'
3.最后可以用supervisor 来run uwsgi , 写一个启动脚本来同时run nginx + uwsgi
supervisor.ini
[program:uwsgi]
command=uwsgi --ini /usr/nginx/scripter/django_uwsgi.ini --ignore-sigpipe --ignore-write-errors
autostart=true
startsecs=5
redirect_stderr=true
stdout_logfile=/usr/nginx/logs/dj-uwsgi.log
stdout_logfile_maxbytes=10MB
stdout_logfile_backups=5