NGINXユニット-オープンソースのWebアプリケーションサーバー

Nginxは最初のリリースを発表しました beta ofUnit-複数の言語でアプリケーションを実行するように設計された動的WebアプリケーションサーバーであるNginxUnit。 これは、Python、PHP、およびGoをサポートするアプリケーションサーバーであり、Java、Node.js、およびRubyがサポートされます。

ユニットは軽量で多言語であり、APIを介して動的に構成されます。 NGINXユニットは現在 beta したがって、本番環境での使用はお勧めしません。 ユニットはHTTPリクエストを行うことで設定できます

Nginxユニットをインストールします

NGINXユニットは、Linux 2.6以降、FreeBSD 9以降、MacOS X、Solaris11のシステムでコンパイルおよび実行できるようにテストされています。Centos7およびUbuntu16.04で利用可能なユニットのパッケージが存在します。 アプリケーションを実行するには、python(2.6、2.7、3)、php(5、7)、Go(1.6以降)のプログラミング言語が必要です。

a)Centos7の場合

最初にリポジトリ/etc/yum.repos.d/unit.repoを作成する必要があります

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

[unit]

name = unit repo baseurl = http://nginx.org/packages/mainline/centos/7/$basearch/ gpgcheck = 0 enabled = 1

これでインストールできます

# yum install unit
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.linode.com
 * epel: fedora-epel.mirrors.tds.net
 * extras: mirrors.linode.com
 * updates: mirrors.linode.com
Resolving Dependencies
--> Running transaction check
---> Package unit.x86_64 0:0.1-1.el7.ngx will be installed
--> Processing Dependency: libphp5-5.4.so()(64bit) for package: unit-0.1-1.el7.ngx.x86_64
--> Running transaction check
---> Package php-embedded.x86_64 0:5.4.16-42.el7 will be installed
--> Finished Dependency Resolution

b)Ubuntu16.04の場合

最初にPGPキーをダウンロードする必要があります

# wget https://nginx.org/keys/nginx_signing.key

これでキーをインストールできます

# apt-key add nginx_signing.key
OK

次に、sources.listファイルにUnitを追加する必要があります

# vim /etc/apt/sources.list
deb https://nginx.org/packages/mainline/ubuntu/ xenial nginx 
deb-src https://nginx.org/packages/mainline/ubuntu/ xenial nginx

次にインストールします

# apt update
...............
...............
Get:8 https://nginx.org/packages/mainline/ubuntu xenial/nginx Sources [24.7 kB]
Get:9 https://nginx.org/packages/mainline/ubuntu xenial/nginx amd64 Packages [35.2 kB]
# # apt install unit
Reading package lists... Done
Building dependency tree 
Reading state information... Done
The following packages were automatically installed and are no longer required:
 libdvdnav4 libdvdread4 libenca0 libguess1 librubberband2v5 libsdl2-2.0-0 libsndio6.1 libva-wayland1 libva-x11-1 mpv rtmpdump
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
 libphp-embed libphp7.0-embed
Suggested packages:
 php-pear
The following NEW packages will be installed:
 libphp-embed libphp7.0-embed unit

アプリケーションを構成して起動します

ユニット構成には、少なくとも1つのリスナーに関連付けられたアプリケーションを含める必要があります。 したがって、構成には2つのセクションがあります。 リスナー 応用。 APIを使用して、そのセクションの各アプリケーションのJSONオブジェクトを定義する必要があります。 デフォルトでは、UnitAPIはコントロールソケットファイルで利用できます control.unit.sock にあります /var/run/control.unit.sock また /run/control.unit.sock プリコンパイルされたパッケージを介してユニットをインストールする場合。

アプリケーションにHTTP経由でアクセスできるようにする場合は、少なくとも1つのリスナーを定義する必要があります。 リスナーのセクションには、ユニットが指定されたアプリケーションへのクライアント要求をリッスンするIPアドレスとポートが含まれます。

"listeners": {
         "*:8300": {
             "application": "myapps"
         }
     }

アプリケーションセクションでは、JSONオブジェクトは、記述された言語、実行するアプリケーションワーカープロセスの数、アプリケーションの1つまたは複数のファイルを含むディレクトリなど、このオブジェクトのいくつかの特性を定義します。一部のパラメーターは次のことができることに注意する必要があります。言語によって異なるため、各プラットフォームにはわずかに異なるオプションがあります。

"applications": {
         "myapps": {
             "type": "php",
             "workers": 20,
             "root": "/var/www/php-app",
             "index": "index.php"
         }
     }

初期構成を作成するには、最初に構成オブジェクトを作成し、そのJSONデータを本文で指定する必要があります。 置く リクエスト。 指定したポートは、アプリケーションの起動に使用されるポートです。

以下に示すように、jsonファイルのパスを指定できます。

# curl -X PUT -d @/path/file.json --unix-socket /var/run/control.unit.sock https://localhost:port

にとって example、次のようにjsonファイルを作成します。

#vim /var/www/html/apps.json
{
     "listeners": {
         "*:4500": {
             "application": "apps"
         }
     },
     "applications": {
         "apps": {
             "type": "php",
             "workers": 10,
             "user": "www-php",
             "group": "www-php",
             "root": "/var/www/html",
             "index": "index.php"
         }
     }
}

ポート4500を使用することにしたので、ポートを開いて使用する必要があります

# firewall-cmd --zone=public --permanent --add-port=4500/tcp
# firewall-cmd --zone=public --permanent --add-port=4500/udp
# firewall-cmd --reload

次に、以下のコマンドを使用して初期構成ファイルを作成します。

# curl -X PUT -d @/var/www/html/apps.json --unix-socket /var/run/control.unit.sock https://localhost:4500
{
	"success": "Reconfiguration done."
}

構成が適切に行われていることがわかります。 指定されたIPアドレスとポートを使用してWebアプリケーションにアクセスできます

APIサーバーがApacheではなくユニットであり、使用されているポートが構成されていることがわかります。

Unitは、アプリケーションを複数の言語で実行する可能性を提供する便利な動的Webアプリケーションサーバーです。 使用するポートを指定できます。 オブジェクトタイプの定義を尊重することで、同じjsonファイルに別のプロジェクトタイプを追加できます。 詳細については、 公式ドキュメント