Django、uwsgi、nginx环境搭建

参考URL:https://www.cnblogs.com/fangyuan1004/p/4546567.html


建议用下面的方法。
Django、uwsgi、nginx环境搭建:
基础环境:centos6.0、python2.6(系统自带)、Django1.6
centos7上也测试通过。

1,安装pip,django功能增强依赖类,django
yum -y install epel-release

yum -y install sqlite-devel

yum -y install readline-devel

yum -y install python-pip
pip install Django==1.8.16


2,安装uWSGI。

yum install -y libxml2 gcc python-devel

pip install uwsgi #uwsgi==1.9.1也可以选择指定版本


3、验证uWSGI是否安装成功。


    新建test.py文件,内容如下:


def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return "Hello World"
    执行uwsgi --http :8000 --wsgi-file test.py


    在浏览器内输入:http://ip:8001,查看是否有"Hello World"输出,若没有输出,请检查你的安装过程。


4、验证Django+uWSGI是否连接成功。
shell>cd /home
shell>python-admin.py startproject MyDjProj
    uwsgi --http :8000 --wsgi-file /home/MyDjProj/MyDjProj/wsgi.py
    将test.py修改为Django项目中生成的wsgi.py,通过浏览器访问Django框架中的页面,成功。则说明两者连接正常。
可能报错:No module named MyDjProj.settings
修改方法:
vim /home/MyProject/MyProject/wsgi
import sys
path = '/home/MyProject'
if path not in sys.path:

   sys.path.append(path)

该代码尽量写在文件其他代码上方,因为是环境变量设置,放在下面当前文件该位置以上的代码无法使用。



5、安装nginx。
6、配置uwsgi
uwsgi支持ini、xml等多种配置方式,本文以 ini 为例在/etc下创建uwsgi8000.ini .配置文件注释的内容建议全部去掉。


[uwsgi]
socket = 127.0.0.1:8000
//主进程
master = true
//多站模式
vhost = true
//多站模式时不设置入口模块和文件
no-stie = true
//子进程数
workers = 2
reload-mercy = 10
//退出、重启时清理文件
vacuum = true
max-requests = 1000
limit-as = 512
buffer-size = 30000
//pid文件,用于下面的脚本启动、停止该进程
pidfile = /var/run/uwsgi8000.pid
//日志文件
daemonize = /var/log/uwsgi8000.log
//同环境变量PYTHONPATH
pythonpath = /usr/lib/python2.6/site-packages


7、配置nginx
    找到nginx的安装目录(如:/usr/local/nginx-1.8/),打开conf/nginx.conf文件,修改server配置:
注意:要删除原博文中所有注释,且确定没有空的全交占位符,否则可能因配置文件格式问题导致nginx启动失败。
server {
        listen       8009;
        server_name  localhost;
        error_log  /var/log/nginx_error.log info;
        location /{
            include  uwsgi_params;
            uwsgi_pass 127.0.0.1:8000;
            uwsgi_param UWSGI_SCRIPT mytest.wsgi;
            uwsgi_param UWSGI_CHDIR /home/mytest;
            index index.html index.htm;
            client_max_body_size 35m;
        }
}


8、测试Django + uwsgi + nginx
    uwsgi --ini /etc/uwsgi8000.ini & /usr/local/nginx-1.8/sbin/nginx
    在浏览器输入:http://ip/,你就可以看到django的"It work"了。http://ip/hello,可以打开Django项目中,通过urlconf配置的hello子页面的view视图


可能问题及处理:
 2、在连接Django、uwsgi和nginx时,报出File "./MyDjProj/wsgi.py", line 17, in <module> from django.core.wsgi import get_wsgi_application ImportError: No module named django.core.wsgi


    可以看出在执行/home/MyDjProj/MyDjProj/wsgi.py时,在sys.path中无法找到 django.core.wsgi,通过在MyDjProj/wsgi中加入sys.path的打印看出,sys.path中缺少/usr/lib/python2.6/site-packages,原因暂不清楚。


    通过在uwsgi8000.ini中加入“pythonpath = /usr/lib/python2.6/site-packages”,重新连接成功。


  3、遇到其它问题时,先判断端口是否正常打开,使用netstat -plnt查看。


  4、修改后配置后,最好关闭uwsgi及nginx后,重新连接。关闭方法:fuser -k 端口/tcp。如:fuser -k 80/tcp; fuser -k 8000/tcp


  5、多查看日志文件,文件中详细的报错信息,对于nginx的日志,可以通过在nginx.conf中配置error_log  /var/log/nginx_error.log info;将出错信息打印到该文件中便于定位。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值