前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx Unit 1.0发布,可运行Go、Python、PHP等多种语言

Nginx Unit 1.0发布,可运行Go、Python、PHP等多种语言

作者头像
后场技术
发布2020-09-03 15:16:52
9660
发布2020-09-03 15:16:52
举报
文章被收录于专栏:后场技术后场技术

NGINX最近发布了 NGINX Unit 1.0版。NGINX Unit是一种开源的 Web和应用服务,它的设计初衷是为了运行多种编程语言,并且可以通过 API 动态配置已有应用的参数。Unit 1.0支持在同一实例中运行 Go、Perl、PHP、Python和 Ruby等多种语言,也支持同一语言的多个版本。

关于 Nginx Unit的定位,知乎网友黄鑫也做了分析。他说直观感受是替换了 gunicorn/FastCGI/uWSGI (Python语言环境,其他语言类似),统一由 Nginx Unit 提供 Web Server 接入,应用只需要关心业务请求。如下图所示:

NGINX Unit并非依赖于静态的配置文件,而是使用 JSON通过 REST API进行配置。所有的配置直接存储在内存中,支持运行中的服务无需重启即可应用配置更改。路由过程同样也是持续的,不需要重启。

Unit的基本配置需要指定至少一个监听器和一个应用。在对监听器的定义中,指定了 Unit监听的具体 IP和端口,并重定向到一个命名的应用。在对应用的定义中,可支持指定具体的语言、应用文件的目录和过程的数量。

例如,用户可以做如下的配置,在端口 8300上定义一个监听器,为“/www/blogs/scripts”目录中的 PHP应用提供服务,最大可使用 20个进程:

代码语言:javascript
复制
{
   "listeners": {
       "*:8300": {
           "application": "blogs"
       }
   },
   "applications": {
       "blogs": {
           "type": "php",
           "processes": 20,
           "root": "/www/blogs/scripts",
           "index": "index.php"
       }
   }
}

Unit官方文档中的推荐做法,是将上述配置存储在一个(受版本控制的)文件中,然后 POST到服务器端。如果上述配置是存储在一个名为 start.json的文件中,那么可以使用如下命令创建初始配置:

代码语言:javascript
复制
# curl -X PUT -d @/path/to/start.json --unix-socket /path/to/control.unit.sock http://localhost/

Unit实现了路由进程和具体运行应用代码的应用进程相分离。每个应用过程池在自身的沙箱中运行,这确保了该进程与其它进程的分离。这种分离支持运行不同语言的多个应用分享同一个服务器。

图 NGINX Unit的架构(NGINX官方提供)

下面的配置例子,设置在同一个 Unit服务器中运行 Go和 Perl应用:

代码语言:javascript
复制
{
   "listeners": {
      "*:8500": {
           "application": "go_chat_app"
       },
       "127.0.0.1:8600": {
           "application": "bugtracker"
       }
   },
   "applications": {
       "go_chat_app": {
           "type": "go",
           "user": "www-chat",
           "group": "www-chat",
           "working_directory": "/www/chat",
           "executable": "bin/chat_app"
       },
       "bugtracker": {
           "type": "perl",
           "processes": 3,
           "user": "www",
           "group": "www",
           "working_directory": "/www/bugtracker",
           "script": "app.psgi"
       }    }
}

据 NGINX产品负责人 Owen Garrett介绍,Unit适用于独立架构,也适用于基于微服务的架构。它支持对进程做按需扩展,并在每个进程自身的沙箱中执行该进程。

NGINX规划在未来的版本中添加对 Java和 Node.js语言的支持。企业还规划支持 SSL和 HTTP/2,以及使用 URI和主机名提供对静态内容和路由的服务。

NGINX Unit使用 Apache License 2.0许可开源,针对大多数操作系统提供了预构建的软件包,包括 Debian、CentOS、Ubuntu等。在 Docker Hub上也提供了 Unit的 Docker容器。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 后场技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档