Nginx+uWSGI部署python服务

Nginx+uWSGI部署python服务

1 python 安装 uWSGI

参考: https://www.runoob.com/python3/python-uwsgi.html

1.1 通过pip 命令安装:
pip install uwsgi
1.2 下载安装脚本:
curl http://uwsgi.it/install | bash -s default /tmp/uwsgi

将 uWSGI 二进制安装到 /tmp/uwsgi ,你可以修改它。

1.3 源代码安装:
wget http://projects.unbit.it/downloads/uwsgi-latest.tar.gz
tar zxvf uwsgi-latest.tar.gz
cd uwsgi-latest
make

安装完成后,在当前目录下,你会获得一个 uwsgi 二进制文件

2 配置uWSGI的xml配置文件 下面示例:myapp.xml

<uwsgi>
        <pythonpath>/home/dbfor/myapp</pythonpath>  # 运行文件包路径
        <module>manage.main</module>  # manage是python程序的名称, main是manage下得main执行方法
        <callable>app</callable>
        <socket>0.0.0.0:5000</socket>  # python服务要运行的ip和端口
        <buffer-size>40960</buffer-size>
        <listen>64</listen>
        <master/>
        <daemonize>/data/serverlog/myapp.log</daemonize>  # 输出日志路径
        <pidfile>/home/dbfor/myapp/uwsgi.pid</pidfile>  # pid文件
        <processes>8</processes>  # 启动的线程数
        <memory-report/>
</uwsgi>

3 uWSGI运行、重启、停止

参考: https://www.jianshu.com/p/c3b13b5ad3d7

# 先运行python虚拟环境,这里假定虚拟环境在env目录下
. env/bin/activate

通过uwsgi --help可以查看得到:

-x|--xmlconfig                         load config from xml file
-x|--xml                               load config from xml file
--ini                                  load config from ini file
-y|--yaml                              load config from yaml file
-y|--yml                               load config from yaml file
3.1 运行,通过指定运行配置文件
uwsgi -x myapp.xml
3.2 重启
# 先查询uwsgi程序运行的主线程ip(pid)
ps -ef | grep myapp

uwsgi --reload uwsgi.pid  # 或者通过kill -HUP pid 重启

3.3 停止
uwsgi --stop uwsgi.pid  # 或者通过kill -9 pid强制退出

4 Nginx 配置uWSGI反向代理接口

4.1 可以选择声明自己的一些uWsgi获取参数 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;
4.2 在nginx的配置文件中,配置如下http的sever参数
server {
    listen       80;
    server_name  xxx.dbfor.com;

    location ^~ /test/ {
        rewrite /test/(.+)$ /$1 break;  # 添加请求地址的字段判定和重定向请求
        include uwsgi_params;
        uwsgi_pass  127.0.0.1:8080;  # uWsgi的ip地址和端口
    }


    access_log /data/nginx_log/test.log main;    # 运行日志
    error_log  /data/nginx_log/test_error.log warn;  # 错误日志
}

通过上面的配置,接下来可以通过 http://xxx.dbfor.com/test/…… 的方式来访问对应的接口

4.3 Nginx操作命令
# 检查配置是否正确
nginx -t -c /etc/nginx/nginx.conf

# 启动
nginx -s start 
# 退出
nginx -s stop 
# 重启
nginx -s reload
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值