uwsgi php,Nginx+uWSGI[通俗易懂]

uwsgi php,Nginx+uWSGI[通俗易懂]基于python的web项目,常见的部署方法有:fcgi:用spawn-fcgi或者框架自带的工具对各个project分别生成监听进程,然后和http服务互动。wsgi:利用http服务的mod_wsgi模块来跑各个project。不过还有个uwsgi,它既不用wsgi协议也不用fcgi协议,而是自创了一个uwsgi的协议,据作者说该协议大约是fcgi协议的10倍那么快。uWSGI的主要特点如下:…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

基于python的web项目,常见的部署方法有:

fcgi:用spawn-fcgi或者框架自带的工具对各个project分别生成监听进程,然后和http服务互动。

wsgi:利用http服务的mod_wsgi模块来跑各个project。

不过还有个uwsgi,它既不用wsgi协议也不用fcgi协议,而是自创了一个uwsgi的协议,据作者说该协议大约是fcgi协议的10倍那么快。uWSGI的主要特点如下:

超快的性能。

低内存占用(实测为apache2的mod_wsgi的一半左右)。

多app管理。

详尽的日志功能(可以用来分析app性能和瓶颈)。

高度可定制(内存大小限制,服务一定次数后重启等)。

环境ubuntu 12.04 IP:10.1.6.79

安装nginx

apt-get install nginx-full nginx-common

nginx配置/etc/nginx/sites-enabled/example

server {

listen 80;

server_name 10.1.6.79;

access_log /var/log/nginx/example_access.log;

error_log /var/log/nginx/example_error.log;

root /var/www/example;

location / {

uwsgi_pass 127.0.0.1:9001;

include uwsgi_params;

uwsgi_param UWSGI_SCHEME $scheme;

uwsgi_param SERVER_SOFTWARE nginx/$nginx_version;

}

}

安装uwsgi

apt-get install uwsgi uwsgi-plugin-python

如果你想安装所有的uwsgi插件,则可以安装uwsgi-plugin-all软件包

uwsgi配置/etc/uwsgi/apps-enabled/default.xml

python

127.0.0.1:9001

/var/www/example/app/

4

8

1

2000

512

256

192

uwsgi配置文件中的参数也可以在命令行通过uwsgi指定,配置文件除了xml格式外,还可以写成ini格式的,软件包安装完毕后在/usr/share/doc/uwsgi/examples/conffile目录下会有一些xml和ini格式配置文件的例子。

wsgi_configuration_module.py脚本内容

#!/usr/bin/python

import os

import sys

sys.path.append(‘/var/www/example/app’)

os.environ[‘PYTHON_EGG_CACHE’] = ‘/var/www/example/.python-egg’

def application(environ, start_response):

status = ‘200 OK’

output = ‘Hello World!’

response_headers = [(‘Content-type’, ‘text/plain’),

(‘Content-Length’, str(len(output)))]

start_response(status, response_headers)

return [output]

启动uwsgi

uwsgi -x /etc/uwsgi/apps-enabled/default.xml –daemonize /var/log/uwsgi/app/default.log

uwsgi 的参数:

-M 开启Master进程

-p 4 开启4个进程

-s 使用的端口或者socket地址

-d 使用daemon的方式运行, 注意, 使用-d后, 需要加上log文件地址, 比如-d /var/log/uwsgi.log

-R 10000 开启10000个进程后, 自动respawn下

-t 30 设置30s的超时时间, 超时后, 自动放弃该链接

–limit-as 32 将进程的总内存量控制在32M

-x  使用配置文件模式

并发4个线程

uwsgi -s :9090 -w myapp -p 4

主控制线程+4个线程

uwsgi -s :9090 -w myapp -M -p 4

执行超过30秒的client直接放弃

uwsgi -s :9090 -w myapp -M -p 4 -t 30

限制内存空间128M

uwsgi -s :9090 -w myapp -M -p 4 -t 30 –limit-as 128

服务超过10000个req自动respawn

uwsgi -s :9090 -w myapp -M -p 4 -t 30 –limit-as 128 -R 10000

后台运行等

uwsgi -s :9090 -w myapp -M -p 4 -t 30 –limit-as 128 -R 10000 -d uwsgi.log

