使用nginx unit部署微服务

前端时间,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项目,以hyriamb/nem-downloader: django网易云音乐下载器,适用于新版api为例。

安装nginx unit

nginx unit为ubuntu和centos提供了预编译的安装包,按照文档的步骤安装即可。其他系统需要自行编译安装。
我创建了一个Dockerfile,你可以直接使用这个Dockerfile构建一个镜像。如果想要自己编译安装,也可以参考这个dockerfile。
https://github.com/nyanim/nginx-unit-docker
如果你想要自己构建镜像,不要基于alpine构建,因为alpine使用musl而非glibc,无法支持unit中用到的 getcontext

配置

unit默认使用unix socket通信(在我的Docker镜像中配置为通过8000端口通信),socket的默认位置为 /var/run/control.unit.sock
一个python应用的配置如下:

使用如下命令配置unit

如果出现 "success": "Reconfiguration done."即成功。

此时应用已经可以通过 http://localhost:8093/访问

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注

我不是机器人 *