uWSGI+django+nginx的工作原理流程与部署历程 转载_稍微改动(Centos 7环境)

首先声明:

     本文摘自 https://blog.csdn.net/c465869935/article/details/53242126 , 只摘取了安装配置内容其他请看原文,拷贝原因是实际搭建过程中配置与原文中有不一致的地方,可能是版本不同原因,在此进行修复update:

三、安装与配置

首先,确保你已经安装好了nginx并可以正常使用

Centos 环境安装之前以下组件

yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel pcre-devel
其次,确保自己安装完成了python,并已经完成了pip的安装。如果没有,请先安装。 
接着,别忘了确认自己项目所需的django已经完成 安装正常工作。 
没有的话参考以下命令安装django ,  建立一个工程或利用已经写好的工程,打开浏览器,输入部署地址(如: http://127.0.0.1:8000/)(或http://内网ip:8000、或http://外网ip:8000)测试,确认是否可正常打开浏览。
安装:sudo pip install django==1.10
测试:python manage.py runserver 0.0.0.0:8000

上面的工作都完成了,接着安装uWSGI

sudo pip install uwsgi

测试uWSGI: 新建文件test.py,写入以下内容

def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return "Hello World"

运行

sudo uwsgi --http 0.0.0.0:8000 --wsgi-file test.py

如果端口占用,使用

lsof -i :8000

列出占用端口的程序的pid号,并使用以下命令杀掉所有占用端口的程序

sudo kill -9 pid

然后浏览 http://127.0.0.1:8000(或http://内网ip:8000、或http://外网ip:8000)查看效果,有”Hello World”输出即安装成功。

下一步,建立工程单独的nginx配置文件 
首先确认自己准确的知道nginx的默认配置文件目录(nginx.conf)的路径,如果不清楚,请使用如下命令获取:

nginx -t

大概会列出以下类似信息:

nginx: the configuration file /etc/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/conf/nginx.conf test is successful

里面说明了nginx默认配置文件的路径是:/usr/local/nginx/conf/nginx.conf;

然后,确保nginx.conf的同目录下有uwsgi_params文件(/usr/local/nginx/conf/uwsgi_params),没有的话根据链接获取, 后面要用到。

自己的工程目录下,建立如destiny.conf(/wwwroot/destiny/destiny.conf)的配置文件;复制nginx.conf里面全部的内容,全部写入destiny.conf中。 
然后按照下面写的,把destiny.conf配置文件中的server段部分全部替换掉。

server {
    listen 80;
    server_name localhost;
    charset     utf-8;
    access_log      /wwwroot/destiny/nginx_access.log;
    error_log       /wwwroot/destiny/nginx_error.log;
    client_max_body_size 75M;


    location /static {
        alias /wwwroot/destiny/destiny/static;
    }

    location / {
        include     /usr/local/nginx/conf/uwsgi_params;
        uwsgi_pass  0.0.0.0:9090;
    }
}

其中的 listen 80代表服务器开放80端口; 
location [目录名]代表项目路径的引导; 
access_log 和error_log是定义nginx访问日志和错误日志的存放路径。 
“location /static”中的”/static”是自己定义的项目引用静态文件时,浏览器中显示的静态资源所在的根目录名;这样的话,用户在浏览器中查看到的所有image、css或js资源都是处在http://127.0.0.1/static下的。 
django静态文件的绝对路径是根据自己的实际情况来确定的,一般在自己的django的app名/static目录下,或自己python manage.py collectstatic后的路径下。像我的是在/wwwroot/destiny/destiny/static根目录下。 
“location /”是指访问项目根目录时,nginx要做的事。其中需要指定 uwsgi_params文件的绝对路径,上面已经提到了;如果还有media文件之类的静态目录,仿照static的写法,自己补充。 
0.0.0.0:9090是指uWSGI绑定的监听地址,这里使用了9090端口。 
需要注意的是,请确认自己django的静态文件目录所有者是www用户,如果不是,请用以下命令更改静态目录权限归属者:

sudo chown -R www:www /wwwroot/destiny/destiny/static
  • 1

下面接着建立uWSGI的配置文件,在自己工程目录下创建uwsgi.ini文件,写入以下内容

[uwsgi]
socket = 0.0.0.0:9090
chdir=/wwwroot/destiny
module=destiny.wsgi
master = true         
processes=2
threads=2
max-requests=2000
chmod-socket=664
vacuum=true
daemonize = /wwwroot/destiny/uwsgi.log

其中的socket字段值”0.0.0.0:9090”必须要和上面写的density.conf配置文件中的uWSGI监听地址完全一样
chdir指自己工程的绝对路径; 
module指的是wsgi.py在自己工程中的相对路径,”.”指代一层目录;我的django工程的wsgi.py文件是在”/wwwroot/destiny/destiny/wsgi.py”,所以写成destiny.wsgi; 
daemonize指定uWSGI日志的存储路径。

好了,现在理一下路径:

工程路径:                  /wwwroot/destiny
工程静态文件路径:            /wwwroot/destiny/destiny/static
wsgi.py的路径:             /wwwroot/destiny/destiny/wsgi.py
uwsgi.ini的路径:           /wwwroot/destiny/uwsgi.ini
uwsgi日志路径:             /wwwroot/destiny/uwsgi.log
destiny.conf的路径:        /wwwroot/destiny/destiny.conf
uwsgi_params的路径:        /etc/nginx/conf/uwsgi_params
nginx访问日志路径:          /wwwroot/destiny/nginx_access.log
nginx错误日志路径:          /wwwroot/destiny/nginx_error.log

可以发现,我几乎把所有有关工程的配置文件和日志文件都放在工程目录下了,方便后期维护与查错。 
启动uWSGI

sudo uwsgi --ini /wwwroot/destiny/uwsgi.ini
  • 1

启动nginx 
在这之前,我们要先去nginx配置文件的根目录拷贝mime.types(/usr/local/nginx/conf/mime.types)到工程目录(/wwwroot/destiny/mime.types),和destiny.conf放在一起。 
否则用配置文件启动nginx会报错:

nginx: [emerg] open() "/**/**/**/mime.types" failed (2: No such file or directory)

当然,如果不想拷贝mime.types文件,也可以将配置文件中“include mime.types;”一项,改成绝对路径“include /usr/local/nginx/conf/mime.types;” 
如果nginx已经开启,先关闭nginx(service nginx stop或nginx -s stop),再执行以下命令:

nginx -c /wwwroot/destiny/destiny.conf

这里的-c 表示加载配置文件启动


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值