未加星标

配置Nginx和uWSGI搭建Django运行环境

字体大小 | |
[开发(python) 所属分类 开发(python) | 发布者 店小二05 | 时间 2016 | 作者 红领巾 ] 0人收藏点击收藏

不久前试用了阿里云的ECS,用来试着部署之前用 Django 写的一个博客,遇到了不少问题啊TvT在Google上搜出来的方法都是旧的没法解决问题呢,所以就摸索着弄,最后不得不说,官方文档才是人类的好基友啊(缺胳膊少腿的我们暂时忽略掉吧)!

更新和安装需要的包

我使用的系统是64位的CentOS 6.5

yum -y update
yum install -y epel-release sqlite-devel zlib-devel.x86_64 openssl-devel.x86_64 python-devel
安装PCRE

下载并解压

wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.37.tar.gz
tar zxvf pcre-8.37.tar.gz

编译安装

cd pcre-8.37
./configure
make && make install

安装完成后可以查看版本号 pcre-config --version

安装Nginx

我这里用的是1.8.0 stable 版本,先下载然后解压进目录进行配置编译安装,这里直接给出命令不再详述

wget http://nginx.org/download/nginx-1.8.0.tar.gz
tar nginx-1.8.0.tar.gz
cd nginx-1.8.0
./configure --prefix=/usr/local/nginx
make && make install
安装uWSGI

在上一篇升级Python的博客里已经顺便安装好了pip,现在派上用场了

pip install uwsgi
安装Django pip install django

到这里我们已经把需要安装的东西都准备好了,现在开始进行配置

配置 配置uWSGI

假设我们已经有一个Django的项目叫 blog ,路径是 /var/www/blog/ ,现在进入这个项目的目录下,新建一个 blog.ini 文件,添加如下内容

[uwsgi]
uid = www
gid = www
chdir = /var/www/blog
module = blog.wsgi
master = true
processes = 10
socket = /tmp/blog.sock
chmod-socket = 664
vacuum = true
daemonize = /var/www/blog/blog.log
配置Nginx

创建 Nginx 运行使用的用户 www:

/usr/sbin/groupadd www
/usr/sbin/useradd -g www www

编辑Nginx的配置文件 nginx.conf

vi /usr/local/nginx/conf/nginx.conf
将第一行的 #user nobody; 改成 user www www;
然后找到下面这两行,去掉注释 # #error_log logs/error.log;
#pid logs/nginx.pid;

然后在 http {} 块内的最下面添加以下内容

upstream blog {
server unix:///tmp/blog.sock;
}
server {
listen 8000;
server_name .example.com;
charset utf-8;
client_max_body_size 75M;
location /media {
alias /var/www/blog/media;
}
location /static {
alias /var/www/blog/static;
}
location / {
uwsgi_pass blog;
include uwsgi_params;
}

噔噔!我们已经完成了Nginx的基础配置了,想要了解更多Nginx的具体配置请参考官方提供的 完整配置示例

启动测试 开启Nginx

在启动Nginx之前先对配置文件的语法进行检查

/usr/local/nginx/sbin/nginx -t

确认无误后启动Nginx

/usr/local/nginx/sbin/nginx

这时可能会出现如下的错误

nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)

只需要执行以下这条命令就可以解决问题了

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

Nginx的常用命令有

/usr/local/nginx/sbin/nginx -s reload|reopen|stop

分别是重新读取配置文件,重新启动以及停止

开启uWSGI

启动Nginx(请参考前面)之后,我们再来启动uWSGI

uwsgi --ini /var/www/blog/blog.ini

开启成功之后就可以访问Nginx配置里 server_name 所对应的ip或域名进行访问了,如这里的配置示例,我们访问 http://example.com:8000 就可以看到创建好的blog啦!

更多参考文档

Another nginx.conf Full Example

Setting up Django and your web server with uWSGI and nginx

How To Serve Django Applications with uWSGI and Nginx on Ubuntu 14.04

本文开发(python)相关术语:python基础教程 python多线程 web开发工程师 软件开发工程师 软件开发流程

主题: NginxDjangoSGUbuntu阿里云博客Python阿里
分页:12
转载请注明
本文标题:配置Nginx和uWSGI搭建Django运行环境
本站链接:http://www.codesec.net/view/482566.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 开发(python) | 评论(0) | 阅读(32)