首页 > 代码库 > Nginx+uwsgi或fastcgi部署Django项目
Nginx+uwsgi或fastcgi部署Django项目
nginx+uwsgi
ubuntu下先安装下C编译器和Python环境:
sudo apt-get install build-essential python-dev
使用pip安装uwsgi:
pip install uwsgi
nginx配置:
可以单独为站点设置一个配置文件:
sudo vim /etc/nginx/sites-enabled/mysite
或者直接在nginx.conf中设置:
sudo vim /etc/nginx/nginx.conf
设置:
server { listen 80; ## listen for ipv4; this line is default and implied #listen [::]:80 default ipv6only=on; ## listen for ipv6 server_name 站点域名; location / { uwsgi_pass 127.0.0.1:8080; include uwsgi_params; } #设置该网站应用中所需要的静态文件的根目录,需要将admin和用到的第三方库像restframework的静态文件都放到此目录中 location ~/static/ { root /home/user/mysite/; #项目地址 # root html; # index index.html index.htm; break; } #设置媒体文件的根目录 location ~/media/ { root /home/user/mysite/; # root html; # index index.html index.htm; break; }}
自己电脑上搭建localhost服务器时,注意别被/etc/nginx/sites-enabled/default中的配置覆盖掉了,最好将其注释掉。
然后设置uwsgi:
在django项目下建立文件myfile.ini:
[uwsgi]socket = 127.0.0.1:8080 #与nginx配置中的uwsgi_pass相同chdir = /home/user/mysite/ #项目地址wsgi-file = mysite/wsgi.pyprocesses = 4threads = 2stats = 127.0.0.1:9191
其中wsgi-file是django(1.4版本以上)项目自动建立的文件,里面内容为:
import osos.environ.setdefault("DJANGO_SETTINGS_MODULE", "weixian.settings")from django.core.wsgi import get_wsgi_applicationapplication = get_wsgi_application()
如果django版本过低无此文件的话,可以自己建立,或者在myfile.ini中设置env,module,pythonpath:
[uwsgi]socket = 127.0.0.1:8080chdir = /home/user/mysite/pythonpath = ..env = DJANGO_SETTINGS_MODULE=mysite.settingsmodule = django.core.handlers.wsgi:WSGIHandler()processes = 4threads = 2stats = 127.0.0.1:9191
按配置重启nginx:
/usr/sbin/nginx -s reload
或者:
killall -9 nginxnginx -c /etc/nginx/nginx.conf
启动uwsgi:
uwsgi myfile.ini
ini文件也可以用xml文件来设置。
添加xml支持:
sudo apt-get install libxml2-dev
配置myfile.xml
<uwsgi> <socket>127.0.0.1:8080</socket> <chdir>/home/user/mysite/</chdir> <module>mysite/wsgi</module></uwsgi>
启动:
uwsgi -x myfile.xml
nginx+fastcgi
fastcgi需要安装flup:
wget http://www.saddi.com/software/flup/dist/flup-1.0.2.tar.gztar zxvf flup-1.0.2.tar.gzcd flup-1.0.2python setup.py install
或者:
sudo apt-get install python-flup
nginx配置:
server { listen 80; server_name localhost; #设置该网站应用中所需要的静态文件的根目录 location ~/static/ { root /home/user/mysite/; # root html; # index index.html index.htm; break; } #设置媒体的根目录 location ~/media/ { root /home/user/mysite/; # root html; # index index.html index.htm; break; } #host and port to fastcgi server location / { fastcgi_pass 127.0.0.1:8080; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param QUERY_STRING $query_string; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param pass_header Authorization; fastcgi_intercept_errors off; } #设置浏览器缓存这些图片格式文件浏览器缓存时间是30天,css/js缓存时间1小时 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 1h; }}
重启nginx,然后启动fcgi:
python manage.py runfcgi host=127.0.0.1 port=8080 --settings=mysitesettings
ok。
要更新django项目的话,
ps -ef |grep fcgi
找出主进程号kill掉,再重启fcgi即可。
Nginx+uwsgi或fastcgi部署Django项目
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。