Top Level Namespace

Defined Under Namespace

Modules: GC, PhusionPassenger, Signal Classes: CommonLibraryBuilder, Exception, IO, Object

Constant Summary collapse

COMMON_LIBRARY =
CommonLibraryBuilder.new do
	define_component 'Logging.o',
		:source   => 'Logging.cpp',
		:category => :base,
		:deps     => %w(
			Logging.cpp
			Logging.h
		)
	define_component 'Exceptions.o',
		:source   => 'Exceptions.cpp',
		:category => :base,
		:deps     => %w(
			Exceptions.h
		)
	define_component 'Utils/SystemTime.o',
		:source   => 'Utils/SystemTime.cpp',
		:category => :base,
		:deps     => %w(
			Utils/SystemTime.h
		)
	define_component 'Utils/StrIntUtils.o',
		:source   => 'Utils/StrIntUtils.cpp',
		:category => :base,
		:deps     => %w(
			Utils/StrIntUtils.h
		)
	define_component 'Utils/IOUtils.o',
		:source   => 'Utils/IOUtils.cpp',
		:category => :base,
		:deps     => %w(
			Utils/IOUtils.h
		)
	define_component 'Utils.o',
		:source   => 'Utils.cpp',
		:category => :base,
		:deps     => %w(
			Utils.h
			Utils/Base64.h
			Utils/StrIntUtils.h
			ResourceLocator.h
		)

	define_component 'Utils/Base64.o',
		:source   => 'Utils/Base64.cpp',
		:category => :other,
		:deps     => %w(
			Utils/Base64.h
		)
	define_component 'Utils/CachedFileStat.o',
		:source   => 'Utils/CachedFileStat.cpp',
		:category => :other,
		:deps     => %w(
			Utils/CachedFileStat.h
			Utils/CachedFileStat.hpp
		)
	define_component 'Utils/LargeFiles.o',
		:source   => 'Utils/LargeFiles.cpp',
		:category => :other,
		:deps     => %w(
			Utils/LargeFiles.h
		)
	define_component 'ApplicationPool2/Implementation.o',
		:source   => 'ApplicationPool2/Implementation.cpp',
		:category => :other,
		:deps     => %w(
			ApplicationPool2/Spawner.h
			ApplicationPool2/Common.h
			ApplicationPool2/Pool.h
			ApplicationPool2/SuperGroup.h
			ApplicationPool2/Group.h
			ApplicationPool2/Session.h
			ApplicationPool2/Options.h
			ApplicationPool2/PipeWatcher.h
			ApplicationPool2/AppTypes.h
			ApplicationPool2/Spawner.h
			ApplicationPool2/SpawnerFactory.h
			ApplicationPool2/SmartSpawner.h
			ApplicationPool2/DirectSpawner.h
			ApplicationPool2/DummySpawner.h
		)
	define_component 'ApplicationPool2/AppTypes.o',
		:source   => 'ApplicationPool2/AppTypes.cpp',
		:category => :other,
		:deps     => %w(
			ApplicationPool2/AppTypes.h
			Utils/StrIntUtils.h
			Utils/CachedFileStat.h
		)
	define_component 'AgentsStarter.o',
		:source   => 'AgentsStarter.cpp',
		:category => :other,
		:deps     => %w(
			AgentsStarter.h
			ResourceLocator.h
			MessageClient.h
			ServerInstanceDir.h
			Utils/IniFile.h
			Utils/VariantMap.h
		)
	define_component 'AgentsBase.o',
		:source   => 'agents/Base.cpp',
		:category => :other,
		:deps     => %w(
			agents/Base.h
			Utils/VariantMap.h
		)
	define_component 'agents/LoggingAgent/FilterSupport.o',
		:source   => 'agents/LoggingAgent/FilterSupport.cpp',
		:category => :logging_agent,
		:deps     => %w(
			agents/LoggingAgent/FilterSupport.h
		)
	define_component 'Utils/MD5.o',
		:source   => 'Utils/MD5.cpp',
		:category => :other,
		:deps     => %w(
			Utils/MD5.h
		)
	define_component 'Utils/fib.o',
		:source   => 'Utils/fib.c',
		:category => :other,
		:deps     => %w(
			Utils/fib.h
			Utils/fibpriv.h
		)
	define_component 'Utils/jsoncpp.o',
		:source   => 'Utils/jsoncpp.cpp',
		:category => :other,
		:deps     => %w(
			Utils/json.h
			Utils/json-forwards.h
		)

	#'BCrypt.o' => %w(
	#	BCrypt.cpp
	#	BCrypt.h
	#	Blowfish.h
	#	Blowfish.c)
end
NGINX_LIBS_SELECTOR =

Objects that must be linked into the Nginx binary.

