diff --git a/docs/source/attributes.rst b/docs/source/attributes.rst index 60c846b3..488c488a 100644 --- a/docs/source/attributes.rst +++ b/docs/source/attributes.rst @@ -564,6 +564,25 @@ passenger made to your web server. Useful for certain hybrid static/dynamic web sites. +- ``app['appserver']['pool_idle_time']`` + + - **Type:** Integer + - **Default:** 300 + - Sets the ``PoolIdleTime`` parameter + +- ``app['appserver']['max_request_queue_size']`` + + - **Type:** Integer + - **Default:** 100 + - Sets the ``MaxRequestQueueSize`` parameter + +- ``app['appserver']['error_document']`` + + - **Type:** Hash + - **Default:** off + - Sets the { "status": "file" } parameter + e.g. { "500": "500.html", "503": "503.html" } + webserver ~~~~~~~~~ diff --git a/libraries/drivers_appserver_passenger.rb b/libraries/drivers_appserver_passenger.rb index dd0159f8..07841003 100644 --- a/libraries/drivers_appserver_passenger.rb +++ b/libraries/drivers_appserver_passenger.rb @@ -5,7 +5,7 @@ module Appserver class Passenger < Drivers::Appserver::Base adapter :passenger allowed_engines :passenger - output filter: %i[max_pool_size min_instances mount_point] + output filter: %i[max_pool_size min_instances mount_point pool_idle_time max_request_queue_size error_document] def manual_action(action); end @@ -17,7 +17,7 @@ def add_appserver_service_context; end def webserver_config_params o = out - Hash[%i[max_pool_size min_instances mount_point].map { |k| [k, o[k]] }].reject { |_k, v| v.nil? } + Hash[%i[max_pool_size min_instances mount_point pool_idle_time max_request_queue_size error_document].map { |k| [k, o[k]] }].reject { |_k, v| v.nil? } end end end diff --git a/spec/unit/recipes/configure_spec.rb b/spec/unit/recipes/configure_spec.rb index a19e8a52..9657cc44 100644 --- a/spec/unit/recipes/configure_spec.rb +++ b/spec/unit/recipes/configure_spec.rb @@ -879,6 +879,9 @@ deploy['dummy_project']['appserver']['max_pool_size'] = 10 deploy['dummy_project']['appserver']['min_instances'] = 5 deploy['dummy_project']['appserver']['mount_point'] = '/some/mount/point' + deploy['dummy_project']['appserver']['pool_idle_time'] = 300 + deploy['dummy_project']['appserver']['max_request_queue_size'] = 100 + deploy['dummy_project']['appserver']['error_document'] = { "503": "503.html", "504": "504.html" } deploy['dummy_project']['webserver']['adapter'] = 'apache2' deploy['dummy_project']['global']['environment'] = 'production' solo_node.set['deploy'] = deploy diff --git a/templates/default/appserver.apache2.passenger.conf.erb b/templates/default/appserver.apache2.passenger.conf.erb index f199af6f..2945c954 100644 --- a/templates/default/appserver.apache2.passenger.conf.erb +++ b/templates/default/appserver.apache2.passenger.conf.erb @@ -55,6 +55,12 @@ Header always unset "X-Powered-By" <% if @appserver_config[:min_instances] -%> PassengerMinInstances <%= @appserver_config[:min_instances] %> <% end %> +<% if @appserver_config[:pool_idle_time] -%> + PassengerPoolIdleTime <%= @appserver_config[:pool_idle_time] %> +<% end %> +<% if @appserver_config[:max_request_queue_size] -%> + PassengerMaxRequestQueueSize <%= @appserver_config[:max_request_queue_size] %> +<% end %> > PassengerAppEnv <%= @deploy_env %> @@ -63,6 +69,13 @@ Header always unset "X-Powered-By" RewriteEngine on + + <% if @appserver_config[:error_document] -%> + PassengerErrorOverride on + <% @appserver_config[:error_document].each do | status, file | %> + ErrorDocument <%= status %> "/<%= file %>" + <% end %> + <% end %> <% end %> <%= @out[:extra_config] %> @@ -138,6 +151,12 @@ SSLStaplingCache "shmcb:logs/stapling-cache(150000)" <% if @appserver_config[:min_instances] -%> PassengerMinInstances <%= @appserver_config[:min_instances] %> <% end %> +<% if @appserver_config[:pool_idle_time] -%> + PassengerPoolIdleTime <%= @appserver_config[:pool_idle_time] %> +<% end %> +<% if @appserver_config[:max_request_queue_size] -%> + PassengerMaxRequestQueueSize <%= @appserver_config[:max_request_queue_size] %> +<% end %> > PassengerAppEnv <%= @deploy_env %> @@ -149,6 +168,13 @@ SSLStaplingCache "shmcb:logs/stapling-cache(150000)" RewriteEngine on + <% if @appserver_config[:error_document] -%> + PassengerErrorOverride on + <% @appserver_config[:error_document].each do | status, file | %> + ErrorDocument <%= status %> "/<%= file %>" + <% end %> + <% end %> + <%= @out[:extra_config_ssl] %>