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