設定¶
デフォルトでは、Unit APIがコントロール ソケット ファイル control.unit.sock の中で利用可能です。
アプリケーション¶
各アプリケーションのために、Unit設定のapplications
のセクション内のJSONオブジェクトを呈するためにAPIを使います。JSONオブジェクトは、書かれている言語、実行するアプリケーションワーカープロセスの数、アプリケーションのためのファイルを持つディレクトリ、および言語によって変わるパラメータを含む、アプリケーションの幾つかの特徴を定義します。
この例は/www/blogs/scripts内で見つかるファイルを使ってblogsという名前のPHPアプリケーションの20プロセスを実行します。URLがPHPファイルを指定しない場合のデフォルトの起動ファイルは index.phpです。
{
"blogs": {
"type": "php",
"processes": 20,
"root": "/www/blogs/scripts",
"index": "index.php"
}
}
リスナー¶
HTTPを経由してアクセス可能なアプリケーションについて、Unit設定のlisteners
セクションの中でそれのための少なくとも1つのlistenerを定義する必要があります。listener は名前付きのアプリケーションへのクライアントのリクエストのためのUnit listenerのIPアドレスとポートです。IP アドレスは完全アドレス(例えば127.0.0.1:8300
) あるいはワイルドカード (例えば *:8300
)です。
この例では、ポート 8300 で受け取られるリクエストは blogs アプリケーションに送られます:
{
"*:8300": {
"application": "blogs"
}
}
各言語のJSONオブジェクトについての詳細は、アプリケーション オブジェクトを見てください。
最小構成¶
アプリケーションを実行するには、この例のように少なくとも1つのlistenerと関係するアプリケーションを含まなければなりません:
{
"listeners": {
"*:8300": {
"application": "blogs"
}
},
"applications": {
"blogs": {
"type": "php",
"processes": 20,
"root": "/www/blogs/scripts",
"index": "index.php"
}
}
}
設定オブジェクトの生成¶
オブジェクトを設定するには、PUT
リクエストのボディ内でJSONのデータを指定します。エラーを減らすために、ファイル内にJSONデータを書き、curl
コマンドの -d
オプションを使ってファイルパスを指定するのが合理的です。
例: 完全な設定の作成¶
start.json ファイルの内容をアップロードすることで初期設定を生成します。
# curl -X PUT -d @/path/to/start.json \
--unix-socket /path/to/control.unit.sock http://localhost/
例: アプリケーション オブジェクトの生成¶
ファイル wiki.jsonからwiki と呼ばれる新しいアプリケーションオブジェクトを生成します:
# curl -X PUT -d @/path/to/wiki.json \
--unix-socket /path/to/control.unit.sock http://localhost/applications/wiki
wiki.json の内容は以下のとおりです:
{
"type": "python",
"processes": 10,
"module": "wsgi",
"user": "www-wiki",
"group": "www-wiki",
"path": "/www/wiki"
}
設定オブジェクトの表示¶
設定オブジェクトを表示するには、そのパスをcurl
URL に追加します。
例: 完全な設定の表示¶
完全な設定を表示します:
# curl --unix-socket /path/to/control.unit.sock http://localhost/
{
"listeners": {
"*:8300": {
"application": "blogs"
}
},
"applications": {
"blogs": {
"type": "php",
"user": "nobody",
"group": "nobody",
"root": "/www/blogs/scripts",
"index": "index.php"
}
}
}
例: オブジェクトの表示¶
wiki アプリケーションについてのデータを表示します:
# curl --unix-socket /path/to/control.unit.sock http://localhost/applications/wiki
{
"type": "python",
"processes": 10,
"module": "wsgi",
"user": "www",
"group": "www",
"path": "/www/wiki"
}
設定オブジェクトの修正¶
設定オブジェクトを変更するには、PUT
リクエストのボディ内にオブジェクトのJSONデータを指定するために、curl
コマンドに -d
オプションを使います。
例: listenerのためのアプリケーションの変更¶
*:8400上のlistenerについて、application
オブジェクトを wiki-dev に変更します:
# curl -X PUT -d '"wiki-dev"' --unix-socket /path/to/control.unit.sock \
'http://localhost/listeners/*:8400/application'
{
"success": "Reconfiguration done."
}
例: アプリケーションのためのファイルパスの変更¶
blogs アプリケーションについての root
オブジェクトを /www/blogs-dev/scriptsに変更します:
# curl -X PUT -d '"/www/blogs-dev/scripts"' \
--unix-socket /path/to/control.unit.sock \
http://localhost/applications/blogs/root
{
"success": "Reconfiguration done."
}
設定オブジェクトの削除¶
設定オブジェクトを削除するために、DELETE
リクエストを作成し、オブジェクトのパスを curl
URL に追加します。
例: listenerの削除¶
*:8400上のlistenerを削除します:
# curl -X DELETE --unix-socket /path/to/control.unit.sock \
'http://localhost/listeners/*:8400'
{
"success": "Reconfiguration done."
}
アプリケーション オブジェクト¶
各アプリケーション オブジェクトは型に関係なくアプリケーションについて指定することができる多くの共通オプションを持ちます。
共通のオプションは以下の通りです:
オブジェクト | 説明 |
---|---|
種類 |
アプリケーションの型: go , perl , php , python あるいは ruby . |
processes (任意) |
アプリケーション プロセスの数。デフォルトでは 1つのプロセスが使われます。 |
working_directory (任意) |
アプリケーションのための作業ディレクトリ。指定されない場合は、Unitデーモンの作業ディレクトリが使われます。 |
user (任意) |
アプリケーションプロセスを実行するユーザ名。指定されない場合、nobody が使われます。 |
group (任意) |
アプリケーションプロセスを実行するグループ名。指定されない場合、ユーザのプライマリ グループが使われます。 |
アプリケーションの型
に応じて、多くの追加のオプションを設定する必要があります。
Go アプリケーション¶
オブジェクト | 説明 |
---|---|
実行ファイル |
コンパイルされたアプリケーションへのパス。working_directory への絶対あるいは相対。 |
例:
{
"type": "go",
"working_directory": "/www/chat",
"executable": "bin/chat_app",
"user": "www-go",
"group": "www-go"
}
Perl アプリケーション¶
オブジェクト | 説明 |
---|---|
script |
PSGI スクリプト パス。 |
例:
{
"type": "perl",
"script": "/www/bugtracker/app.psgi",
"working_directory": "/www/bugtracker",
"processes": 10,
"user": "www",
"group": "www"
}
PHP アプリケーション¶
オブジェクト | 説明 |
---|---|
root |
PHPファイルを探すディレクトリ。 |
見出し |
URL内でPHPファイル名が指定されない場合のデフォルトの起動ファイル。 |
script (任意) |
ファイルシステム内でファイルを探す代わりにUnitが各URLについて実行するファイル。場所はrootへの相対です。 |
例:
{
"type": "php",
"processes": 20,
"root": "/www/blogs/scripts",
"index": "index.php",
"user": "www-blogs",
"group": "www-blogs"
}
Python アプリケーション¶
オブジェクト | 説明 |
---|---|
module |
WSGI モジュール名。 |
path (任意) |
WSGIモジュール ファイルを探すためのパス。 |
例:
{
"type": "python",
"processes": 10,
"path": "/www/store/cart",
"module": "wsgi",
"user": "www",
"group": "www"
}
Ruby アプリケーション¶
オブジェクト | 説明 |
---|---|
script |
Rack スクリプト パス。 |
例:
{
"type": "ruby",
"processes": 5,
"user": "www",
"group": "www",
"script": "/www/cms/config.ru"
}
完全な例¶
{
"listeners": {
"*:8300": {
"application": "blogs"
},
"*:8400": {
"application": "wiki"
},
"*:8500": {
"application": "go_chat_app"
},
"127.0.0.1:8600": {
"application": "bugtracker"
},
"127.0.0.1:8601": {
"application": "cms"
}
},
"applications": {
"blogs": {
"type": "php",
"processes": 20,
"root": "/www/blogs/scripts",
"user": "www-blogs",
"group": "www-blogs",
"index": "index.php"
},
"wiki": {
"type": "python",
"processes": 10,
"user": "www-wiki",
"group": "www-wiki",
"path": "/www/wiki",
"module": "wsgi"
},
"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"
},
"cms": {
"type": "ruby",
"processes": 5,
"user": "www",
"group": "www",
"script": "/www/cms/config.ru"
}
}
}