uwsgi+nginx+multipulweb 部署

Nginx+ uWSGI+django

请求顺序 the web client <-> the web server <-> the socket <-> uWSGI <-> Python

环境:

  • Linux: centos-release-7-3.1611.el7.centos.x86_64
  • Python 2.7.5
  • 注:全部以root执行
    步骤:
  1. nginx 安装

1>安装编译工具及库文件
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel

安装 PCRE ( Nginx 支持 Rewrite 功能)
2>下载 PCRE 安装包,下载地址 http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
[root@bogon src]# wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
注:wget方式可能下载文件缺失、导致解压失败。可能需离线下载、移动到指定文件夹。

3>解压安装包:
[root@bogon opt]# tar zxvf pcre-8.35.tar.gz

进入安装包目录
[root@bogon opt]# cd pcre-8.35

4>编译安装
[root@bogon pcre-8.35]# ./configure
[root@bogon pcre-8.35]# make && make install

5>查看pcre版本
[root@bogon pcre-8.35]# pcre-config --version

6>下载 Nginx,下载地址:http://nginx.org/download/nginx-1.6.2.tar.gz
[root@bogon opt]# wget http://nginx.org/download/nginx-1.6.2.tar.gz

7>解压安装包
[root@bogon opt]# tar zxvf nginx-1.6.2.tar.gz

9>进入安装包目录
[root@bogon opt]# cd nginx-1.6.2

10>编译安装
[root@bogon nginx-1.6.2]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/opt/pcre-8.35
注:–with-pcre 指向pcre解压文件 --with-pcre 随便指定路径
[root@bogon nginx-1.6.2]# make
[root@bogon nginx-1.6.2]# make install

11>查看nginx版本

[root@bogon nginx-1.6.2]# /usr/local/nginx/sbin/nginx -v

12>Nginx 配置

12.1>创建 Nginx 运行使用的用户 www:
12.2>配置nginx.conf ,将/usr/local/nginx/conf/nginx.conf修改首行为:

user root root;

12.3>检查配置文件ngnix.conf的正确性命令:
/usr/local/nginx/sbin/nginx -t
12.4>启动 Nginx
/usr/local//nginx/sbin/nginx
12.5>访问测试nginx

13>安装uwsgi
注:yum install 安装成功,启动失败,建议pip 安装
Pip安装可能失败 -先安装python-devel:先安装python-devel
13.1>安装uwsgi
Pip install uwsgi
13.2>测试 uwsgi 是否正常
新建 test.py 文件,内容如下:

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

然后在终端运行:
uwsgi --http :8001 --wsgi-file test.py
在浏览器内输入:http://127.0.0.1:8001,查看是否有"Hello World"输出,若没有输出,请检查你的安装过程。
注:报错 --http xx ambiguous等,因为python与uwsgi问题,安装python-devel即可
14>安装 Django
pip install django
注:可能报错,报错原因django版本问题,可指定安装版本。测试版本django 1.11.5
14.1>测试 django 是否正常,运行:
django-admin.py startproject demosite
cd demosite
python2.7 manage.py runserver 0.0.0.0:8002
在浏览器内输入:http://127.0.0.1:8002,检查django是否运行正常
15.Nginx+uwsgi+Django
Django创建ncss项目时,在子目录ncssplatform下已经帮我们生成的 wsgi.py文件。所以,我们只需要再创建ncssplatform_uwsgi.ini配置文件即可


# ncssplatform_uwsgi.ini file
[uwsgi]

# Django-related settings

socket = :8000

# the base directory (full path)
chdir           = /opt/ncss

# Django s wsgi file
module          = ncssplatform.wsgi

# process-related settings
# master
master          = true

# maximum number of worker processes
processes       = 4

# ... with appropriate permissions - may be needed
# chmod-socket    = 664
# clear environment on exit
vacuum          = true

注:
socket 指定项目执行的端口号。

chdir 指定项目的目录。

module myweb.wsgi ,可以这么来理解,对于myweb_uwsgi.ini文件来说,与它的平级的有一个myweb目录,这个目录下有一个wsgi.py文件。
16. 修改nginx.conf配置文件。打开/etc/nginx/nginx.conf文件,添加如下内容

server {
        listen       8080;
        server_name  localhost;
        
        location / {            
            include  uwsgi_params;
            uwsgi_pass  127.0.0.1:8000;              //必须和uwsgi中的设置一致
            index  index.html index.htm;
            client_max_body_size 35m;
        }
    }

17.最终启动
uwsgi --ini ncssplatform_uwsgi.ini & /usr/local/nginx/sbin/nginx
18.测试
访问http://127.0.0.1:8080,显示django work -ok

多个project部署在nginx,uwsgi

1.新建目录uwsgi_conf,目录下创建文件
op_platform.ini、tenant_platfrom.ini
内容添加为:

[uwsgi]
#plugins = python
#virtualenv = /Django/cmdb/env/
chdir =/opt/nsfocus/ncss_platform/op_platform
#touch-reload = /Django/cmdb/env/CMDB/
module = op_platform.wsgi
socket = 127.0.0.1:9000
vhost = false
chmod-socket = 664
master = true
enable-threads = true
workers = 4
threads = 2
vacuum = true
max-requests = 6000
#pidfile = /var/log/uwsgi/cmdb.pid
#daemonize = /var/log/uwsgi/cmdb.log
#touch-logreopen = /var/log/module/.touchforlogrotat
~                                                     

tenant_platfrom类似,端口修改即可
2.修改nginx配置文件nginx.conf
增加内容为

  server {
        listen      8888;
        server_name  localhost;

        location / {
            include  uwsgi_params;
            uwsgi_pass  127.0.0.1:8000;
            #index  index.html index.htm;
            client_max_body_size 35m;
        }
    }

   server {
        listen       9999;
        server_name  localhost;

        location / {
            include  uwsgi_params;
            uwsgi_pass  127.0.0.1:9000;
            }
        }

  1. 启动、测试
    uwsgi --emperor uwsgi_conf/ ,然启动nginx -s reload
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

youyou9526

各位看官,给点下载积分吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值