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] %>