NGINX Unit 是一个动态的网络应用服务器,它的设计初衷就是可运行多种编程语言的。
通过 API 可以轻巧,多面化的动态配置 Unit。当工程师或操作者有需要时,可以轻松重构服务器已适配特殊的应用参数。
NGINX Unit 现在是 beta 版本。你现在虽然可以使用它,但建议仅用于测试环境,不建议用于生产环境。
只是编译了对应语言环境的链接库,UnixSocket 通信,Nginx Unit 维护 Web 服务进程以及统一的会话通信。
多说一点:Nginx Unit 就相当于nginx和php-fpm的混合版,能提供这两种软件的功能,既能对外提供WEB服务,又能代替PHP-FPM来解析PHP脚本,简而言之,服务器只装Nginx Unit即可。PHP还是要安装的,因为Nginx Unit在编译时依赖PHP来生成php7.unit.so
链接库文件,只是在运行时使用这个链接库文件代替PHP-FPM进程而已,换句话说就是PHP只安装,并不需要运行PHP-FPM。
本项目的源代码及分发均使用 Apache 2.0 license。
-
文档:
-
核心功能
- 使用 RESTful JSON API 可完整的动态重配置服务器。
- 可同时运行多语言及多版本的应用。
- 动态语言的进程管理功能。 (开发中)
- TLS 支持 (开发中)
- TCP, HTTP, HTTPS, HTTP/2 路由和代理 (开发中)
-
支持的脚本语言
- Python
- PHP
- Go
- JavaScript/Node.js (开发中)
- Java (开发中)
- Ruby (开发中)
直观感受是替换了 gunicorn/FastCGI/uWSGI (Python语言环境,其他语言类似),统一由 Nginx Unit 提供 Web Server 接入,应用只需要关心业务请求。
体验nginx unit 链接:www.qead.com:8080。
#nginx unit 安装 环境:centos7.3
git clone https://github.com/nginx/unit
cd unit
./configure
#编译支持PHP(这里需要注意一下,就是在编译安装PHP的时候必须加上:--enable-embed参数,不然unit编译会报SPAI php embedded not found错误 )。
[root@ImmenseGargantuan-VM unit]# ./configure php --config=/usr/local/php/bin/php-config --module=php7 --lib-path=/usr/local/php/lib/
configuring PHP module
checking for PHP ... found
+ PHP version: 7.1.11
+ PHP SAPI: [cli embed fpm phpdbg cgi]
checking for PHP embed SAPI ... found
+ PHP module: php7.unit.so
#make all 一下即可
[root@ImmenseGargantuan-VM unit]# make all
#启动unit
[root@ImmenseGargantuan-VM unit]# ./build/unitd --control unix:control.unit.sock
2017/10/29 00:46:41 [info] 1349#1349 unit started
#查看unit进程
[root@ImmenseGargantuan-VM unit]# ps -ef |grep unit
root 1350 1 0 00:46 ? 00:00:00 unit: main [./build/unitd --control unix:control.unit.sock]
nobody 1352 1350 0 00:46 ? 00:00:00 unit: controller
nobody 1354 1350 0 00:46 ? 00:00:00 unit: router
nobody 1413 1350 0 00:47 ? 00:00:00 unit: "blogs" application
root 1490 12189 0 00:48 pts/1 00:00:00 grep --color=auto unit
#unit的配置文件使用的是json格式,创建json格式配置文件
[root@ImmenseGargantuan-VM src]# cat unit.json
{
"listeners": {
"*:8080": {
"application": "unit-test"
}
},
"applications": {
"unit-test": {
"type": "php",
"workers": 20,
"root": "/home/unit",
"user": "nobody",
"group": "nobody",
"index": "index.php"
}
}
}
#重载unit配置文件unit.json
[root@ImmenseGargantuan-VM unit]# curl -X PUT -d @/usr/local/src/unit.json --unix-socket /usr/local/src/unit/control.unit.sock 127.0.0.1
{
"success": "Reconfiguration done."
}
#通过IP:port方式进行访问,当然端口可以改为80,一样可以访问.
测试
- 官方测试(貌似比php-fpm快1倍):https://community.centminmod.com/threads/nginxs-unit.12803/
- 浏览器:返回Server:unit/0.3:
- phpinfo();返回:Server API: unit
还没有任何评论,你来说两句吧