姜玲 陈美旭 辽宁科技大学国际金融与银行学院
网站的Web应用程序开发完成后,需要将其部署到服务器上。客户端从发送一个HTTP 请求到Flask处理请求,分别经过了web服务器层,WSGI层,web框架层三个层次。
对于传统的客户端-服务器架构,其请求的处理过程是,客户端向服务器发送请求,服务器接收请求并处理请求,然后给客户端返回响应。在这个过程中,服务器的作用是:接收及处理请求,并返回响应。Web 服务器与应用程序之间要进行交互,这时就出现了很多 Web 服务器与应用程序之间交互的规范,比如 Python 专用的 WSGI 规范等等。有了统一标准,程序的可移植性就大大提高了。Web服务器是一类特殊的服务器,其作用是主要是接收HTTP请求并返回响应。在三层结构中,web服务器是最先接收用户请求的,并将响应结果返回给用户。
Web框架的作用主要是方便开发 web应用程序,HTTP请求的动态数据就是由web框架层来提供的。常见的支持python语言的web框架有Flask,Django等。有了框架,开发者就不需要处理 WSGI,框架会解决这些,开发者只需处理 HTTP 请求和响应即可。
WSGI 是一种接口协议,它只适用于Python语言,其全称为Web Server Gateway Interface,即Web 服务器网关接口,它定义了web服务器和 web应用之间的接口规范。只要 web服务器和 web应用都遵守WSGI协议,那么 web服务器和 web应用就可以随意的组合,也可以将 WSGI 理解为沟通服务器与应用程序之间的一座桥梁。
服务器操作系统选用目前流行的Linux发行版Ubuntu,Web框架采用Flask,Web服务器使用NginX,WSGI使用Python语言实现的uWSGI。Nginx是高效的Web服务器和反向代理服务器,可以用作负载均衡,与 Apache相比,Nginx支持高并发,可以支持百万级的TCP连接,十万级别的并发连接,部署简单,内存消耗少,成本低。Nginx支持uWSGI 的uwsgi协议,因此我们可以将Nginx与uWSGI结合起来,Nginx通过uwsgi_pass将动态内容交给uWSGI处理。
首先要在服务器上创建程序目录,然后修改目录权限,之后复制程序代码,创建log目录及虚拟目录。
在ubuntu终端执行:
sudo apt-get install nginx
安装好以后,可直接用Nginxstart命令启动,出现欢迎界面,说明nginx启动成功了。
在python下,可以直接使用命令pip install uwsgi安装。之后写好配置文件就可以启动。一下是一个配置文件uwsgi.ini的例子:
用命令行工具启动uWSGI服务器:uwsgi --ini /path/…/uwsgi.ini
现在uwsgi这个Web Server已经启动起来了,接下来设置Nginx。Nginx的配置文件是/etc/nginx/nginx.conf,这个配置文件中又引用了/etc/nginx/conf.d/和/etc/nginx/sitesenabled/这两个文件夹的配置文件,通过include来实现。所以,无论是直接在nginx.conf或者在conf.d、sites-enabled中配置都是可以的。
以上是一般的nginx反向代理的配置,如果使用http协议的话,与代理其它服务器的方式并无不同。
直接通过在站点配置文件中为location配置uwsgi_pass,即 可 将Nginx与uWSGI集 成,建 立 一 个 基 于Nginx+Python+uWSGI的正式站点。启动后,输入你的服务器IP地址,就可以直接访了。部署也就完成了。
Web服务器是连接用户浏览器与Python服务器端程序的中间节点,在网站建立的过程中起着重要的作用。Nginx是由俄罗斯工程师开发的一个高性能HTTP和反向代理服务器,它以运行稳定、配置简单、资源消耗低而闻名。应用Nginx+Python+uWSGI可以快速地建立网站服务器,从而实现高效、稳定的网络应用。