NGINX Unit は、次の 2 つの主な機能を備えた軽量で多用途のオープンソース サーバーです。
静的なメディア資産を提供し、
アプリケーション コードを 8 つの言語で実行します。
Unit は、最新のアプリケーション スタックの複数のレイヤーを、パフォーマンス、低遅延、およびスケーラビリティに重点を置いた強力で一貫したソリューションに圧縮します。これは、エンタープライズ規模の展開からペットのホームページに至るまで、その複雑さに関係なく、あらゆる Web アーキテクチャの汎用ビルディング ブロックとして意図されています。
ネイティブ RESTful JSON API により、中断のない動的更新と柔軟な構成が可能になり、すぐに使用できる生産性が実稼働グレードのワークロードに確実に拡張されます。当社は、今日のコンピューティング プラットフォームを最大限に活用しながらセキュリティと堅牢性を確保するために、複数のプロセスで構成される複雑な非同期マルチスレッド アーキテクチャによってこれを実現します。
次のコマンドを実行して、 unitd
(ユニット デーモン) とunitctl
(制御ツール) の両方をインストールします。
$ brew install nginx/unit/unit
詳細と利用可能な言語パッケージについては、ドキュメントを参照してください。
$ docker pull unit:$ mkdir /tmp/unit-control # 必要に応じてカスタマイズします。$ docker run -d --mount type=bind,src=/tmp/unit-control,dst=/var/run --mount type=bind,src=.,dst=/www --ネットワークホスト ユニット
イメージ タグの説明については、ドキュメントを参照してください。
警告: 最新のイメージ タグは特定の言語モジュールをサポートしていない可能性があります。イメージを取得する前に、上記のリンクから利用可能なイメージ タグを確認してください。
現在の作業ディレクトリが/www
のユニット イメージにマウントされます。それ以上のカスタマイズが行われていないと仮定すると、 /tmp/unit-control/control.unit.sock
control.unit.sock にあるソケットにアクセスできます。
このヘルパー スクリプトは、システムの正しいパッケージ リポジトリを構成します。
$ wget https://raw.githubusercontent.com/nginx/unit/master/tools/setup-unit && chmod +x setup-unit# ./setup-unit repo-config
Debian の派生製品:
# aptインストールユニット
Fedora の派生製品:
# yum インストールユニット
詳細と利用可能な言語パッケージについては、ドキュメントを参照してください。
unitctl
の概要unitctl
使いやすいコマンド ライン インターフェイスを通じて NGINX Unit プロセスの管理を合理化します。 unitctl
を使い始めるには、公式 GitHub リリースまたは Homebrew からダウンロードします。
注記
Homebrew を使用して Unit をインストールした場合は、 unitctl
デフォルトで含まれているため、この手順をスキップできます。
NGINX Unit リリースからシステムに適切なunitctl
バイナリをダウンロードします。
$ tar xzvf Unitctl-master-x86_64-unknown-linux-gnu.tar.gz# mv Unitctl /usr/local/bin/
マシンに Docker がインストールされている場合は、アプリケーションと一緒に Unit の公式 Docker イメージの 1 つを簡単に起動できます。
ヒント
Python、PHP、WebAssembly、Node.js、Ruby などで構築された Web アプリケーション フレームワークのハウツー ガイドと構成ガイドは、unit.nginx.org で入手できます。
以下は、 unit:python
Docker イメージを使用した例です。
$ Unitctl インスタンス new 127.0.0.1:8001 /path/to/app 'unit:python'
/path/to/app
Docker ファイルシステムの/www
にマウントされます。
これを/path/to/app/wsgi.py
に保存します。
def application(environ, start_response): start_response("200 OK", [("Content-Type", "text/plain")]) return (b"Hello, Python on Unit!")
その後、現在アクティブな構成を対話的に編集できます。
$unitctl編集
{ "listeners": { "*:8000": { // リスナーが新しいアプリケーションを指すようにします "pass": "applications/python" } }, // アプリケーション定義を追加します "applications": { "python": { "type ": "python"、"パス": "/www/"、"モジュール": "wsgi" } }}
有効な構成は保存して閉じるときに適用されます。
$カール localhost:8000こんにちは、ユニットの Python!
他の Python 構成例については、ユニットのドキュメントを参照してください。
Unit はさまざまな言語でアプリを実行します。 curl
を使用して、Unit 上の単純な PHP アプリの構成を調べてみましょう。
PHP スクリプトを/www/helloworld/index.php
として保存したとします。
unit-php
モジュールがインストールされた Unit 上で実行するには、まずアプリケーション オブジェクトを設定します。最初の構成スニペットをconfig.json
というファイルに保存しましょう。
{ "helloworld": { "type": "php", "root": "/www/helloworld/" } }
ファイルとして保存する必要はありませんが、大きなオブジェクトの場合には便利です。
次に、それを Unit の制御 API の/config/applications
セクションにPUT
。これは通常、Unix ドメイン ソケット経由でデフォルトで利用可能です。
#curl -X PUT --data-binary @config.json --unix-socket /path/to/control.unit.sock http://localhost/config/applications
{"成功": "再構成が完了しました。"}
次に、API の/config/listeners
セクションのリスナー オブジェクトからアプリを参照します。 今回は、コマンド ラインから構成スニペットを直接渡します。
#curl -X PUT -d '{"127.0.0.1:8080": {"pass": "applications/helloworld"}}' --unix-socket /path/to/control.unit.sock http://ローカルホスト/config/listener
{ "成功": "再構成が完了しました。"}
これで、Unit は指定された IP とポートでリクエストを受け入れ、アプリケーション プロセスに渡します。あなたのアプリは機能します!
$カール 127.0.0.1:8080 こんにちは、ユニットの PHP です。
最後に、コントロール API の/config
セクション全体をクエリします。
#curl --unix-socket /path/to/control.unit.sock http://localhost/config/
ユニットの出力には、両方のスニペットがきちんと整理されて含まれている必要があります。
{ "リスナー": { "127.0.0.1:8080": { "パス": "アプリケーション/helloworld" } }, "アプリケーション": { "helloworld": { "type": "php", "root": "/www/helloworld/" } } }
ユニットは、WebAssembly コンポーネント (WASI 0.2) の実行をサポートします。詳細については、ユニット構成ドキュメントを参照してください。
当社の OpenAPI 仕様は、NGINX ユニットの展開の構成と統合を簡素化し、コントロール API に関する信頼できる知識源を提供することを目的としています。
質問をしたり、意見を共有したりするのに最適な場所は、GitHub ディスカッションです。
GitHub の問題ページでは、自分のペースでより技術的な議論ができるスペースを提供しています。
GitHub 上のプロジェクト マップは、現在の作業と将来の計画に光を当てています。
当社の公式ウェブサイトでは、他では簡単に見つけられない答えが見つかるかもしれません。
貢献してプロジェクトに参加しましょう!詳細については、貢献ガイドを参照してください。
チームに直接連絡するには、メーリング リストに登録してください。
セキュリティの問題については、件名に NGINX Unit を記載し、CVSS v3.1 仕様に従って電子メールでお問い合わせください。