jobscore.passenger_nginx
Passenger NGINX
Rubyアプリ用のPassengerとNGINXをインストールするためのAnsibleロール
要件
このロールでは、ターゲットマシンにRubyが既にインストールされていることを期待しています。Rubyのバイナリパスはpassenger_ruby変数で設定できます。
ロール変数
Passenger設定
passenger_app_root: /mnt/app/public
Railsアプリの公開フォルダのパスです。
passenger_app_env: production
PassengerがRailsアプリを実行する際のRAILS_ENVです。
passenger_root: /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini
Passenger設定のルートファイルのパスです。このファイルはこのロールによって管理されていないため、手動で設定を行った場合のみ変更してください。
passenger_ruby: /usr/local/bin/ruby
Rubyバイナリのパスです。
passenger_extra_config: ''
この変数にアプリのPassengerの動作をカスタマイズするための設定を追加できます(mod-http-passenger.conf.j2で使用)。NGINX用のPassengerパラメータについての詳細はこちらで確認できます。
NGINX設定
nginx_server_name: www.example.com
NGINXがHTTPリクエストを受け付けるために使用するサーバー名です。
nginx_user: "www-data"
NGINXがサーバーを実行するために使用するユーザーです。
nginx_extra_config: ''
ルートレベルのnginx.confテンプレートに追加したい設定パラメータをここに追加できます。
nginx_events_extra_config: ''
eventsセクションに追加したい設定パラメータをここに追加できます。
nginx_http_extra_config: ''
httpセクションに追加したい設定パラメータをここに追加できます。
nginx_vhost_config: |
  server {
    listen 80 default_server;
    server_name {{ nginx_server_name }};
    passenger_enabled on;
    passenger_app_env {{ passenger_app_env }};
    root {{ passenger_app_root }};
  }
Passengerアプリ用のNGINX設定です。デフォルトの設定はすべてのアプリに対応しています。動作をカスタマイズしたい場合は、この変数を編集できます。ここでもJinjaテンプレートのように変数を使用できます。
nginx_worker_processes: "auto"
nginx_worker_connections: "768"
nginx_keepalive_timeout: "65"
これらの値は、nginx.confテンプレート内でそれぞれの値を設定するために使用されます。
例プレイブック
- hosts: servers
  roles:
    - role: jobscore.ruby
    - role: jobscore.passenger_nginx
- hosts: servers
  pre_tasks:
    - apt:
      name: ruby-full
      state: present
  roles:
    - role: jobscore.passenger_nginx
      nginx_server_name: www.example.com
      passenger_extra_config: |
        passenger_max_pool_size 6;
        passenger_min_instances 6;
        passenger_pre_start {{ nginx_server_name }};
ライセンス
著者情報
このロールは、Eric MagalhãesとGlauber BatistaがJobScore Incで働いている際に作成されました。
