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
资源下载链接为: https://pan.quark.cn/s/f989b9092fc5 HttpServletRequestWrapper 是 Java Servlet API 中的一个工具类,位于 javax.servlet.http 包中,用于对 HttpServletRequest 对象进行封装,从而在 Web 应用中实现对 HTTP 请求的拦截、修改或增强等功能。通过继承该类并覆盖相关方法,开发者可以轻松地自定义请求处理逻辑,例如修改请求参数、添加请求头、记录日志等。 参数过滤:在请求到达处理器之前,可以对请求参数进行检查或修改,例如去除 URL 编码、过滤敏感信息或进行安全检查。 请求头操作:可以修改或添加请求头,比如设置自定义的 Content-Type 或添加认证信息。 请求属性扩展:在原始请求的基础上添加自定义属性,供后续处理使用。 日志记录:在处理请求前记录请求信息,如 URL、参数、请求头等,便于调试和监控。 跨域支持:通过添加 CORS 相关的响应头,允许来自不同源的请求。 HttpServletRequestWrapper 通过继承 HttpServletRequest 接口并重写其方法来实现功能。开发者可以在重写的方法中添加自定义逻辑,例如在获取参数时进行过滤,或在读取请求体时进行解密。当调用这些方法时,实际上是调用了包装器中的方法,从而实现了对原始请求的修改或增强。 以下是一个简单的示例,展示如何创建一个用于过滤请求参数的包装器: 在 doFilter 方法中,可以使用 CustomRequestWrapper 包装原始请求: 这样,每当调用 getParameterValues 方法时,都会先经过自定义的过滤逻辑。 HttpServletRequestWrapper 是 Java Web 开发中一个强大的工具,它提供了灵活的扩展性,允许开发者
本资源文件包含LeetCode算法题第1至100题的Java完整源码,涉及题目如下:1.两数之和;2.两数相加;3.无重复字符的最长子串;4.寻找两个正序数组的中位数;5.最长回文子串;6.Z字形变换;7.整数反转;8.字符串转换整数(atoi);9.回文数;10.正则表达式匹配;11.盛最多水的容器;12.整数转罗马数字;13.罗马数字转整数;14.最长公共前缀;15.三数之和;16.最接近的三数之和;17.电话号码的字母组合;18.四数之和;19.删除链表的倒数第N个结点;20.有效的括号;21.合并两个有序链表;22.括号生成;23.合并K个升序链表;24.两两交换链表中的节点;25.K个一组翻转链表;26.删除有序数组中的重复项;27.移除元素;28.找出字符串中第一个匹配项的下标;29.两数相除;30.串联所有单词的子串;31.下一个排列;32.最长有效括号;33.搜索旋转排序数组;34.在排序数组中查找元素的第一个和最后一个位置;35.搜索插入位置;36.有效的数独;37.解数独;38.外观数列;39.组合总和;40.组合总和II;41.缺失的第一个正数;42.接雨水;43.字符串相乘;44.通配符匹配;45.跳跃游戏II;46.全排列;47.全排列II;48.旋转图像;49.字母异位词分组;50.Pow(x,n);51.N皇后;52.N皇后II;53.最大子数组和;54.螺旋矩阵;55.跳跃游戏;56.合并区间;57.插入区间;58.最后一个单词的长度;59.螺旋矩阵II;60.排列序列;61.旋转链表;62.不同路径;63.不同路径II;64.最小路径和;65.有效数字;66.加一;67.二进制求和;68.文本左右对齐;69.x的平方根;70.爬楼梯;71.简化路径;72.编辑距离;73.矩阵置零;74.搜索二维矩阵;75.颜色分类.............
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

youyou9526

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

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

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

打赏作者

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

抵扣说明:

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

余额充值