BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース NGINXが動的設定ができるオープンソースのWebサーバをリリース

NGINXが動的設定ができるオープンソースのWebサーバをリリース

原文(投稿日:2018/05/04)へのリンク

読者の皆様へ:ノイズを減らすための一連の機能を開発しました。関心のあるトピックについて電子メールとWeb通知を受け取ることができます新機能の詳細をご覧ください。

NGINXは最近、オープンソースのWebアプリケーションサーバであるUnitのバージョン1.0をリリースした。サーバはリモートおよび動的設定をサポートし、設定変更に対するサービス中断は発生しない。Unit 1.0は複数の言語(Go、Perl、PHP、Python、Ruby)を同一インスタンス上での実行をサポートしており、同じ言語で複数のバージョンについても同様にサポートする。

NGINX Unitは静的な設定ファイルを使わずに、代わりにJSONを使ってREST APIを介して設定される。すべての設定はメモリに直接保存され、実行中のサービスを再起動せずに変更を行うことができる。ルータプロセスは永続的であり、再起動する必要はない。

基本設定には、少なくとも1つのリスナーと1つのアプリケーションが必要である。リスナーは、どのポートとIPアドレスでUnitがリッスンし、指定されたアプリケーションにリダイレクトするかを指定する。アプリケーション定義では、言語仕様、アプリケーションのファイルのディレクトリ、プロセスの数を指定することができる。

たとえば、最大20のプロセスを使用して、/www/blogs/scriptsにあるPHPアプリケーションを提供するために、ポート8300上にリスナーを定義することができる。

 { "listeners": { "*:8300": { "application": "blogs" } }, "applications": { "blogs": { "type": "php", "processes": 20, "root": "/www/blogs/scripts", "index": "index.php" } } }

Unitのドキュメントに記載される推奨は、設定を(バージョン管理された)ファイルに保存し、それをサーバーにPOSTすることである。上記のデータがstart.jsonというファイルに格納されている場合、次のように初期設定を作成できる。

# curl -X PUT -d @/path/to/start.json --unix-socket /path/to/control.unit.sock http://localhost/

Unitは、ルータプロセスをアプリケーションプロセスとは別に持ち、アプリケーションコードを実行する。各アプリケーションプロセスプールは、他のプロセスから独立していることを保証するために、独自のサンドボックス内で実行される。この独立性により、異なる言語で動作する複数のアプリケーションを同じサーバ上で実行することができる。

NGINX Unit architecture (credit: NGINX)

NGINX Unit architecture (credit: NGINX)

 

次の例では、GoとPerlアプリケーションが同じUnitサーバ上で実行されるように設定されている。

 { "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)であり、DebianCentOSUbuntuなどを含むほとんどのオペレーティングシステムで利用可能なビルド済みパッケージがある。Docker HubのDockerコンテナも利用できる

Rate this Article

Adoption Stage
Style

特集コンテンツ一覧

BT