wsgi服务器(cisco配置web服务器)

一篇就弄懂WSGI、uwsgi和uWSGI的区别

最近基于Django Web框架在开发一个后端项目,在Web Server和Django应用程序交互的过程中总会碰到本文题目提及到的几个概念,笔者特意花了点时间研究了下,为方便以后温习特在此记录一下。

英文全称:Web Server Gateway Interface,Web服务网管接口,简单来说它是一种Web服务器和应用程序间的通信规范。

uwsgi是一种通信协议,不过跟WSGI分属两种东西,该协议下速度比较快。

uWSGI是一个Web Server,并且独占uwsgi协议,但是同时支持WSGI协议、HTTP协议等,它的功能是把HTTP协议转化成语言支持的网络协议供python使用。

在做Django项目时,一般测试开发我们直接用Django内嵌的Web Server即可,但是如果项目要上生产环境,考虑并发等性能时,我们可能需要uwsgi和nginx,下面只说明uwsgi的常用用法,至于nginx的配置笔者后续准备专门写一篇博文来讲。

uwsgi执行一般有两种方式:命令行和文件配置,但是命令行可能需要识记很多参数,因此采用文件配置是更通用的做法,文件格式支持很多种比如ini、xml、yaml等,笔者建议还是采用比较简单key-value形式ini模式,下面给出一个简单的uwsgi ini配置实例:

执行:uwsgi--ini/path/to/uwsgi.ini

参数解释:

更多uwsgi参数可参考官方文档:

python webservice和wsgi的区别

WSGI是Web Server Gateway Interface的缩写。以层的角度来看,WSGI所在层的位置低于CGI。但与CGI不同的是WSGI具有很强的伸缩性且能运行于多线程或多进程的环境下,这是因为WSGI只是一份标准并没有定义如何去实现。实际上WSGI并非CGI,因为其位于web应用程序与web服务器之间,而web服务器可以是CGI,mod_python(注:现通常使用mod_wsgi代替),FastCGI或者是一个定义了WSGI标准的web服务器就像python标准库提供的独立WSGI服务器称为wsgiref。

Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。[1]

Web Service技术,能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件,就可相互交换数据或集成。依据Web Service规范实施的应用之间,无论它们所使用的语言、平台或内部协议是什么,都可以相互交换数据。Web Service是自描述、自包含的可用网络模块,可以执行具体的业务功能。Web Service也很容易部署,因为它们基于一些常规的产业标准以及已有的一些技术,诸如标准通用标记语言下的子集XML、HTTP。Web Service减少了应用接口的花费。Web Service为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制。

有些webservice是构建在wsgi上的,不过也可以不用的,两个不是同一个东西

Gunicorn、uWSGI等Wsgi服务器,配合Nginx做反向代理

下载与安装PuTTY:

首先确保您已从官方网站下载并安装了PuTTY。PuTTY是一个轻量级的SSH客户端,无需安装,解压即可使用。

启动PuTTY:

双击PuTTY可执行文件(通常为putty.exe),开始SSH连接。

配置会话:

在PuTTY主界面的Session类别中输入远程服务器的IP地址或域名,端口一般默认为22,输入相应端口号。确保SSH选项被选中。

保存会话(可选):

命名并保存当前配置,便于未来快速连接。

高级配置(可选):

根据需要调整字体、颜色方案,设置默认登录用户名,以及配置端口转发和心跳保持。

开始连接:

点击Open按钮,尝试连接至服务器。

登录认证:

连接成功后,输入用户名和密码登录服务器。

成功登录:

正确输入密码后,即可使用远程服务器的命令行界面。

连接问题处理:

遇到公钥指纹警告时,确认无误后选择继续。连接失败需检查IP、端口、服务器运行状态。

创建虚拟环境:

在项目目录中激活虚拟环境,使用命令根据Python版本和系统进行安装。

安装pip:

确保pip已安装,对于Debian系统使用命令安装,基于RPM系统使用类似命令。

安装Flask:

在虚拟环境中使用pip安装Flask。

验证Flask:

确认Flask已成功安装。

使用Gunicorn:

安装Gunicorn,并使用其启动Flask应用。

Gunicorn启动问题:

检查应用结构、模块导入路径,确保Gunicorn能正确定位应用实例。

端口占用处理:

查找并终止占用端口的进程,使用lsof命令确认PID,然后强制终止进程。检查端口状态并重新启动Gunicorn。

配置Gunicorn:

创建gunicorn.conf.py配置文件,使用文本编辑器编写配置内容。

配置文件使用:

确保配置文件路径正确,使用指定配置文件启动Gunicorn。

安装gevent:

解决Gunicorn无法加载gevent问题,安装gevent并验证版本。

Nginx安装:

在Alibaba Cloud Linux 3上使用DNF安装Nginx。

端口冲突解决:

如果端口80被其他进程占用,使用kill命令结束进程,检查Nginx配置文件并重新启动Nginx。

反向代理配置:

在Nginx配置文件中为应用创建新配置文件,设置反向代理规则。

部署组合:

通过Nginx与Gunicorn/uWSGI组合,部署Flask应用至生产环境,享受优化性能与安全性。

阅读剩余
THE END