[:base, 'AgentsStarter.o', 'ApplicationPool2/AppTypes.o',
'Utils/CachedFileStat.o', 'Utils/Base64.o', 'agents/LoggingAgent/FilterSupport.o']
LOCATION_CONFIGURATION_OPTIONS =
[
	{
		:name     => 'passenger_enabled',
		:context  => [:srv, :loc, :lif],
		:type     => :flag,
		:function => 'passenger_enabled',
		:field    => 'enabled',
		:header   => nil
	},
	{
		:name    => 'passenger_ruby',
		:context => [:srv, :loc, :lif],
		:type    => :string
	},
	{
		:name  => 'passenger_python',
		:type  => :string
	},
	{
		:name  => 'passenger_nodejs',
		:type  => :string
	},
	{
		:name  => 'passenger_app_env',
		:type  => :string,
		:field => 'environment',
		:header => 'PASSENGER_ENV'
	},
	{
		:name  => 'passenger_friendly_error_pages',
		:type  => :flag
	},
	{
		:name  => 'passenger_min_instances',
		:type  => :integer
	},
	{
		:name  => 'passenger_max_requests',
		:type  => :integer
	},
	{
		:name  => 'passenger_start_timeout',
		:type  => :integer
	},
	{
		:name   => 'passenger_base_uri',
		:type   => :string_array,
		:field  => 'base_uris',
		:header => nil,
		:auto_generate_nginx_merge_code => false
	},
	{
		:name  => 'passenger_user',
		:type  => :string
	},
	{
		:name  => 'passenger_group',
		:type  => :string
	},
	{
		:name  => 'passenger_app_group_name',
		:type  => :string
	},
	{
		:name  => 'passenger_app_root',
		:type  => :string
	},
	{
		:name => 'passenger_app_rights',
		:type => :string
	},
	{
		:name  => 'union_station_support',
		:type  => :flag
	},
	{
		:name     => 'union_station_filter',
		:take     => 'NGX_CONF_TAKE1',
		:type     => :string_array,
		:function => 'union_station_filter',
		:field    => 'union_station_filters',
		:header   => nil,
		:auto_generate_nginx_merge_code => false
	},
	{
		:name  => 'passenger_debugger',
		:type  => :flag
	},
	{
		:name  => 'passenger_show_version_in_header',
		:type  => :flag
	},
	{
		:name  => 'passenger_max_preloader_idle_time',
		:type  => :integer
	},
	{
		:name     => 'passenger_ignore_headers',
		:take     => 'NGX_CONF_1MORE',
		:function => 'ngx_conf_set_bitmask_slot',
		:field    => 'upstream_config.ignore_headers'
	},
	{
		:name   => 'passenger_set_cgi_param',
		:context => [:srv, :loc, :lif],
		:type   => :string_keyval,
		:field  => 'vars_source',
		:header => nil,
		:auto_generate_nginx_merge_code => false
	},
	{
		:name  => 'passenger_pass_header',
		:type  => :string_array,
		:field => 'upstream_config.pass_headers'
	},
	{
		:name  => 'passenger_ignore_client_abort',
		:type  => :flag,
		:field => 'upstream_config.ignore_client_abort'
	},
	{
		:name  => 'passenger_buffer_response',
		:type  => :flag,
		:field => 'upstream_config.buffering'
	},
	{
		:name     => 'passenger_buffer_size',
		:take     => 'NGX_CONF_TAKE1',
		:function => 'ngx_conf_set_size_slot',
		:field    => 'upstream_config.buffer_size'
	},
	{
		:name     => 'passenger_buffers',
		:take     => 'NGX_CONF_TAKE2',
		:function => 'ngx_conf_set_bufs_slot',
		:field    => 'upstream_config.bufs'
	},
	{
		:name     => 'passenger_busy_buffers_size',
		:take     => 'NGX_CONF_TAKE1',
		:function => 'ngx_conf_set_size_slot',
		:field    => 'upstream_config.busy_buffers_size_conf'
	},
	{
		:name     => 'passenger_intercept_errors',
		:type     => :flag,
		:field    => 'upstream_config.intercept_errors'
	},
	{
		:name  => 'passenger_spawn_method',
		:type  => :string
	},
	{
		:name  => 'passenger_load_shell_envvars',
		:type  => :flag
	},
	{
		:name  => 'union_station_key',
		:type  => :string
	},
	{
		:name  => 'passenger_max_request_queue_size',
		:type  => :integer
	},
	{
		:name  => 'passenger_request_queue_overflow_status_code',
		:type  => :integer
	},

	###### Enterprise features ######
	{
		:context  => [:main],
		:name     => 'passenger_fly_with',
		:type     => :string,
		:struct   => "NGX_HTTP_MAIN_CONF_OFFSET",
		:function => 'passenger_enterprise_only',
		:field    => nil
	},
	{
		:name     => 'passenger_max_instances',
		:type     => :integer,
		:function => 'passenger_enterprise_only',
		:field    => nil
	},
	{
		:name     => 'passenger_max_request_time',
		:type     => :integer,
		:function => 'passenger_enterprise_only',
		:field    => nil
	},
	{
		:name     => 'passenger_memory_limit',
		:type     => :integer,
		:function => 'passenger_enterprise_only',
		:field    => nil
	},
	{
		:name     => 'passenger_concurrency_model',
		:type     => :string,
		:function => 'passenger_enterprise_only',
		:field    => nil
	},
	{
		:name     => 'passenger_thread_count',
		:type     => :integer,
		:function => 'passenger_enterprise_only',
		:field    => nil
	},
	{
		:name     => 'passenger_rolling_restarts',
		:type     => :flag,
		:function => 'passenger_enterprise_only',
		:field    => nil
	},
	{
		:name     => 'passenger_resist_deployment_errors',
		:type     => :flag,
		:function => 'passenger_enterprise_only',
		:field    => nil
	},

	###### Aliases for backwards compatibility ######
	{
		:name      => 'rails_spawn_method',
		:alias_for => 'passenger_spawn_method'
	},
	{
		:name      => 'rails_env',
		:alias_for => 'passenger_app_env'
	},
	{
		:name      => 'rack_env',
		:alias_for => 'passenger_app_env'
	},
	{
		:name      => 'rails_app_spawner_idle_time',
		:alias_for => 'passenger_max_preloader_idle_time'
	},

	###### Obsolete options ######
	{
		:name     => 'rails_framework_spawner_idle_time',
		:take     => 'NGX_CONF_TAKE1',
		:function => 'rails_framework_spawner_idle_time',
		:field    => nil
	},
	{
		:name     => 'passenger_use_global_queue',
		:take     => 'NGX_CONF_FLAG',
		:function => 'passenger_use_global_queue',
		:field    => nil
	}
]
APACHE2_DIRECTORY_CONFIGURATION_OPTIONS =

