androidapachebackendcentoscommandcomposercrontabcurldesigndevelopdockerelasticfinancingfirewallfrontendgitgolanghybridiisiptablesjavajenkinskuberneteslaravelluamacmemcachemigrationmongodbmysqlnginxnodejsofficeopensslperformancephpredisregexprestfulsecurityshellsnippetsshstartupteamtraintravelunitvmwarevsftpwindowsworkwwwyaf

Unit

安装

配置 repo

/etc/yum.repos.d/unit.repo

[unit]
name=unit repo
baseurl=https://packages.nginx.org/unit/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

安装 unit

yum install unit

安装模块

yum install unit-php unit-python unit-go unit-perl

使用

启动unit

systemctl start unit

关闭unit

systemctl stop unit

配置unit

service unit loadconfig /etc/unit/config

应用

配置文件格式

# vi /disk/units/default.json
{
    "listeners": {
        "*:8080": {
            "application": "default_site"
        }
    },

    "applications": {
        "default_site": {
            "type": "php",
            "processes": 20,
            "root": "/disk/www/default",
            "index": "index.php",
            "script": "index.php"
        }
    }
}

# 配置参数说明
type    应用的编程语言 (php).
workers 应用的工作数量。
root    文件的本地路径。
index   默认的index文件路径。
script (optional)   访问 Unit 内任意的URL均会运行,请填写相对路径。
user (optional)     运行进程的用户,如未定义,则默认(nobody)。
group (optional)    用户所在的用户组 。如未定义,则默认。

注册应用

curl -X PUT -d @/disk/units/default.json --unix-socket /var/run/control.unit.sock http://localhost/

配合 Nginx

upstream unit_backend {
    server 127.0.0.1:8888;
}

server {
    listen 80;
    server_name x.example.com;

    location / {
        try_files $uri @index_php;
    }

    location @index_php {
        proxy_pass       http://unit_backend;
        proxy_set_header Host $host;
    }

    location ~ \.(js|css|webp|jpg|jpeg|png|gif|swf|ttf|otf|eot|svg|woff|woff2)$ {
        expires 7d;
        add_header "Access-Control-Allow-Origin" "*";
    }

}

# 注意,使用反向代理和 try_files 方式,在 PHP 端只能使用 REQUEST_URI 来实现路由

参考资料