除了直接用uwsgi命令启动外,还可以用init.d下的脚本启动, 不过需先修 改/etc/default/u wsgi中默认配置文件的路径,然后通过/etc/init.d/uwsgi start启动

#INHERITED_CONFIG=/usr/share/uwsgi/conf/default.ini

INHERITED_CONFIG=/etc/uwsgi/apps-enabled/default.xml

启动nginx

/etc/init.d/nginx start

效果如下:

f8e8aa534e5ef5103cb9edea3b9f56cd.png

python在国内用来做web还不多,虽然python也有一些web框架,不过目前来看文档缺失、本身系统的稳定都还没经过量和时间的考验,要像PHP那样大规模的火起来还需一段时间。

nginx配置参考:http://wiki.nginx.org/HttpUwsgiModule#uwsgi_param

uwsgi安装参考:http://uwsgi-docs.readthedocs.org/en/latest/WSGIquickstart.html

uwsgi配置参考:http://uwsgi-docs.readthedocs.org/en/latest/Options.html#vacuum

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/194823.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ZPL指令_TSC指令

    ZPL指令_TSC指令^CC,~CC改变格式指令前缀  ^CC,~CC(改变脱字符)指令是用于改变指令前缀。缺省前缀是脱字符(^)。^CC,~CC指令格式  ^CCx,~CCx^CC,~CC=改变脱字符x=任何ASCII字符  缺省值:要求有参数。如不用参数,下一字符接收后作为新的前缀字符。

    2025年7月27日
    0
  • docker离线安装mysql镜像_minio docker

    docker离线安装mysql镜像_minio dockerDocker离线(升级)安装MINIO1.查看版本登录minio网页,右上角点击About2.本地安装登录一台有网而且安装了Docker的Linux#拉取镜像dockerpullminio/minio#在当前目录生成镜像的tar包dockersave-ominio.tarminio/minio3.把包上传到服务器方式一(命令行):#scp方式上传scp[filename][user]@[ip]远程传输文件scp-r./*root@8.134.50.

    2022年9月26日
    0
  • idea插件(mybatis框架下mapper接口快速跳转对应xml文件)亲测好用「建议收藏」

    idea插件(mybatis框架下mapper接口快速跳转对应xml文件)亲测好用「建议收藏」我相信目前在绝大部分公司里,主要使用的框架是S(spring)S(springMVC)M(mybatis),其中mybatis总体架构是编写mapper接口,框架扫描其对应的mapper.xml文件,由于xml里面编写大量的sql语句,所以在平时调试中需要对其进行调试,但是xml文件并不能像java文件一样,能快速进行跳转,对查找对应xml文件带来巨大的不便。网友基础idea强大的插件系…

    2025年7月17日
    2
  • Navicat相关注册码[通俗易懂]

    Navicat相关注册码[通俗易懂]Navicat相关注册码用户名和组织随便起。注册码如下 –NavicatforSQLServerV10.0.10NAVD-3CG2-6KRN-IEPMNAVL-NIGY-6MYY-XWQENAVI-C3UU-AAGI-57FW -NavicatPremium注册码NAVJ-E6YF-JULL-KKIGNAVE-BOCL-CE3X-TAGYNAVC-KAIA-NU5I-SPOXNAVL-…

    2022年10月22日
    0
  • PostWoman(网页调试工具)

    PostWoman(网页调试工具)PostWoman 是是一款简单实用的网页调试工具 由吾爱网友制作 从名字上来看 十分接近 postman 的 界面十分的简洁 简单易用 因为 postman 的速度上比较慢 作者又不愿意使用谷歌插件 因此制作了这款替代的工具 启动的速度更快 通过这款工具可以很方便地调试网页 适合从事网页制作相关的人员使用 全新升级的界面风格 更加简洁好用 带来了多端设备如一的使用体验 体验更佳 所有的接口都是 base64 加密的 集成了 base64 加密 支持 Json 自动排版 可以自动排版 支持记录功能 可以方便地记录每次 po

    2025年6月21日
    0
  • ringbuffer原理_git stash pop冲突

    ringbuffer原理_git stash pop冲突例子:ringbuffer.c实现#include<stdlib.h>#include<stdio.h>#include<string.h>#include”ringbuffer.h”voidringbuffer_init(structringbuffer*rb,uint8_t*pool,int16_tsize){if(rb==NULL){return;}rb-&g

    2022年9月4日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号