passenger 6.0.12 → 6.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG +37 -1
- data/bin/passenger-install-nginx-module +1 -1
- data/dev/copy_boost_headers +30 -15
- data/resources/mime.types +1 -0
- data/resources/templates/standalone/server.erb +1 -0
- data/src/agent/Core/ApplicationPool/Group/StateInspection.cpp +1 -0
- data/src/agent/Core/ApplicationPool/Options.h +5 -0
- data/src/agent/Core/Config.h +1 -1
- data/src/agent/Core/Controller/Config.h +5 -2
- data/src/agent/Core/Controller/InitRequest.cpp +2 -0
- data/src/agent/Core/OptionParser.h +4 -0
- data/src/agent/Core/SpawningKit/Config/AutoGeneratedCode.h +7 -0
- data/src/agent/Core/SpawningKit/Config.h +13 -0
- data/src/agent/Core/SpawningKit/Handshake/Prepare.h +4 -0
- data/src/agent/Core/SpawningKit/Spawner.h +1 -0
- data/src/agent/SpawnEnvSetupper/SpawnEnvSetupperMain.cpp +4 -0
- data/src/agent/Watchdog/Config.h +1 -1
- data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp +5 -0
- data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp +5 -0
- data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp +18 -0
- data/src/apache2_module/DirConfig/AutoGeneratedCreateFunction.cpp +3 -0
- data/src/apache2_module/DirConfig/AutoGeneratedHeaderSerialization.cpp +3 -0
- data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp +11 -0
- data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp +7 -0
- data/src/apache2_module/DirConfig/AutoGeneratedStruct.h +17 -0
- data/src/apache2_module/Hooks.cpp +1 -0
- data/src/cxx_supportlib/Constants.h +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/align/align.hpp +19 -0
- data/src/cxx_supportlib/vendor-modified/boost/align/alignment_of.hpp +54 -0
- data/src/cxx_supportlib/vendor-modified/boost/align/alignment_of_forward.hpp +20 -0
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/align_cxx11.hpp +21 -0
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc.hpp +52 -0
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/alignment_of.hpp +31 -0
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/alignment_of_cxx11.hpp +23 -0
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/element_type.hpp +91 -0
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/integral_constant.hpp +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/min_size.hpp +26 -0
- data/src/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c +8 -0
- data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c +6 -0
- data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c +12 -0
- data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c +5 -0
- data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c +18 -0
- data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c +13 -0
- data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c +3 -0
- data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h +4 -0
- data/src/nginx_module/ngx_http_passenger_module.c +1 -0
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/common.js +50 -29
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/config/cli-config.js +20 -20
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/config/npm-config.js +11 -11
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/config/syslog-config.js +3 -3
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/config.js +8 -2
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/container.js +2 -1
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/logger.js +174 -146
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/transports/console.js +4 -2
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/transports/file.js +15 -5
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/transports/http.js +14 -4
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/transports.js +26 -24
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston.js +5 -5
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/async/package.json +4 -13
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/colors/package.json +19 -33
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/cycle/package.json +11 -29
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/eyes/package.json +12 -40
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/isstream/package.json +3 -12
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/stack-trace/lib/stack-trace.js +49 -24
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/stack-trace/package.json +4 -16
- data/src/nodejs_supportlib/vendor-copy/winston/package.json +11 -55
- data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +6 -0
- data/src/ruby_supportlib/phusion_passenger/nginx/config_options.rb +6 -0
- data/src/ruby_supportlib/phusion_passenger/platform_info/linux.rb +2 -1
- data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +18 -18
- data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +7 -1
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +1 -0
- data/src/ruby_supportlib/phusion_passenger.rb +5 -5
- metadata +12 -7
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/transports/daily-rotate-file.js +0 -601
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/transports/webhook.js +0 -146
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/pkginfo/LICENSE +0 -19
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/pkginfo/lib/pkginfo.js +0 -136
- data/src/nodejs_supportlib/vendor-copy/winston/node_modules/pkginfo/package.json +0 -56
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 24a18af9e7b3ec92ce88aa64fd7d62242691972a
|
|
4
|
+
data.tar.gz: b3b72d0daa134635ea11f3cab5745f7a491dd102
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 42bd44f99c71b20f121f91197ae7e407993fef8a15935659907f98399d10deb5c97dac9acb8f9cb253cb42b1304a140769a67c08a22e7f9fe1cda5e9cb06e3f0
|
|
7
|
+
data.tar.gz: 923ab59ac46d2d6f96f265fa79628a8f68186c2e8055bbb451cbcf9f593f5f58cb1cfaf1c4aef8950a8356a8c2b95a0821f957211ca5d003b262e33b1c813453
|
data/CHANGELOG
CHANGED
|
@@ -1,4 +1,40 @@
|
|
|
1
|
-
Release 6.0.
|
|
1
|
+
Release 6.0.13 (Not yet released)
|
|
2
|
+
-------------
|
|
3
|
+
* Add WASM mime type, Closes GH-2398.
|
|
4
|
+
* Fix compilation on FreeBSD 13. Closes GH-2402.
|
|
5
|
+
* [Ruby] Fixes app process crash when ECONNRESET received.
|
|
6
|
+
* Fix automated fetching of pcre source for installer scripts.
|
|
7
|
+
* Bump preferred nginx 1.20.1 → 1.20.2.
|
|
8
|
+
* [Ruby] Add option to preload bundler. Closes GH-2409.
|
|
9
|
+
|
|
10
|
+
- Apache: PassengerPreloadBundler
|
|
11
|
+
- Nginx: passenger_preload_bundler
|
|
12
|
+
- Standalone: --preload_bundler
|
|
13
|
+
|
|
14
|
+
* [Node] Suppresses the winston circular dependency warning.
|
|
15
|
+
* [RPMs] EL8 RPMs are now built on Rocky linux, and should be compatible with Alma, Rocky, CentOS, and RHEL.
|
|
16
|
+
* Updated various library versions used in precompiled binaries (used for e.g. gem installs):
|
|
17
|
+
|
|
18
|
+
- ccache 4.4.2 → 4.6
|
|
19
|
+
- cmake 3.21.4 → 3.22.3
|
|
20
|
+
- curl 7.79.1 → 7.82.0
|
|
21
|
+
- git 2.33.1 → 2.35.1
|
|
22
|
+
- gnupg 2.3.3 → 2.3.4
|
|
23
|
+
- libgpg_error 1.42 → 1.44
|
|
24
|
+
- ntbtls 0.2.0 → 0.3.0
|
|
25
|
+
- openssl 1.1.1l → 1.1.1n
|
|
26
|
+
- rubygems 3.2.30 → 3.3.9
|
|
27
|
+
- zstd 1.5.0 → 1.5.2
|
|
28
|
+
- ruby
|
|
29
|
+
- dropped 2.4.10
|
|
30
|
+
- dropped 2.5.9
|
|
31
|
+
- 2.6.8 → 2.6.9
|
|
32
|
+
- 2.7.4 → 2.7.5
|
|
33
|
+
- 3.0.2 → 3.0.3
|
|
34
|
+
- added 3.1.1
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
Release 6.0.12
|
|
2
38
|
-------------
|
|
3
39
|
* [Debian] Fix compilation on 32 bit arm. Contributed by Antonio Terceiro.
|
|
4
40
|
* [Debian] Add Bullseye Debian packages.
|
|
@@ -268,7 +268,7 @@ private
|
|
|
268
268
|
new_screen
|
|
269
269
|
puts "<banner>PCRE (required by Nginx) not installed, downloading it...</banner>"
|
|
270
270
|
|
|
271
|
-
url = "https://
|
|
271
|
+
url = "https://sourceforge.net/projects/pcre/files/pcre/#{PREFERRED_PCRE_VERSION}/pcre-#{PREFERRED_PCRE_VERSION}.tar.gz/download"
|
|
272
272
|
dirname = "pcre-#{PREFERRED_PCRE_VERSION}"
|
|
273
273
|
tarball = "#{@working_dir}/pcre.tar.gz"
|
|
274
274
|
|
data/dev/copy_boost_headers
CHANGED
|
@@ -102,16 +102,31 @@ PROGRAM_SOURCE = %q{
|
|
|
102
102
|
#include <boost/date_time/posix_time/posix_time.hpp>
|
|
103
103
|
#include <boost/foreach.hpp>
|
|
104
104
|
#include <boost/unordered_map.hpp>
|
|
105
|
-
#include <boost/cregex.hpp>
|
|
106
105
|
#include <boost/regex.hpp>
|
|
107
106
|
#include <boost/pool/object_pool.hpp>
|
|
108
107
|
#include <boost/move/core.hpp>
|
|
109
108
|
#include <boost/move/utility.hpp>
|
|
110
109
|
#include <boost/atomic.hpp>
|
|
111
110
|
#include <boost/typeof/typeof.hpp>
|
|
112
|
-
#include <boost/asio.hpp>
|
|
113
|
-
#include <boost/pointer_cast.hpp>
|
|
114
111
|
#include <boost/circular_buffer.hpp>
|
|
112
|
+
#include <boost/config.hpp>
|
|
113
|
+
#include <boost/container/small_vector.hpp>
|
|
114
|
+
#include <boost/core/noncopyable.hpp>
|
|
115
|
+
#include <boost/cstdint.hpp>
|
|
116
|
+
#include <boost/current_function.hpp>
|
|
117
|
+
#include <boost/date_time/posix_time/posix_time_types.hpp>
|
|
118
|
+
#include <boost/move/move.hpp>
|
|
119
|
+
#include <boost/predef.h>
|
|
120
|
+
#include <boost/ref.hpp>
|
|
121
|
+
#include <boost/scoped_array.hpp>
|
|
122
|
+
#include <boost/scoped_ptr.hpp>
|
|
123
|
+
#include <boost/static_assert.hpp>
|
|
124
|
+
#include <boost/thread/mutex.hpp>
|
|
125
|
+
#include <boost/thread/tss.hpp>
|
|
126
|
+
// Included despite not used in Passenger
|
|
127
|
+
#include <boost/cregex.hpp>
|
|
128
|
+
#include <boost/pointer_cast.hpp>
|
|
129
|
+
#include <boost/asio.hpp>
|
|
115
130
|
}
|
|
116
131
|
|
|
117
132
|
require 'fileutils'
|
|
@@ -189,19 +204,19 @@ end
|
|
|
189
204
|
def copy_dependencies(cflags)
|
|
190
205
|
done = false
|
|
191
206
|
while !done
|
|
192
|
-
compiler_output = `c++ test.cpp -c -I. -I.. #{cflags} 2>&1`
|
|
207
|
+
compiler_output = `c++ test.cpp -c -I. -I.. #{cflags.join(" ")} 2>&1`
|
|
193
208
|
File.unlink('test.o') if File.exist?('test.o')
|
|
194
209
|
missing_headers = compiler_output.
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
210
|
+
split("\n").
|
|
211
|
+
grep(/(error: .*: No such file|fatal error: '.*' file not found)/).
|
|
212
|
+
map do |line|
|
|
213
|
+
if line =~ /error: (.*): No such file/
|
|
214
|
+
file = $1
|
|
215
|
+
elsif line =~ /fatal error: '(.*)' file not found/
|
|
216
|
+
file = $1
|
|
217
|
+
else
|
|
218
|
+
abort "Bug"
|
|
219
|
+
end
|
|
205
220
|
if file =~ /^boost\//
|
|
206
221
|
file
|
|
207
222
|
else
|
|
@@ -246,7 +261,7 @@ def start
|
|
|
246
261
|
"-std=c++0x",
|
|
247
262
|
"-std=gnu++0x",
|
|
248
263
|
""
|
|
249
|
-
].each do |flags|
|
|
264
|
+
].product(["-m32","-m64",""]).each do |flags|
|
|
250
265
|
copy_dependencies(flags)
|
|
251
266
|
end
|
|
252
267
|
ensure
|
data/resources/mime.types
CHANGED
|
@@ -52,6 +52,7 @@ passenger_enabled on;
|
|
|
52
52
|
<%= nginx_option(app, :vary_turbocache_by_cookie) %>
|
|
53
53
|
<%= nginx_option(app, :meteor_app_settings) %>
|
|
54
54
|
<%= nginx_option(app, :load_shell_envvars) %>
|
|
55
|
+
<%= nginx_option(app, :preload_bundler) %>
|
|
55
56
|
<%= nginx_option(app, :app_file_descriptor_ulimit) %>
|
|
56
57
|
<%= nginx_option(app, :friendly_error_pages) %>
|
|
57
58
|
<%= nginx_option(app, :abort_websockets_on_process_shutdown) %>
|
|
@@ -255,6 +255,7 @@ Group::inspectConfigInAdminPanelFormat(Json::Value &result) const {
|
|
|
255
255
|
result["user_switching"] = VAL(options.userSwitching); // TODO: default value depends on integration mode and euid
|
|
256
256
|
result["file_descriptor_ulimit"] = VAL(options.fileDescriptorUlimit, 0u);
|
|
257
257
|
result["load_shell_envvars"] = VAL(options.loadShellEnvvars); // TODO: default value depends on integration mode
|
|
258
|
+
result["preload_bundler"] = VAL(options.preloadBundler);
|
|
258
259
|
result["max_request_queue_size"] = VAL(options.maxRequestQueueSize,
|
|
259
260
|
(Json::UInt) DEFAULT_MAX_REQUEST_QUEUE_SIZE);
|
|
260
261
|
result["max_requests"] = VAL((Json::UInt) options.maxRequests, 0u);
|
|
@@ -312,6 +312,10 @@ public:
|
|
|
312
312
|
*/
|
|
313
313
|
bool loadShellEnvvars;
|
|
314
314
|
|
|
315
|
+
/** Whether to tell Ruby to load bundler during spawning.
|
|
316
|
+
*/
|
|
317
|
+
bool preloadBundler;
|
|
318
|
+
|
|
315
319
|
bool userSwitching;
|
|
316
320
|
|
|
317
321
|
/**
|
|
@@ -460,6 +464,7 @@ public:
|
|
|
460
464
|
forceMaxConcurrentRequestsPerProcess(-1),
|
|
461
465
|
debugger(false),
|
|
462
466
|
loadShellEnvvars(true),
|
|
467
|
+
preloadBundler(false),
|
|
463
468
|
userSwitching(true),
|
|
464
469
|
raiseInternalError(false),
|
|
465
470
|
|
data/src/agent/Core/Config.h
CHANGED
|
@@ -164,7 +164,7 @@ using namespace std;
|
|
|
164
164
|
* security_update_checker_interval unsigned integer - default(86400)
|
|
165
165
|
* security_update_checker_proxy_url string - -
|
|
166
166
|
* security_update_checker_url string - default("https://securitycheck.phusionpassenger.com/v1/check.json")
|
|
167
|
-
* server_software string - default("Phusion_Passenger/6.0.
|
|
167
|
+
* server_software string - default("Phusion_Passenger/6.0.13")
|
|
168
168
|
* show_version_in_header boolean - default(true)
|
|
169
169
|
* single_app_mode_app_root string - default,read_only
|
|
170
170
|
* single_app_mode_app_start_command string - read_only
|
|
@@ -115,7 +115,7 @@ parseControllerBenchmarkMode(const StaticString &mode) {
|
|
|
115
115
|
* multi_app boolean - default(true),read_only
|
|
116
116
|
* request_freelist_limit unsigned integer - default(1024)
|
|
117
117
|
* response_buffer_high_watermark unsigned integer - default(134217728)
|
|
118
|
-
* server_software string - default("Phusion_Passenger/6.0.
|
|
118
|
+
* server_software string - default("Phusion_Passenger/6.0.13")
|
|
119
119
|
* show_version_in_header boolean - default(true)
|
|
120
120
|
* start_reading_after_accept boolean - default(true)
|
|
121
121
|
* stat_throttle_rate unsigned integer - default(10)
|
|
@@ -165,6 +165,7 @@ private:
|
|
|
165
165
|
add("default_spawn_method", STRING_TYPE, OPTIONAL, DEFAULT_SPAWN_METHOD);
|
|
166
166
|
add("default_bind_address", STRING_TYPE, OPTIONAL, DEFAULT_BIND_ADDRESS);
|
|
167
167
|
add("default_load_shell_envvars", BOOL_TYPE, OPTIONAL, false);
|
|
168
|
+
add("default_preload_bundler", BOOL_TYPE, OPTIONAL, false);
|
|
168
169
|
add("default_meteor_app_settings", STRING_TYPE, OPTIONAL);
|
|
169
170
|
add("default_app_file_descriptor_ulimit", UINT_TYPE, OPTIONAL);
|
|
170
171
|
add("default_min_instances", UINT_TYPE, OPTIONAL, 1);
|
|
@@ -440,6 +441,7 @@ public:
|
|
|
440
441
|
bool showVersionInHeader: 1;
|
|
441
442
|
bool defaultAbortWebsocketsOnProcessShutdown;
|
|
442
443
|
bool defaultLoadShellEnvvars;
|
|
444
|
+
bool defaultPreloadBundler;
|
|
443
445
|
|
|
444
446
|
/*******************/
|
|
445
447
|
/*******************/
|
|
@@ -473,7 +475,8 @@ public:
|
|
|
473
475
|
defaultForceMaxConcurrentRequestsPerProcess(config["default_force_max_concurrent_requests_per_process"].asInt()),
|
|
474
476
|
showVersionInHeader(config["show_version_in_header"].asBool()),
|
|
475
477
|
defaultAbortWebsocketsOnProcessShutdown(config["default_abort_websockets_on_process_shutdown"].asBool()),
|
|
476
|
-
defaultLoadShellEnvvars(config["default_load_shell_envvars"].asBool())
|
|
478
|
+
defaultLoadShellEnvvars(config["default_load_shell_envvars"].asBool()),
|
|
479
|
+
defaultPreloadBundler(config["default_preload_bundler"].asBool())
|
|
477
480
|
|
|
478
481
|
/*******************/
|
|
479
482
|
{ }
|
|
@@ -202,6 +202,7 @@ Controller::fillPoolOptionsFromConfigCaches(Options &options,
|
|
|
202
202
|
options.spawnMethod = requestConfig->defaultSpawnMethod;
|
|
203
203
|
options.bindAddress = requestConfig->defaultBindAddress;
|
|
204
204
|
options.loadShellEnvvars = requestConfig->defaultLoadShellEnvvars;
|
|
205
|
+
options.preloadBundler = requestConfig->defaultPreloadBundler;
|
|
205
206
|
options.statThrottleRate = mainConfig.statThrottleRate;
|
|
206
207
|
options.maxRequests = requestConfig->defaultMaxRequests;
|
|
207
208
|
options.stickySessionsCookieAttributes = requestConfig->defaultStickySessionsCookieAttributes;
|
|
@@ -378,6 +379,7 @@ Controller::createNewPoolOptions(Client *client, Request *req,
|
|
|
378
379
|
fillPoolOption(req, options.restartDir, "!~PASSENGER_RESTART_DIR");
|
|
379
380
|
fillPoolOption(req, options.startupFile, "!~PASSENGER_STARTUP_FILE");
|
|
380
381
|
fillPoolOption(req, options.loadShellEnvvars, "!~PASSENGER_LOAD_SHELL_ENVVARS");
|
|
382
|
+
fillPoolOption(req, options.preloadBundler, "!~PASSENGER_PRELOAD_BUNDLER");
|
|
381
383
|
fillPoolOption(req, options.fileDescriptorUlimit, "!~PASSENGER_APP_FILE_DESCRIPTOR_ULIMIT");
|
|
382
384
|
fillPoolOption(req, options.raiseInternalError, "!~PASSENGER_RAISE_INTERNAL_ERROR");
|
|
383
385
|
fillPoolOption(req, options.lveMinUid, "!~PASSENGER_LVE_MIN_UID");
|
|
@@ -115,6 +115,7 @@ coreUsage() {
|
|
|
115
115
|
printf(" --spawn-method NAME Spawn method to use. Can either be 'smart' or\n");
|
|
116
116
|
printf(" 'direct'. Default: %s\n", DEFAULT_SPAWN_METHOD);
|
|
117
117
|
printf(" --load-shell-envvars Load shell startup files before loading application\n");
|
|
118
|
+
printf(" --preload-bundler Tell Ruby to load bundler gem before loading application\n");
|
|
118
119
|
printf(" --concurrency-model The concurrency model to use for the app, either\n");
|
|
119
120
|
printf(" 'process' or 'thread' (Enterprise only).\n");
|
|
120
121
|
printf(" Default: " DEFAULT_CONCURRENCY_MODEL "\n");
|
|
@@ -332,6 +333,9 @@ parseCoreOption(int argc, const char *argv[], int &i, Json::Value &updates) {
|
|
|
332
333
|
} else if (p.isFlag(argv[i], '\0', "--load-shell-envvars")) {
|
|
333
334
|
updates["default_load_shell_envvars"] = true;
|
|
334
335
|
i++;
|
|
336
|
+
} else if (p.isFlag(argv[i], '\0', "--preload-bundler")) {
|
|
337
|
+
updates["default_preload_bundler"] = true;
|
|
338
|
+
i++;
|
|
335
339
|
} else if (p.isFlag(argv[i], '\0', "--multi-app")) {
|
|
336
340
|
updates["multi_app"] = true;
|
|
337
341
|
i++;
|
|
@@ -258,6 +258,7 @@ Passenger::SpawningKit::Config::validate(vector<StaticString> &errors) const {
|
|
|
258
258
|
* startsUsingWrapper
|
|
259
259
|
* wrapperSuppliedByThirdParty
|
|
260
260
|
* findFreePort
|
|
261
|
+
* preloadBundler
|
|
261
262
|
* loadShellEnvvars
|
|
262
263
|
* debugWorkDir
|
|
263
264
|
* processTitle
|
|
@@ -287,6 +288,9 @@ Passenger::SpawningKit::Config::getConfidentialFieldsToPassToApp() const {
|
|
|
287
288
|
if (!config.genericApp && config.startsUsingWrapper) {
|
|
288
289
|
doc["wrapper_supplied_by_third_party"] = wrapperSuppliedByThirdParty;
|
|
289
290
|
}
|
|
291
|
+
if (config.appType == "ruby") {
|
|
292
|
+
doc["preload_bundler"] = preloadBundler;
|
|
293
|
+
}
|
|
290
294
|
doc["load_shell_envvars"] = loadShellEnvvars;
|
|
291
295
|
doc["start_command"] = startCommand.toString();
|
|
292
296
|
if (!config.genericApp && config.startsUsingWrapper) {
|
|
@@ -341,6 +345,9 @@ Passenger::SpawningKit::Config::getNonConfidentialFieldsToPassToApp() const {
|
|
|
341
345
|
if (!config.genericApp && config.startsUsingWrapper) {
|
|
342
346
|
doc["wrapper_supplied_by_third_party"] = wrapperSuppliedByThirdParty;
|
|
343
347
|
}
|
|
348
|
+
if (config.appType == "ruby") {
|
|
349
|
+
doc["preload_bundler"] = preloadBundler;
|
|
350
|
+
}
|
|
344
351
|
doc["load_shell_envvars"] = loadShellEnvvars;
|
|
345
352
|
doc["start_command"] = startCommand.toString();
|
|
346
353
|
if (!config.genericApp && config.startsUsingWrapper) {
|
|
@@ -156,6 +156,18 @@ public:
|
|
|
156
156
|
*/
|
|
157
157
|
bool findFreePort: 1;
|
|
158
158
|
|
|
159
|
+
/**
|
|
160
|
+
* Whether Passenger should tell Ruby to preload bundler,
|
|
161
|
+
* this is to help deal with multiple versions of gems
|
|
162
|
+
* being installed, which is due to updates of default gems.
|
|
163
|
+
*
|
|
164
|
+
* @hinted_parseable
|
|
165
|
+
* @pass_during_handshake
|
|
166
|
+
* @only_meaningful_if config.appType == "ruby"
|
|
167
|
+
* @non_confidential
|
|
168
|
+
*/
|
|
169
|
+
bool preloadBundler: 1;
|
|
170
|
+
|
|
159
171
|
/**
|
|
160
172
|
* Whether to load environment variables set in shell startup
|
|
161
173
|
* files (e.g. ~/.bashrc) during spawning.
|
|
@@ -371,6 +383,7 @@ public:
|
|
|
371
383
|
startsUsingWrapper(false),
|
|
372
384
|
wrapperSuppliedByThirdParty(false),
|
|
373
385
|
findFreePort(false),
|
|
386
|
+
preloadBundler(false),
|
|
374
387
|
loadShellEnvvars(false),
|
|
375
388
|
debugWorkDir(false),
|
|
376
389
|
appEnv(P_STATIC_STRING(DEFAULT_APP_ENV)),
|
|
@@ -249,6 +249,10 @@ private:
|
|
|
249
249
|
args["integration_mode"] = context->integrationMode;
|
|
250
250
|
args["gupid"] = session.result.gupid;
|
|
251
251
|
args["UNIX_PATH_MAX"] = (Json::UInt64) sizeof(addr.sun_path) - 1;
|
|
252
|
+
|
|
253
|
+
if (config->preloadBundler) {
|
|
254
|
+
args["preload_bundler"] = config->preloadBundler;
|
|
255
|
+
}
|
|
252
256
|
if (config->genericApp || config->findFreePort) {
|
|
253
257
|
args["expected_start_port"] = session.expectedStartPort;
|
|
254
258
|
}
|
|
@@ -114,6 +114,7 @@ protected:
|
|
|
114
114
|
config->logLevel = options.logLevel;
|
|
115
115
|
config->wrapperSuppliedByThirdParty = false;
|
|
116
116
|
config->findFreePort = false;
|
|
117
|
+
config->preloadBundler = options.preloadBundler;
|
|
117
118
|
config->loadShellEnvvars = options.loadShellEnvvars;
|
|
118
119
|
config->startupFile = options.getStartupFile(*context->wrapperRegistry);
|
|
119
120
|
config->appType = options.appType;
|
|
@@ -702,6 +702,10 @@ setDefaultEnvvars(const Json::Value &args) {
|
|
|
702
702
|
setenv("PORT", toString(args["expected_start_port"].asInt()).c_str(), 1);
|
|
703
703
|
}
|
|
704
704
|
|
|
705
|
+
if (args.isMember("preload_bundler") && args["preload_bundler"].asBool()) {
|
|
706
|
+
setenv("RUBYOPT", "-r bundler/setup", 1);
|
|
707
|
+
}
|
|
708
|
+
|
|
705
709
|
if (args["base_uri"].asString() != "/") {
|
|
706
710
|
setenv("RAILS_RELATIVE_URL_ROOT", args["base_uri"].asCString(), 1);
|
|
707
711
|
setenv("RACK_BASE_URI", args["base_uri"].asCString(), 1);
|
data/src/agent/Watchdog/Config.h
CHANGED
|
@@ -153,7 +153,7 @@ using namespace std;
|
|
|
153
153
|
* security_update_checker_interval unsigned integer - default(86400)
|
|
154
154
|
* security_update_checker_proxy_url string - -
|
|
155
155
|
* security_update_checker_url string - default("https://securitycheck.phusionpassenger.com/v1/check.json")
|
|
156
|
-
* server_software string - default("Phusion_Passenger/6.0.
|
|
156
|
+
* server_software string - default("Phusion_Passenger/6.0.13")
|
|
157
157
|
* setsid boolean - default(false)
|
|
158
158
|
* show_version_in_header boolean - default(true)
|
|
159
159
|
* single_app_mode_app_root string - default,read_only
|
|
@@ -337,6 +337,11 @@ extern "C" const command_rec passenger_commands[] = {
|
|
|
337
337
|
NULL,
|
|
338
338
|
RSRC_CONF,
|
|
339
339
|
"Prestart the given web applications during startup."),
|
|
340
|
+
AP_INIT_FLAG("PassengerPreloadBundler",
|
|
341
|
+
(FlagFunc) cmd_passenger_preload_bundler,
|
|
342
|
+
NULL,
|
|
343
|
+
RSRC_CONF | ACCESS_CONF,
|
|
344
|
+
"Whether to tell Ruby to load the bundler gem before running the application."),
|
|
340
345
|
AP_INIT_TAKE1("PassengerPython",
|
|
341
346
|
(Take1Func) cmd_passenger_python,
|
|
342
347
|
NULL,
|
|
@@ -234,6 +234,11 @@ ConfigManifestGenerator::autoGenerated_setAppConfigDefaults() {
|
|
|
234
234
|
"PassengerNodejs",
|
|
235
235
|
DEFAULT_NODEJS);
|
|
236
236
|
|
|
237
|
+
addOptionsContainerStaticDefaultBool(
|
|
238
|
+
defaultAppConfigContainer,
|
|
239
|
+
"PassengerPreloadBundler",
|
|
240
|
+
false);
|
|
241
|
+
|
|
237
242
|
addOptionsContainerStaticDefaultStr(
|
|
238
243
|
defaultAppConfigContainer,
|
|
239
244
|
"PassengerPython",
|
|
@@ -729,6 +729,24 @@ cmd_passenger_pre_start(cmd_parms *cmd, void *pcfg, const char *arg) {
|
|
|
729
729
|
return NULL;
|
|
730
730
|
}
|
|
731
731
|
|
|
732
|
+
static const char *
|
|
733
|
+
cmd_passenger_preload_bundler(cmd_parms *cmd, void *pcfg, const char *arg) {
|
|
734
|
+
const char *err = ap_check_cmd_context(cmd, NOT_IN_FILES);
|
|
735
|
+
if (err != NULL) {
|
|
736
|
+
return err;
|
|
737
|
+
}
|
|
738
|
+
|
|
739
|
+
DirConfig *config = (DirConfig *) pcfg;
|
|
740
|
+
config->mPreloadBundlerSourceFile = cmd->directive->filename;
|
|
741
|
+
config->mPreloadBundlerSourceLine = cmd->directive->line_num;
|
|
742
|
+
config->mPreloadBundlerExplicitlySet = true;
|
|
743
|
+
config->mPreloadBundler =
|
|
744
|
+
(arg != NULL) ?
|
|
745
|
+
ENABLED :
|
|
746
|
+
DISABLED;
|
|
747
|
+
return NULL;
|
|
748
|
+
}
|
|
749
|
+
|
|
732
750
|
static const char *
|
|
733
751
|
cmd_passenger_python(cmd_parms *cmd, void *pcfg, const char *arg) {
|
|
734
752
|
const char *err = ap_check_cmd_context(cmd, NOT_IN_FILES);
|
|
@@ -101,6 +101,7 @@ createDirConfig_autoGenerated(DirConfig *config) {
|
|
|
101
101
|
/*
|
|
102
102
|
* config->mNodejs: default initialized
|
|
103
103
|
*/
|
|
104
|
+
config->mPreloadBundler = Apache2Module::UNSET;
|
|
104
105
|
/*
|
|
105
106
|
* config->mPython: default initialized
|
|
106
107
|
*/
|
|
@@ -154,6 +155,7 @@ createDirConfig_autoGenerated(DirConfig *config) {
|
|
|
154
155
|
config->mMinInstancesSourceLine = 0;
|
|
155
156
|
config->mMonitorLogFileSourceLine = 0;
|
|
156
157
|
config->mNodejsSourceLine = 0;
|
|
158
|
+
config->mPreloadBundlerSourceLine = 0;
|
|
157
159
|
config->mPythonSourceLine = 0;
|
|
158
160
|
config->mRestartDirSourceLine = 0;
|
|
159
161
|
config->mRubySourceLine = 0;
|
|
@@ -191,6 +193,7 @@ createDirConfig_autoGenerated(DirConfig *config) {
|
|
|
191
193
|
config->mMinInstancesExplicitlySet = false;
|
|
192
194
|
config->mMonitorLogFileExplicitlySet = false;
|
|
193
195
|
config->mNodejsExplicitlySet = false;
|
|
196
|
+
config->mPreloadBundlerExplicitlySet = false;
|
|
194
197
|
config->mPythonExplicitlySet = false;
|
|
195
198
|
config->mRestartDirExplicitlySet = false;
|
|
196
199
|
config->mRubyExplicitlySet = false;
|
|
@@ -97,6 +97,9 @@ constructRequestHeaders_autoGenerated(request_rec *r, DirConfig *config, std::st
|
|
|
97
97
|
addHeader(result, StaticString("!~PASSENGER_NODEJS",
|
|
98
98
|
sizeof("!~PASSENGER_NODEJS") - 1),
|
|
99
99
|
config->mNodejs);
|
|
100
|
+
addHeader(result, StaticString("!~PASSENGER_PRELOAD_BUNDLER",
|
|
101
|
+
sizeof("!~PASSENGER_PRELOAD_BUNDLER") - 1),
|
|
102
|
+
config->mPreloadBundler);
|
|
100
103
|
addHeader(result, StaticString("!~PASSENGER_PYTHON",
|
|
101
104
|
sizeof("!~PASSENGER_PYTHON") - 1),
|
|
102
105
|
config->mPython);
|
|
@@ -361,6 +361,17 @@ ConfigManifestGenerator::autoGenerated_generateConfigManifestForDirConfig(server
|
|
|
361
361
|
pdconf->mNodejs.data(),
|
|
362
362
|
pdconf->mNodejs.data() + pdconf->mNodejs.size());
|
|
363
363
|
}
|
|
364
|
+
if (pdconf->mPreloadBundlerExplicitlySet) {
|
|
365
|
+
findOrCreateAppAndLocOptionsContainers(serverRec, csconf, cdconf,
|
|
366
|
+
pdconf, context, &appOptionsContainer, &locOptionsContainer);
|
|
367
|
+
Json::Value &optionContainer = findOrCreateOptionContainer(*appOptionsContainer,
|
|
368
|
+
"PassengerPreloadBundler",
|
|
369
|
+
sizeof("PassengerPreloadBundler") - 1);
|
|
370
|
+
Json::Value &hierarchyMember = addOptionContainerHierarchyMember(optionContainer,
|
|
371
|
+
pdconf->mPreloadBundlerSourceFile,
|
|
372
|
+
pdconf->mPreloadBundlerSourceLine);
|
|
373
|
+
hierarchyMember["value"] = pdconf->mPreloadBundler == Apache2Module::ENABLED;
|
|
374
|
+
}
|
|
364
375
|
if (pdconf->mPythonExplicitlySet) {
|
|
365
376
|
findOrCreateAppAndLocOptionsContainers(serverRec, csconf, cdconf,
|
|
366
377
|
pdconf, context, &appOptionsContainer, &locOptionsContainer);
|
|
@@ -152,6 +152,10 @@ mergeDirConfig_autoGenerated(DirConfig *config, DirConfig *base, DirConfig *add)
|
|
|
152
152
|
(!add->mNodejs.empty())
|
|
153
153
|
? add->mNodejs
|
|
154
154
|
: base->mNodejs;
|
|
155
|
+
config->mPreloadBundler =
|
|
156
|
+
(add->mPreloadBundler != Apache2Module::UNSET)
|
|
157
|
+
? add->mPreloadBundler
|
|
158
|
+
: base->mPreloadBundler;
|
|
155
159
|
config->mPython =
|
|
156
160
|
(!add->mPython.empty())
|
|
157
161
|
? add->mPython
|
|
@@ -219,6 +223,7 @@ mergeDirConfig_autoGenerated(DirConfig *config, DirConfig *base, DirConfig *add)
|
|
|
219
223
|
config->mMinInstancesSourceFile = add->mMinInstancesSourceFile;
|
|
220
224
|
config->mMonitorLogFileSourceFile = add->mMonitorLogFileSourceFile;
|
|
221
225
|
config->mNodejsSourceFile = add->mNodejsSourceFile;
|
|
226
|
+
config->mPreloadBundlerSourceFile = add->mPreloadBundlerSourceFile;
|
|
222
227
|
config->mPythonSourceFile = add->mPythonSourceFile;
|
|
223
228
|
config->mRestartDirSourceFile = add->mRestartDirSourceFile;
|
|
224
229
|
config->mRubySourceFile = add->mRubySourceFile;
|
|
@@ -256,6 +261,7 @@ mergeDirConfig_autoGenerated(DirConfig *config, DirConfig *base, DirConfig *add)
|
|
|
256
261
|
config->mMinInstancesSourceLine = add->mMinInstancesSourceLine;
|
|
257
262
|
config->mMonitorLogFileSourceLine = add->mMonitorLogFileSourceLine;
|
|
258
263
|
config->mNodejsSourceLine = add->mNodejsSourceLine;
|
|
264
|
+
config->mPreloadBundlerSourceLine = add->mPreloadBundlerSourceLine;
|
|
259
265
|
config->mPythonSourceLine = add->mPythonSourceLine;
|
|
260
266
|
config->mRestartDirSourceLine = add->mRestartDirSourceLine;
|
|
261
267
|
config->mRubySourceLine = add->mRubySourceLine;
|
|
@@ -293,6 +299,7 @@ mergeDirConfig_autoGenerated(DirConfig *config, DirConfig *base, DirConfig *add)
|
|
|
293
299
|
config->mMinInstancesExplicitlySet = add->mMinInstancesExplicitlySet;
|
|
294
300
|
config->mMonitorLogFileExplicitlySet = add->mMonitorLogFileExplicitlySet;
|
|
295
301
|
config->mNodejsExplicitlySet = add->mNodejsExplicitlySet;
|
|
302
|
+
config->mPreloadBundlerExplicitlySet = add->mPreloadBundlerExplicitlySet;
|
|
296
303
|
config->mPythonExplicitlySet = add->mPythonExplicitlySet;
|
|
297
304
|
config->mRestartDirExplicitlySet = add->mRestartDirExplicitlySet;
|
|
298
305
|
config->mRubyExplicitlySet = add->mRubyExplicitlySet;
|
|
@@ -96,6 +96,11 @@ struct AutoGeneratedDirConfig {
|
|
|
96
96
|
*/
|
|
97
97
|
Threeway mLoadShellEnvvars;
|
|
98
98
|
|
|
99
|
+
/*
|
|
100
|
+
* Whether to tell Ruby to load the bundler gem before running the application.
|
|
101
|
+
*/
|
|
102
|
+
Threeway mPreloadBundler;
|
|
103
|
+
|
|
99
104
|
/*
|
|
100
105
|
* Whether to enable sticky sessions.
|
|
101
106
|
*/
|
|
@@ -245,6 +250,7 @@ struct AutoGeneratedDirConfig {
|
|
|
245
250
|
StaticString mFriendlyErrorPagesSourceFile;
|
|
246
251
|
StaticString mHighPerformanceSourceFile;
|
|
247
252
|
StaticString mLoadShellEnvvarsSourceFile;
|
|
253
|
+
StaticString mPreloadBundlerSourceFile;
|
|
248
254
|
StaticString mStickySessionsSourceFile;
|
|
249
255
|
StaticString mForceMaxConcurrentRequestsPerProcessSourceFile;
|
|
250
256
|
StaticString mLveMinUidSourceFile;
|
|
@@ -282,6 +288,7 @@ struct AutoGeneratedDirConfig {
|
|
|
282
288
|
unsigned int mFriendlyErrorPagesSourceLine;
|
|
283
289
|
unsigned int mHighPerformanceSourceLine;
|
|
284
290
|
unsigned int mLoadShellEnvvarsSourceLine;
|
|
291
|
+
unsigned int mPreloadBundlerSourceLine;
|
|
285
292
|
unsigned int mStickySessionsSourceLine;
|
|
286
293
|
unsigned int mForceMaxConcurrentRequestsPerProcessSourceLine;
|
|
287
294
|
unsigned int mLveMinUidSourceLine;
|
|
@@ -319,6 +326,7 @@ struct AutoGeneratedDirConfig {
|
|
|
319
326
|
bool mFriendlyErrorPagesExplicitlySet: 1;
|
|
320
327
|
bool mHighPerformanceExplicitlySet: 1;
|
|
321
328
|
bool mLoadShellEnvvarsExplicitlySet: 1;
|
|
329
|
+
bool mPreloadBundlerExplicitlySet: 1;
|
|
322
330
|
bool mStickySessionsExplicitlySet: 1;
|
|
323
331
|
bool mForceMaxConcurrentRequestsPerProcessExplicitlySet: 1;
|
|
324
332
|
bool mLveMinUidExplicitlySet: 1;
|
|
@@ -417,6 +425,15 @@ struct AutoGeneratedDirConfig {
|
|
|
417
425
|
}
|
|
418
426
|
}
|
|
419
427
|
|
|
428
|
+
bool
|
|
429
|
+
getPreloadBundler() const {
|
|
430
|
+
if (mPreloadBundler == Apache2Module::UNSET) {
|
|
431
|
+
return false;
|
|
432
|
+
} else {
|
|
433
|
+
return mPreloadBundler == Apache2Module::ENABLED;
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
|
|
420
437
|
bool
|
|
421
438
|
getStickySessions() const {
|
|
422
439
|
if (mStickySessions == Apache2Module::UNSET) {
|
|
@@ -1333,6 +1333,7 @@ public:
|
|
|
1333
1333
|
config["server_software"] = webServerDesc;
|
|
1334
1334
|
config["multi_app"] = true;
|
|
1335
1335
|
config["default_load_shell_envvars"] = true;
|
|
1336
|
+
config["default_preload_bundler"] = false;
|
|
1336
1337
|
config["config_manifest"] = serverConfig.manifest;
|
|
1337
1338
|
config["file_descriptor_log_target"] = nonEmptyString(serverConfig.fileDescriptorLogFile);
|
|
1338
1339
|
config["controller_socket_backlog"] = serverConfig.socketBacklog;
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
#define PASSENGER_API_VERSION_MAJOR 0
|
|
84
84
|
#define PASSENGER_API_VERSION_MINOR 3
|
|
85
85
|
#define PASSENGER_DEFAULT_USER "nobody"
|
|
86
|
-
#define PASSENGER_VERSION "6.0.
|
|
86
|
+
#define PASSENGER_VERSION "6.0.13"
|
|
87
87
|
#define POOL_HELPER_THREAD_STACK_SIZE 262144
|
|
88
88
|
#define PROCESS_SHUTDOWN_TIMEOUT 60
|
|
89
89
|
#define PROCESS_SHUTDOWN_TIMEOUT_DISPLAY "1 minute"
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Copyright 2014-2015 Glen Joseph Fernandes
|
|
3
|
+
(glenjofe@gmail.com)
|
|
4
|
+
|
|
5
|
+
Distributed under the Boost Software License, Version 1.0.
|
|
6
|
+
(http://www.boost.org/LICENSE_1_0.txt)
|
|
7
|
+
*/
|
|
8
|
+
#ifndef BOOST_ALIGN_ALIGN_HPP
|
|
9
|
+
#define BOOST_ALIGN_ALIGN_HPP
|
|
10
|
+
|
|
11
|
+
#include <boost/config.hpp>
|
|
12
|
+
|
|
13
|
+
#if !defined(BOOST_NO_CXX11_STD_ALIGN) && !defined(BOOST_LIBSTDCXX_VERSION)
|
|
14
|
+
#include <boost/align/detail/align_cxx11.hpp>
|
|
15
|
+
#else
|
|
16
|
+
#include <boost/align/detail/align.hpp>
|
|
17
|
+
#endif
|
|
18
|
+
|
|
19
|
+
#endif
|