Ninvfeng Blog

记录web开发中的所见所得

使用 Nginx Unit 代替php-fpm 运行PHP代码

00.png

官方解析: NGINX Unit 是一个动态的网络应用服务器,它的设计初衷就是可运行多种编程语言的。通过API可以轻巧、多面化地动态配置Unit。当工程师或操作者有需要时,可以轻松重构服务器已适配特殊的应用参数。

个人理解nginx unit就是可以解析多种语言的进程管理器, 在php中类似php-fpm的功能, 可脱离nginx与php-fpm单独解析php代码,有配置方便、使用灵活、可运行不同版本PHP、方便docker集成等优点,或许在微服务上会有一定优势,目前刚出正式1.0版本,具体表现还有待时间检验,我们先了解下怎么配置使用,先睹为快!

安装使用步骤

  1. 编译安装nginx unit

    git clone https://github.com/nginx/unit
    cd unit
    ./configure --prefix=/opt/unit --pid=/var/unit.pid --log=/var/log/unit.log --modules=modules --state=state
    ./configure php
    make all
    make install
  2. 启动nginx unit服务

    /opt/unit/sbin/unitd

    01.png

  3. 新建一个配置目录存放/data/www存放配置文件php-config.json

    {
       "listeners": {
           "*:8300": {
               "application": "blogs"
           }
       },
    
       "applications": {
           "blogs": {
               "type": "php",
               "processes": 20,
               "root": "/data/www/php",
               "index": "index.php"
           }
       }
    }
  4. 新建一个php文件 vim /data/www/php/index.php

    <?php phpinfo();
  5. 使用nginx unit 接口启动应用

    curl -X PUT -d @/data/www/php-config.json --unix-socket /opt/unit/control.unit.sock http://localhost/

    02.png

大功告成!浏览器访问 http://localhost:8300 可以正常打开,并看到phpinfo里的server api变成了unit

03.png

其他

  • 我这里尝试使用yum安装的时候提示错误, 下面是yum安装方式

    创建 /etc/yum.repos.d/unit.repo 内容如下, 然后执行 `yum install unit`
    [unit]
    name=unit repo
    baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
    gpgcheck=0
    enabled=1 
  • 可能需要先安装依赖

    yum install gcc make php-devel php-embedded
  • 可配合nginx反向代理使用更加灵活

      upstream unit_backend {
              server 127.0.0.1:8300;
      }
    
      server {
          listen 80;
          server_name unitphp.vagrant.com;
    
          location / {
                  proxy_pass http://unit_backend;
                  proxy_set_header Host $host;
          }
      }
  • 附加资料

    官网: http://unit.nginx.org/
    文档中文翻译: https://github.com/tuzimoe/unit/blob/master/README_zh-Hans.md

文章评论已关闭!