前端时间,nginx发布了nginx unit。NGINX Unit 是一个动态的网络应用服务器,它被设计为可运行多种编程语言的。通过API可以轻巧,多面化的动态配置Unit。目前为止nginx unit支持php,python以及go。其他语言如java,javascript等语言尚未提供支持。
有了nginx unit,我们就可以不用配置繁琐的php-fpm和uwsgi,只需要一个json文件即可部署一个微服务。
NGINX Unit 现在是beta版本。你现在虽然可以使用它,但建议仅用于测试环境,不建议用于生产环境。
GitHub:https://github.com/nginx/unit/
中文文档:https://github.com/tuzimoe/unit/blob/master/README_zh-Hans.md
下面我们使用nginx unit部署一个django项目,以frankgx97/nem-downloader: django网易云音乐下载器,适用于新版api为例。
安装nginx unit
nginx unit为ubuntu和centos提供了预编译的安装包,按照文档的步骤安装即可。其他系统需要自行编译安装。
我创建了一个Dockerfile,你可以直接使用这个Dockerfile构建一个镜像。如果想要自己编译安装,也可以参考这个dockerfile。
https://github.com/frankgx97/nginx-unit-docker
如果你想要自己构建镜像,不要基于alpine构建,因为alpine使用musl而非glibc,无法支持unit中用到的getcontext
。
配置
unit默认使用unix socket通信(在我的Docker镜像中配置为通过8000端口通信),socket的默认位置为/var/run/control.unit.sock
。
一个python应用的配置如下:
#unit.json { "listeners": { "*:8093": { "application": "pythonapp" } }, "applications": { "pythonapp": { "type": "python", "workers": 2, "path": "/www",#wsgi.py所在目录。django默认生成的wsgi.py在一个子目录下,需要把它复制到应用根目录。 "module": "wsgi" } } }
使用如下命令配置unit
curl -X PUT -d @unit.json --unix-socket /var/run/control.unit.sock
如果出现"success": "Reconfiguration done."
即成功。
此时应用已经可以通过http://localhost:8093/
访问
发表回复/Leave a Reply