This file defines all supported Apache per-directory configuration options. The build system automatically generates the corresponding Apache module boilerplate code from the definitions in this file.

Main configuration options are not defined in this file, but are defined in ext/apache2/Configuraion.cpp instead.

The following boilerplate code is generated:

* command_rec array members (ConfigurationCommands.cpp.erb)

Options:

* name - The configuration option name. Required.
* context - The context in which this configuration option is valid.
            Defaults to ["OR_OPTIONS", "ACCESS_CONF", "RSRC_CONF"]
* type - This configuration option's value type. Allowed types:
         :string, :integer, :flag
* min_value - If `type` is :integer, then this specifies the minimum
              allowed value. When nil (the default), there is no minimum.
* desc - A description for this configuration option. Required.
* header - The name of the corresponding CGI header. By default CGI header
           generation code is automatically generated, using the configuration
           option's name in uppercase as the CGI header name.
           Setting this to nil will disable auto-generation of CGI header
           generation code. You are then responsible for writing CGI header
           passing code yourself in Hooks.cpp.
[
	{
		:name => "PassengerRuby",
		:type => :string,
		:desc => "The Ruby interpreter to use.",
		:header_expression => "config->ruby ? config->ruby : serverConfig.defaultRuby"
	},
	{
		:name => "PassengerPython",
		:type => :string,
		:desc => "The Python interpreter to use."
	},
	{
		:name => "PassengerNodejs",
		:type => :string,
		:desc => "The Node.js command to use."
	},
	{
		:name => "PassengerMinInstances",
		:type => :integer,
		:context => ["OR_LIMIT", "ACCESS_CONF", "RSRC_CONF"],
		:min_value => 0,
		:desc => "The minimum number of application instances to keep when cleaning idle instances."
	},
	{
		:name => "PassengerUser",
		:type => :string,
		:context => ["ACCESS_CONF", "RSRC_CONF"],
		:desc => "The user that Ruby applications must run as."
	},
	{
		:name => "PassengerGroup",
		:type => :string,
		:context => ["ACCESS_CONF", "RSRC_CONF"],
		:desc => "The group that Ruby applications must run as."
	},
	{
		:name => "PassengerErrorOverride",
		:type => :flag,
		:context => ["OR_ALL"],
		:desc    => "Allow Apache to handle error response.",
		:header  => nil
	},
	{
		:name => "PassengerMaxRequests",
		:type => :integer,
		:context => ["OR_LIMIT", "ACCESS_CONF", "RSRC_CONF"],
		:min_value => 0,
		:desc => "The maximum number of requests that an application instance may process."
	},
	{
		:name => "PassengerStartTimeout",
		:type => :integer,
		:context => ["OR_LIMIT", "ACCESS_CONF", "RSRC_CONF"],
		:min_value => 1,
		:desc => "A timeout for application startup."
	},
	{
		:name => "PassengerHighPerformance",
		:type => :flag,
		:context => ["OR_ALL"],
		:desc    => "Enable or disable Passenger's high performance mode.",
		:header  => nil
	},
	{
		:name => "PassengerEnabled",
		:type => :flag,
		:context => ["OR_ALL"],
		:desc    => "Enable or disable Phusion Passenger.",
		:header  => nil
	},
	{
		:name => "PassengerMaxRequestQueueSize",
		:type => :integer,
		:min_value => 0,
		:context => ["OR_ALL"],
		:desc => "The maximum number of queued requests."
	},
	{
		:name => "PassengerLoadShellEnvvars",
		:type => :flag,
		:desc => "Whether to load environment variables from the shell before running the application."
	}
]