nginx unit配置python项目

NGINX Unit是一款动态网页和应用程序服务器,专为运行多种语言的应用程序而设计,可以通过API动态配置。

特点:
- 使用RESTful JSON API完全动态重新配置
- 多种应用程序语言和版本可以同时运行
- 动态应用程序流程管理(即将推出)
- TLS支持(即将推出)
- TCP,HTTP,HTTPS,HTTP / 2路由和代理(即将推出)

目前支持的语言:
Python, PHP,Go,Perl,Ruby,JavaScript/Node.js (即将推出),Java (即将推出)

开始配置

环境:ubuntu18.04, nginx1.14.0,  unit1.1

安装nginx unit:

添加apt源

# wget https://nginx.org/keys/nginx_signing.key
# apt-key add nginx_signing.key

使用nano或vim编辑 /etc/apt/sources.list.d/unit.list,根据系统版本添加以下内容(暂时没有ubuntu18的源,先用17的)

# nano  /etc/apt/sources.list.d/unit.list

For Ubuntu 16.04:

deb https://packages.nginx.org/unit/ubuntu/ xenial unit
deb-src https://packages.nginx.org/unit/ubuntu/ xenial unit

For Ubuntu 17.10:

deb https://packages.nginx.org/unit/ubuntu/ artful unit
deb-src https://packages.nginx.org/unit/ubuntu/ artful unit

更新并安装包

# apt update
# apt install unit

根据系统python版本,安装unit-python插件包

# apt install unit-python3.6 unit-python2.7  

Python项目
我使用了bottle框架,目录结构如下:

/home/qf/python_app/ 
/home/qf/python_app/venv (使用virtualenv 创建的虚拟环境)
/home/qf/python_app/main.py

main.py内容如下:(入口文件必须有application变量,unit通过“application”来检测wsgi模块)

from bottle import Bottle

app = Bottle()

@app.get('/')
def index():
    return '<b>ccc </b>!'

application = app

配置unit:
编辑/etc/unit/config文件,添加以下配置:(unit 0.3之后可以使用”home”选项来指定虚拟环境目录)

{
    "listeners": {
        "*:8100": {
            "application": "python_app"
        }
    },

    "applications": {
        "python_app": {
            "type": "python 2",
            "processes": 5,
            "path": "/home/qf/python_app",
            "home": "/home/qf/python_app/venv",
            "module": "main"
        }
    }
}

重新读取配置并

# service unit loadconfig

成功读取后会出现:

Loading configuration from /etc/unit/config...
{
    "success": "Reconfiguration done."
}

重启unit

# service unit restart

成功后打开http://127.0.0.1:8100 就可以访问到页面

猜你喜欢

转载自blog.csdn.net/qf0129/article/details/80288106