uwsgi指定python路径_uWsgi服务器(2)--安装配置

uWsgi做为一款应用服务器,其安装配置是非常简单的。

一、安装

  • 虚拟环境安装
pip install uwsgi
  • 源码安装
wget http://projects.unbit.it/downloads/uwsgi-latest.tar.gz
tar zxvf uwsgi-latest.tar.gz
cd uwsgi-latest
make
  • 测试

创建一个wsgi应用:

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

如您所见,它由单个Python函数组成。之所以称为“应用程序”,是因为它可以uWSGI加载器加载。

接下来我们启动 uWSGI 来运行一个 HTTP 服务器,将程序部署在HTTP端口 9000 上:

# 在虚拟环境中启动uwsgi
uwsgi --http 127.0.0.1:9000 --wsgi-file example.py

打开浏览器,输入:http://127.0.0.1:9000

07b3704e5ae6b5ebcedf6e81732f2783.png
图1 hello world

默认情况下,uWSGI 启动一个单一的进程和一个单一的线程。

你可以用 --processes 选项添加更多的进程,或者使用 --threads 选项添加更多的线程 ,也可以两者同时使用。

uwsgi --http 127.0.0.1:9090 --wsgi-file foobar.py --master --processes 4 --threads 2

以上命令将会生成 4 个进程, 每个进程有 2 个线程。

二、配置

uWSGI支持多种与Web服务器集成的方法。它也能够自己处理HTTP请求。但在实际的生产环境中,一般会配合nginx或apache使用,咱们以nginx为例,来看一下如何配置。

1. nginx的配置

通常,您只需要包含uwsgi_params文件(包含在nginx发行版中),并使用uwsgi_pass指令设置TCP套接字的地址即可

server {# 监听端口listen 80;# 可以是ip地址或域名server_name www.blog.com;# 动态请求nginx转发给uwsgilocation / {# 转发端口必须和uwsgi配置文件中socket端口一致uwsgi_pass      127.0.0.1:8000; include uwsgi_params; }# 静态资源所在位置,nginx自己处理location /static {alias /var/www/online/static/;}
}

nginx安装完毕后,自带一个uwsgi_params文件:

81679d11e6d97a76ea071da10a4fa175.png
图2 nginx自带uwsgi_params文件

uwsgi_params文件内容:

uwsgi_param  QUERY_STRING       $query_string;
uwsgi_param  REQUEST_METHOD     $request_method;
uwsgi_param  CONTENT_TYPE       $content_type;
uwsgi_param  CONTENT_LENGTH     $content_length;uwsgi_param  REQUEST_URI        $request_uri;
uwsgi_param  PATH_INFO          $document_uri;
uwsgi_param  DOCUMENT_ROOT      $document_root;
uwsgi_param  SERVER_PROTOCOL    $server_protocol;
uwsgi_param  REQUEST_SCHEME     $scheme;
uwsgi_param  HTTPS              $https if_not_empty;uwsgi_param  REMOTE_ADDR        $remote_addr;
uwsgi_param  REMOTE_PORT        $remote_port;
uwsgi_param  SERVER_PORT        $server_port;
uwsgi_param  SERVER_NAME        $server_name;

这个文件中包含了转发请求时要携带的内容:查询字符串、请求方法、内容类型等

修改了配置文件,记得重启nginx服务。

2. uWsgi服务器配置

和nginx配合使用,uwsgi是socket套接字的方式启动,而不是以http服务器启动。启动方式有两种:命令行和配置文件。

  • 命令行方式启动
uwsgi --socket 127.0.0.1:9000 --wsgi-file example.py --master --processes 4 --threads 2 

但这种方式写起来复杂,易出错,不能重用,所以一般使用这种方式,只是用于调试,一旦调试正确,我们就可以使用配置文件进行配置,命令行的每一个参数对应配置文件的一行。

  • 配置文件

uwsgi支持以以下几种文件方式加载配置:

uwsgi --ini http://uwsgi.it/configs/myapp.ini # HTTP
uwsgi --xml - # standard input
uwsgi --yaml fd://0 # file descriptor
uwsgi --json 'exec://nc 192.168.11.2:33000' # arbitrary executabl

3.INI文件

.INI文件是许多应用程序使用的标准事实上的配置格式。它由[section]s和key=value对组成。

[uwsgi]
socket = 127.0.0.1:9000
wsgi-file = example.py
master = true
threads = 2[app1]
.....

默认情况下,uWSGI使用该[uwsgi]部分,但是您可以在使用语法加载INI文件时指定另一个部分名称filename:section

uwsgi --ini uconfig.ini:app1 

注意:

  • 配置文件中空格无所谓,几个都行
  • 以分号或#号开头的是注释
  • 启动使用命令: uwsgi --ini uconfig.ini,等价于 uwsgi uconfig.ini

4.XML文件

根节点应为和选项值文本节点。

127.0.0.1:9000example.py3

一个xml文件中可以朵儿节点,可以通过制定不同id属性加以区分,要选用不同的节,可以再文件名后加冒号再跟id属性。加载xml配置文件:

# 两种方式等价
uwsgi myconf.xml
uwsgi --xml myconf.xml

5.JSON文件

JSON文件应表示一个具有一对键值对的对象,键为“ uwsgi”,值为配置变量的对象。支持内置JSON列表,布尔值和数字类型。

{"uwsgi": {"socket": ["127.0.0.1:8000"],"master": true,"workers": 3},"app1":{....}
}

加载方式:

uwsgi --json myconf.json:app1 # 根据节的名字加载

6.常见参数

表1中列出了常用配置参数

1642fce1664ef69371d879bf4b6ab8b0.png
表1 uwsgi常用配置参数

uwsgi也可以加载很多插件,其中在python开发中,用得到是python插件,参数:

88745ae4e16519599083d800390e15ea.png

下一节中,我们会说一下在Django和Flask项目中如何配置。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部