passenger 4.0.27 → 4.0.28
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of passenger might be problematic. Click here for more details.
- data.tar.gz.asc +7 -7
- data/.gitignore +1 -0
- data/NEWS +22 -0
- data/build/preprocessor.rb +10 -0
- data/build/rpm.rb +74 -65
- data/debian.template/rules.template +8 -0
- data/dev/copy_boost_headers.rb +11 -2
- data/doc/Users guide Apache.idmap.txt +161 -145
- data/doc/Users guide Apache.txt +12 -1
- data/doc/Users guide Nginx.idmap.txt +142 -126
- data/doc/Users guide Nginx.txt +14 -1
- data/doc/Users guide Standalone.txt +1 -0
- data/doc/users_guide_snippets/environment_variables.txt +1 -1
- data/doc/users_guide_snippets/installation.txt +2 -0
- data/doc/users_guide_snippets/tips.txt +118 -0
- data/ext/apache2/Configuration.cpp +0 -6
- data/ext/apache2/Configuration.hpp +0 -5
- data/ext/apache2/ConfigurationCommands.cpp +7 -0
- data/ext/apache2/ConfigurationFields.hpp +2 -0
- data/ext/apache2/ConfigurationSetters.cpp +24 -0
- data/ext/apache2/CreateDirConfig.cpp +1 -0
- data/ext/apache2/Hooks.cpp +0 -1
- data/ext/apache2/MergeDirConfig.cpp +7 -0
- data/ext/apache2/SetHeaders.cpp +5 -1
- data/ext/boost/cregex.hpp +39 -0
- data/ext/boost/libs/regex/src/c_regex_traits.cpp +193 -0
- data/ext/boost/libs/regex/src/cpp_regex_traits.cpp +117 -0
- data/ext/boost/libs/regex/src/cregex.cpp +660 -0
- data/ext/boost/libs/regex/src/instances.cpp +32 -0
- data/ext/boost/libs/regex/src/internals.hpp +35 -0
- data/ext/boost/libs/regex/src/posix_api.cpp +296 -0
- data/ext/boost/libs/regex/src/regex.cpp +227 -0
- data/ext/boost/libs/regex/src/regex_debug.cpp +59 -0
- data/ext/boost/libs/regex/src/regex_raw_buffer.cpp +72 -0
- data/ext/boost/libs/regex/src/regex_traits_defaults.cpp +692 -0
- data/ext/boost/libs/regex/src/static_mutex.cpp +179 -0
- data/ext/boost/libs/regex/src/wc_regex_traits.cpp +301 -0
- data/ext/boost/libs/regex/src/wide_posix_api.cpp +315 -0
- data/ext/boost/libs/regex/src/winstances.cpp +35 -0
- data/ext/boost/regex.h +100 -0
- data/ext/boost/regex.hpp +37 -0
- data/ext/boost/regex/concepts.hpp +1128 -0
- data/ext/boost/regex/config.hpp +435 -0
- data/ext/boost/regex/config/borland.hpp +72 -0
- data/ext/boost/regex/config/cwchar.hpp +207 -0
- data/ext/boost/regex/mfc.hpp +190 -0
- data/ext/boost/regex/pattern_except.hpp +100 -0
- data/ext/boost/regex/pending/object_cache.hpp +165 -0
- data/ext/boost/regex/pending/static_mutex.hpp +179 -0
- data/ext/boost/regex/pending/unicode_iterator.hpp +776 -0
- data/ext/boost/regex/regex_traits.hpp +35 -0
- data/ext/boost/regex/user.hpp +93 -0
- data/ext/boost/regex/v4/basic_regex.hpp +782 -0
- data/ext/boost/regex/v4/basic_regex_creator.hpp +1571 -0
- data/ext/boost/regex/v4/basic_regex_parser.hpp +2874 -0
- data/ext/boost/regex/v4/c_regex_traits.hpp +211 -0
- data/ext/boost/regex/v4/char_regex_traits.hpp +81 -0
- data/ext/boost/regex/v4/cpp_regex_traits.hpp +1099 -0
- data/ext/boost/regex/v4/cregex.hpp +330 -0
- data/ext/boost/regex/v4/error_type.hpp +59 -0
- data/ext/boost/regex/v4/fileiter.hpp +455 -0
- data/ext/boost/regex/v4/instances.hpp +222 -0
- data/ext/boost/regex/v4/iterator_category.hpp +91 -0
- data/ext/boost/regex/v4/iterator_traits.hpp +135 -0
- data/ext/boost/regex/v4/match_flags.hpp +138 -0
- data/ext/boost/regex/v4/match_results.hpp +702 -0
- data/ext/boost/regex/v4/mem_block_cache.hpp +99 -0
- data/ext/boost/regex/v4/perl_matcher.hpp +587 -0
- data/ext/boost/regex/v4/perl_matcher_common.hpp +996 -0
- data/ext/boost/regex/v4/perl_matcher_non_recursive.hpp +1642 -0
- data/ext/boost/regex/v4/perl_matcher_recursive.hpp +991 -0
- data/ext/boost/regex/v4/primary_transform.hpp +146 -0
- data/ext/boost/regex/v4/protected_call.hpp +81 -0
- data/ext/boost/regex/v4/regbase.hpp +180 -0
- data/ext/boost/regex/v4/regex.hpp +202 -0
- data/ext/boost/regex/v4/regex_format.hpp +1156 -0
- data/ext/boost/regex/v4/regex_fwd.hpp +73 -0
- data/ext/boost/regex/v4/regex_grep.hpp +155 -0
- data/ext/boost/regex/v4/regex_iterator.hpp +201 -0
- data/ext/boost/regex/v4/regex_match.hpp +382 -0
- data/ext/boost/regex/v4/regex_merge.hpp +93 -0
- data/ext/boost/regex/v4/regex_raw_buffer.hpp +210 -0
- data/ext/boost/regex/v4/regex_replace.hpp +99 -0
- data/ext/boost/regex/v4/regex_search.hpp +217 -0
- data/ext/boost/regex/v4/regex_split.hpp +172 -0
- data/ext/boost/regex/v4/regex_token_iterator.hpp +342 -0
- data/ext/boost/regex/v4/regex_traits.hpp +189 -0
- data/ext/boost/regex/v4/regex_traits_defaults.hpp +371 -0
- data/ext/boost/regex/v4/regex_workaround.hpp +232 -0
- data/ext/boost/regex/v4/states.hpp +301 -0
- data/ext/boost/regex/v4/sub_match.hpp +512 -0
- data/ext/boost/regex/v4/syntax_type.hpp +105 -0
- data/ext/boost/regex/v4/u32regex_iterator.hpp +193 -0
- data/ext/boost/regex/v4/u32regex_token_iterator.hpp +377 -0
- data/ext/boost/regex/v4/w32_regex_traits.hpp +741 -0
- data/ext/boost/regex_fwd.hpp +33 -0
- data/ext/common/AgentsStarter.h +0 -11
- data/ext/common/ApplicationPool2/Common.h +1 -7
- data/ext/common/ApplicationPool2/DirectSpawner.h +3 -3
- data/ext/common/ApplicationPool2/Group.h +166 -69
- data/ext/common/ApplicationPool2/Implementation.cpp +55 -10
- data/ext/common/ApplicationPool2/Options.h +45 -10
- data/ext/common/ApplicationPool2/PipeWatcher.h +1 -2
- data/ext/common/ApplicationPool2/Pool.h +29 -7
- data/ext/common/ApplicationPool2/Process.h +22 -3
- data/ext/common/ApplicationPool2/Session.h +1 -0
- data/ext/common/ApplicationPool2/SmartSpawner.h +5 -10
- data/ext/common/ApplicationPool2/Spawner.h +10 -15
- data/ext/common/ApplicationPool2/SuperGroup.h +10 -9
- data/ext/common/Constants.h +1 -3
- data/ext/common/Hooks.h +193 -0
- data/ext/common/Logging.cpp +67 -2
- data/ext/common/Logging.h +23 -1
- data/ext/common/Utils.cpp +0 -21
- data/ext/common/Utils.h +0 -42
- data/ext/common/Utils/CachedFileStat.hpp +1 -1
- data/ext/common/Utils/StrIntUtils.h +61 -14
- data/ext/common/Utils/StringMap.h +4 -0
- data/ext/common/agents/HelperAgent/AgentOptions.h +4 -4
- data/ext/common/agents/HelperAgent/Main.cpp +2 -3
- data/ext/common/agents/HelperAgent/RequestHandler.h +65 -2
- data/ext/common/agents/LoggingAgent/FilterSupport.h +3 -1
- data/ext/common/agents/Watchdog/Main.cpp +8 -72
- data/ext/nginx/CacheLocationConfig.c +29 -1
- data/ext/nginx/Configuration.c +0 -12
- data/ext/nginx/Configuration.h +0 -1
- data/ext/nginx/ConfigurationCommands.c +10 -0
- data/ext/nginx/ConfigurationFields.h +2 -0
- data/ext/nginx/CreateLocationConfig.c +4 -0
- data/ext/nginx/MergeLocationConfig.c +6 -0
- data/ext/oxt/system_calls.cpp +7 -1
- data/ext/oxt/system_calls.hpp +7 -7
- data/helper-scripts/node-loader.js +6 -2
- data/helper-scripts/rack-loader.rb +5 -2
- data/helper-scripts/rack-preloader.rb +5 -2
- data/lib/phusion_passenger.rb +1 -1
- data/lib/phusion_passenger/apache2/config_options.rb +8 -0
- data/lib/phusion_passenger/constants.rb +0 -1
- data/lib/phusion_passenger/nginx/config_options.rb +9 -2
- data/lib/phusion_passenger/platform_info/apache.rb +2 -1
- data/lib/phusion_passenger/platform_info/compiler.rb +15 -1
- data/lib/phusion_passenger/platform_info/cxx_portability.rb +2 -0
- data/node_lib/phusion_passenger/httplib_emulation.js +85 -17
- data/node_lib/phusion_passenger/request_handler.js +10 -2
- data/rpm/Vagrantfile +32 -0
- data/rpm/get_distro_id.py +4 -0
- data/test/cxx/ApplicationPool2/DirectSpawnerTest.cpp +2 -2
- data/test/cxx/ApplicationPool2/PoolTest.cpp +60 -9
- data/test/cxx/ApplicationPool2/SmartSpawnerTest.cpp +2 -6
- data/test/cxx/CachedFileStatTest.cpp +5 -5
- data/test/cxx/RequestHandlerTest.cpp +3 -6
- data/test/cxx/UtilsTest.cpp +30 -0
- data/test/node/httplib_emulation_spec.js +491 -0
- data/test/node/spec_helper.js +25 -0
- metadata +78 -2
- metadata.gz.asc +7 -7
data.tar.gz.asc
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
Version: GnuPG/MacGPG2 v2.0.17 (Darwin)
|
3
3
|
Comment: GPGTools - http://gpgtools.org
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
=
|
5
|
+
iQEcBAABAgAGBQJSqk+mAAoJECrHRaUKISqMCXMH/0yR6UfIRO+gegZ6wOXbdWK5
|
6
|
+
s4tZI2rTzfPsGCbSJOCqjiQCBPnDxThstj9WYSrQOe1hzeH8XawSg6guscHLt47/
|
7
|
+
1FIgUo0Jkls+UTyi3+pDIfpX8LVN+y7TkP4AjSUIhQn2YqcpgmuxeUbfh1sScOQ0
|
8
|
+
hDuPuf6QCstmnMyNEXGQgOTzoU7xhYi3kwsl/Xqnw8+WvEKfauHGA4Z+bGg2FX/x
|
9
|
+
0ULNgVMsxVb657JHK90VVXltIry5OCt6z+NEm+pX8BdHJepVeNgnaiYt09JECTyS
|
10
|
+
1ZH8jffTTaog1teX0Izr7sxWyySxaah4ESIsZ8qf76qJthpnmhjOk+XZDmdOHbI=
|
11
|
+
=KvaW
|
12
12
|
-----END PGP SIGNATURE-----
|
data/.gitignore
CHANGED
data/NEWS
CHANGED
@@ -1,3 +1,25 @@
|
|
1
|
+
Release 4.0.28
|
2
|
+
--------------
|
3
|
+
|
4
|
+
* Introduced a workaround for a GCC 4.6 bug. This bug could cause Phusion
|
5
|
+
Passsenger to crash during startup. Affected operating systems include
|
6
|
+
Ubuntu 12.04 and Amazon Linux 2013.09.01, though not every machine with
|
7
|
+
this OS installed exhibits the problem. See issue #902.
|
8
|
+
* Improved Node.js support: the Sails framework is now supported.
|
9
|
+
* Improved Node.js support: the streams2 API is now supported.
|
10
|
+
* Introduced support for hooks, allowing users to easily extend Phusion
|
11
|
+
Passenger's behavior.
|
12
|
+
* Fixed a bug in the `passenger start -R` option. It was broken because of a
|
13
|
+
change introduced in 4.0.25.
|
14
|
+
* Fixed a bug in PassengerMaxInstancesPerApp. Fixes issue #1016.
|
15
|
+
* Fixed compilation problems on Solaris.
|
16
|
+
* Fixed an encoding problem in the Apache autodetection code. Fixes
|
17
|
+
issue #1026.
|
18
|
+
* The Debian packages no longer depend on libruby.
|
19
|
+
* Application stdout and stderr are now printed without normal
|
20
|
+
Phusion Passenger debugging information, making them easier to read.
|
21
|
+
|
22
|
+
|
1
23
|
Release 4.0.27
|
2
24
|
--------------
|
3
25
|
|
data/build/preprocessor.rb
CHANGED
@@ -188,6 +188,12 @@ private
|
|
188
188
|
"squeeze" => "20110206",
|
189
189
|
"wheezy" => "20130504"
|
190
190
|
}
|
191
|
+
REDHAT_ENTERPRISE_DISTRIBUTIONS = {
|
192
|
+
"el6" => "el6.0"
|
193
|
+
}
|
194
|
+
AMAZON_DISTRIBUTIONS = {
|
195
|
+
"amazon" => "amazon"
|
196
|
+
}
|
191
197
|
|
192
198
|
# Provides the DSL that's accessible within.
|
193
199
|
class Evaluator
|
@@ -196,6 +202,10 @@ private
|
|
196
202
|
return UBUNTU_DISTRIBUTIONS
|
197
203
|
elsif DEBIAN_DISTRIBUTIONS.has_key?(name)
|
198
204
|
return DEBIAN_DISTRIBUTIONS
|
205
|
+
elsif REDHAT_ENTERPRISE_DISTRIBUTIONS.has_key?(name)
|
206
|
+
return REDHAT_ENTERPRISE_DISTRIBUTIONS
|
207
|
+
elsif AMAZON_DISTRIBUTIONS.has_key?(name)
|
208
|
+
return AMAZON_DISTRIBUTIONS
|
199
209
|
end
|
200
210
|
end
|
201
211
|
|
data/build/rpm.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# Phusion Passenger - https://www.phusionpassenger.com/
|
2
|
-
# Copyright (C) 2010 Phusion
|
2
|
+
# Copyright (C) 2010-2013 Phusion
|
3
3
|
#
|
4
4
|
# This program is free software; you can redistribute it and/or modify
|
5
5
|
# it under the terms of the GNU General Public License as published by
|
@@ -14,80 +14,89 @@
|
|
14
14
|
# with this program; if not, write to the Free Software Foundation, Inc.,
|
15
15
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
16
16
|
|
17
|
-
|
18
|
-
|
19
|
-
|
17
|
+
RPM_NAME = "passenger"
|
18
|
+
RPMBUILD_ROOT = File.expand_path("~/rpmbuild")
|
19
|
+
MOCK_OFFLINE = boolean_option('MOCK_OFFLINE', false)
|
20
|
+
ALL_RPM_DISTROS = {
|
21
|
+
"el6" => { :mock_chroot_name => "epel-6", :distro_name => "Enterprise Linux 6" },
|
22
|
+
"amazon" => { :mock_chroot_name => "epel-6", :distro_name => "Amazon Linux" }
|
23
|
+
}
|
20
24
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
end
|
25
|
+
desc "Build gem for use in RPM building"
|
26
|
+
task 'rpm:gem' do
|
27
|
+
rpm_source_dir = "#{RPMBUILD_ROOT}/SOURCES"
|
28
|
+
sh "gem build #{PACKAGE_NAME}.gemspec"
|
29
|
+
sh "cp #{PACKAGE_NAME}-#{PACKAGE_VERSION}.gem #{rpm_source_dir}/"
|
30
|
+
end
|
28
31
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
32
|
+
desc "Build RPM for local machine"
|
33
|
+
task 'rpm:local' => 'rpm:gem' do
|
34
|
+
distro_id = `./rpm/get_distro_id.py`.strip
|
35
|
+
rpm_spec_dir = "#{RPMBUILD_ROOT}/SPECS"
|
36
|
+
spec_target_dir = "#{rpm_spec_dir}/#{distro_id}"
|
37
|
+
spec_target_file = "#{spec_target_dir}/#{RPM_NAME}.spec"
|
33
38
|
|
34
|
-
|
35
|
-
|
36
|
-
|
39
|
+
sh "mkdir -p #{spec_target_dir}"
|
40
|
+
puts "Generating #{spec_target_file}"
|
41
|
+
Preprocessor.new.start("rpm/#{RPM_NAME}.spec.template",
|
42
|
+
spec_target_file,
|
43
|
+
:distribution => distro_id)
|
37
44
|
|
38
|
-
|
39
|
-
|
40
|
-
require 'phusion_passenger/abstract_installer'
|
41
|
-
nginx_fetch = Class.new(PhusionPassenger::AbstractInstaller) do
|
42
|
-
def fetch(dir)
|
43
|
-
tarball = "nginx-#{PREFERRED_NGINX_VERSION}.tar.gz"
|
44
|
-
return true if File.exists?("#{dir}/#{tarball}")
|
45
|
-
download("http://www.nginx.org/download/#{tarball}", "#{dir}/#{tarball}")
|
46
|
-
end
|
47
|
-
end
|
45
|
+
sh "rpmbuild -ba #{spec_target_file}"
|
46
|
+
end
|
48
47
|
|
49
|
-
|
48
|
+
def create_rpm_build_task(distro_id, mock_chroot_name, distro_name)
|
49
|
+
desc "Build RPM for #{distro_name}"
|
50
|
+
task "rpm:#{distro_id}" => 'rpm:gem' do
|
51
|
+
rpm_spec_dir = "#{RPMBUILD_ROOT}/SPECS"
|
52
|
+
spec_target_dir = "#{rpm_spec_dir}/#{distro_id}"
|
53
|
+
spec_target_file = "#{spec_target_dir}/#{RPM_NAME}.spec"
|
54
|
+
maybe_offline = MOCK_OFFLINE ? "--offline" : nil
|
50
55
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
else
|
57
|
-
abort "Mock setup failed, see above for details"
|
58
|
-
end
|
59
|
-
end
|
60
|
-
nginx_fetch.new.fetch(sources_dir)
|
61
|
-
end
|
56
|
+
sh "mkdir -p #{spec_target_dir}"
|
57
|
+
puts "Generating #{spec_target_file}"
|
58
|
+
Preprocessor.new.start("rpm/#{RPM_NAME}.spec.template",
|
59
|
+
spec_target_file,
|
60
|
+
:distribution => distro_id)
|
62
61
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
62
|
+
sh "rpmbuild -bs #{spec_target_file}"
|
63
|
+
sh "mock --verbose #{maybe_offline} " +
|
64
|
+
"-r #{mock_chroot_name}-x86_64 " +
|
65
|
+
"--resultdir '#{PKG_DIR}/#{distro_id}' " +
|
66
|
+
"rebuild #{RPMBUILD_ROOT}/SRPMS/#{RPM_NAME}-#{PACKAGE_VERSION}-1#{distro_id}.src.rpm"
|
68
67
|
end
|
68
|
+
end
|
69
69
|
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
copy_tarball(@verbosity)
|
74
|
-
noisy_system(*(%w{./rpm/release/build.rb --include-release} + ["--stage-dir=#{ENV['stage_dir'] || 'yum-repo'}", "--extra-packages=#{ENV['extra_packages'] || 'release/mock-repo'}"] + @build_verbosity))
|
75
|
-
repo=File.expand_path("#{ENV['stage_dir'] || 'yum-repo'}", 'rpm')
|
76
|
-
Dir["#{repo}/{fedora,rhel}/*/{i386,x86_64}"].each do |dir|
|
77
|
-
noisy_system('createrepo', dir)
|
78
|
-
end
|
79
|
-
FileUtils.cp(Dir["rpm/doc/*.shtml"], repo, :verbose => @verbosity > 0)
|
80
|
-
FileUtils.cp('rpm/doc/example_yum_repository_htaccess', "#{repo}/.htaccess.example", :verbose => @verbosity > 0)
|
81
|
-
FileUtils.cp('rpm/release/RPM-GPG-KEY-stealthymonkeys', "#{repo}/RPM-GPG-KEY-stealthymonkeys.asc")
|
82
|
-
end
|
70
|
+
ALL_RPM_DISTROS.each_pair do |distro_id, info|
|
71
|
+
create_rpm_build_task(distro_id, info[:mock_chroot_name], info[:distro_name])
|
72
|
+
end
|
83
73
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
74
|
+
desc "Build RPMs for all distributions"
|
75
|
+
task "rpm:all" => ALL_RPM_DISTROS.keys.map { |x| "rpm:#{x}" }
|
76
|
+
|
77
|
+
desc "Publish RPMs for all distributions"
|
78
|
+
task "rpm:publish" do
|
79
|
+
server = "juvia-helper.phusion.nl"
|
80
|
+
remote_dir = "/srv/oss_binaries_passenger/yumgems/phusion-misc"
|
81
|
+
rsync = "rsync -z -r --delete --progress"
|
82
|
+
|
83
|
+
ALL_RPM_DISTROS.each_key do |distro_id|
|
84
|
+
if !File.exist?("#{PKG_DIR}/#{distro_id}")
|
85
|
+
abort "No packages built for #{distro_id}. Please run 'rake rpm:all' first."
|
91
86
|
end
|
92
87
|
end
|
88
|
+
ALL_RPM_DISTROS.each_key do |distro_id|
|
89
|
+
sh "rpm --resign --define '%_signature gpg' --define '%_gpg_name #{PACKAGE_SIGNING_KEY}' #{PKG_DIR}/#{distro_id}/*.rpm"
|
90
|
+
end
|
91
|
+
sh "#{rsync} #{server}:#{remote_dir}/latest/ #{PKG_DIR}/yumgems/"
|
92
|
+
ALL_RPM_DISTROS.each_key do |distro_id|
|
93
|
+
distro_dir = "#{PKG_DIR}/#{distro_id}"
|
94
|
+
repo_dir = "#{PKG_DIR}/yumgems/#{distro_id}"
|
95
|
+
sh "mkdir -p #{repo_dir}"
|
96
|
+
sh "cp #{distro_dir}/#{RPM_NAME}*.rpm #{repo_dir}/"
|
97
|
+
sh "createrepo #{repo_dir}"
|
98
|
+
end
|
99
|
+
sh "ssh #{server} 'rm -rf #{remote_dir}/new && cp -dpR #{remote_dir}/latest #{remote_dir}/new'"
|
100
|
+
sh "#{rsync} #{PKG_DIR}/yumgems/ #{server}:#{remote_dir}/new/"
|
101
|
+
sh "ssh #{server} 'rm -rf #{remote_dir}/previous && mv #{remote_dir}/latest #{remote_dir}/previous && mv #{remote_dir}/new #{remote_dir}/latest'"
|
93
102
|
end
|
@@ -49,3 +49,11 @@ override_dh_auto_clean:
|
|
49
49
|
cd nginx-<%= PhusionPassenger::PREFERRED_NGINX_VERSION %> && if test -f Makefile; then make clean; fi
|
50
50
|
# Hack to prevent HTML files from being renegerated
|
51
51
|
touch doc/*.html
|
52
|
+
|
53
|
+
# Because we include Ruby extensions, the Debian package depends on libruby.
|
54
|
+
# Since Phusion Passenger works fine without the Ruby extensions, we don't want
|
55
|
+
# to depend on libruby.
|
56
|
+
# https://github.com/phusion/passenger_apt_automation/issues/3
|
57
|
+
override_dh_shlibdeps:
|
58
|
+
dh_shlibdeps
|
59
|
+
sed -i -E 's/libruby.*?, //g' debian/*.substvars
|
data/dev/copy_boost_headers.rb
CHANGED
@@ -35,17 +35,24 @@ ESSENTIALS = [
|
|
35
35
|
"boost/thread",
|
36
36
|
"libs/thread/src",
|
37
37
|
"libs/system/src",
|
38
|
+
"libs/regex/src",
|
38
39
|
"boost/date_time/gregorian/formatters_limited.hpp",
|
39
40
|
"boost/date_time/date_formatting_limited.hpp",
|
40
41
|
"boost/type_traits/make_signed.hpp",
|
41
42
|
"boost/type_traits/detail/*",
|
42
43
|
"boost/non_type.hpp",
|
43
44
|
"boost/detail/fenv.hpp",
|
44
|
-
"boost/foreach.hpp"
|
45
|
+
"boost/foreach.hpp",
|
46
|
+
"boost/*regex*"
|
45
47
|
]
|
46
48
|
EXCLUDE = [
|
47
49
|
"libs/thread/src/win32/*",
|
48
|
-
"
|
50
|
+
"libs/regex/src/w32_regex_traits.cpp",
|
51
|
+
"libs/regex/src/fileiter.cpp",
|
52
|
+
"libs/regex/src/icu.cpp",
|
53
|
+
"libs/regex/src/usinstances.cpp",
|
54
|
+
"boost/atomic/detail/windows.hpp",
|
55
|
+
"boost/regex/icu.hpp"
|
49
56
|
]
|
50
57
|
PROGRAM_SOURCE = %q{
|
51
58
|
#include <boost/shared_ptr.hpp>
|
@@ -60,6 +67,8 @@ PROGRAM_SOURCE = %q{
|
|
60
67
|
#include <boost/date_time/posix_time/posix_time.hpp>
|
61
68
|
#include <boost/foreach.hpp>
|
62
69
|
#include <boost/unordered_map.hpp>
|
70
|
+
#include <boost/cregexp.hpp>
|
71
|
+
#include <boost/regexp.hpp>
|
63
72
|
}
|
64
73
|
|
65
74
|
require 'fileutils'
|
@@ -118,293 +118,309 @@
|
|
118
118
|
|
119
119
|
5.4. Redeploying (restarting the WSGI application) => redeploying-restarting-the-wsgi-application--na7pmf
|
120
120
|
|
121
|
-
6.
|
121
|
+
6. Deploying a Node.js application => deploying-a-node-js-application-882ecy
|
122
122
|
|
123
|
-
|
123
|
+
7. Deploying a Meteor application => deploying-a-meteor-application-mxfmir
|
124
124
|
|
125
|
-
|
125
|
+
8. Configuring Phusion Passenger => configuring-phusion-passenger-11oztoe
|
126
126
|
|
127
|
-
|
127
|
+
8.1. PassengerRoot <directory> => passengerroot-directory--sere8l
|
128
128
|
|
129
|
-
|
129
|
+
8.2. PassengerDefaultRuby <filename> => passengerdefaultruby-and-passengerruby-7zblp8
|
130
130
|
|
131
|
-
|
131
|
+
8.3. Deployment options => deployment-options-1unzrll
|
132
132
|
|
133
|
-
|
133
|
+
8.3.1. PassengerEnabled <on|off> => passengerenabled-on-off--74rzth
|
134
134
|
|
135
|
-
|
135
|
+
8.3.2. PassengerRuby <filename> => passengerruby-filename--1r3fv73
|
136
136
|
|
137
|
-
|
137
|
+
8.3.3. PassengerPython <filename> => passengerpython-filename--1ssesv3
|
138
138
|
|
139
|
-
|
139
|
+
8.3.4. PassengerNodejs <filename> => passengernodejs-filename--2mjb1j
|
140
140
|
|
141
|
-
|
141
|
+
8.3.5. PassengerAppEnv <string> => passengerappenv-string--s3ojlc
|
142
142
|
|
143
|
-
|
143
|
+
8.3.6. RailsEnv <string> => railsenv-string--1b0xxvu
|
144
144
|
|
145
|
-
|
145
|
+
8.3.7. RackEnv <string> => rackenv-string--vve9py
|
146
146
|
|
147
|
-
|
147
|
+
8.3.8. PassengerAppRoot <path/to/root> => passengerapproot-path-to-root--uf24yd
|
148
148
|
|
149
|
-
|
149
|
+
8.3.9. PassengerBaseURI <uri> => passengerbaseuri-uri--97i9mm
|
150
150
|
|
151
|
-
|
151
|
+
8.3.10. PassengerRestartDir <directory> => passengerrestartdir-directory--1fmhmv0
|
152
152
|
|
153
|
-
|
153
|
+
8.3.11. PassengerRollingRestarts <on|off> => passengerrollingrestarts
|
154
154
|
|
155
|
-
|
155
|
+
8.3.12. PassengerResistDeploymentErrors <on|off> => passengerresistdeploymenterrors
|
156
156
|
|
157
|
-
|
157
|
+
8.4. Process spawning options => process-spawning-options-v2vscm
|
158
158
|
|
159
|
-
|
159
|
+
8.4.1. PassengerSpawnMethod <string> => passengerspawnmethod-string--sodg2y
|
160
160
|
|
161
|
-
|
161
|
+
8.4.2. PassengerLoadShellEnvvars <on|off> => passengerloadshellenvvars-on-off--1290yz1
|
162
162
|
|
163
|
-
|
163
|
+
8.5. Security options => security-options-1pb75ho
|
164
164
|
|
165
|
-
|
165
|
+
8.5.1. PassengerUserSwitching <on|off> => passengeruserswitching
|
166
166
|
|
167
|
-
|
167
|
+
8.5.2. PassengerUser <username> => passengeruser
|
168
168
|
|
169
|
-
|
169
|
+
8.5.3. PassengerGroup <group name> => passengergroup
|
170
170
|
|
171
|
-
|
171
|
+
8.5.4. PassengerDefaultUser <username> => passengerdefaultuser
|
172
172
|
|
173
|
-
|
173
|
+
8.5.5. PassengerDefaultGroup <group name> => passengerdefaultgroup
|
174
174
|
|
175
|
-
|
175
|
+
8.5.6. PassengerFriendlyErrorPages <on|off> => passengerfriendlyerrorpages
|
176
176
|
|
177
|
-
|
177
|
+
8.6. Resource control and optimization options => resource-control-and-optimization-options-zu2f7u
|
178
178
|
|
179
|
-
|
179
|
+
8.6.1. PassengerMaxPoolSize <integer> => passengermaxpoolsize-integer--am64q8
|
180
180
|
|
181
|
-
|
181
|
+
8.6.2. PassengerMinInstances <integer> => passengermininstances-integer--wegq6b
|
182
182
|
|
183
|
-
|
183
|
+
8.6.3. PassengerMaxInstances <integer> => passengermaxinstances
|
184
184
|
|
185
|
-
|
185
|
+
8.6.4. PassengerMaxInstancesPerApp <integer> => passengermaxinstancesperapp
|
186
186
|
|
187
|
-
|
187
|
+
8.6.5. PassengerPoolIdleTime <integer> => passengerpoolidletime-integer--a3gunq
|
188
188
|
|
189
|
-
6.6.
|
189
|
+
8.6.6. PassengerMaxPreloaderIdleTime <integer> => railsappspawneridletime-integer--1awgog1
|
190
190
|
|
191
|
-
|
191
|
+
8.6.7. PassengerStartTimeout <seconds> => passengerstarttimeout-seconds--ihnfku
|
192
192
|
|
193
|
-
|
193
|
+
8.6.8. PassengerConcurrencyModel <process|thread> => passengerconcurrencymodel-process-thread--1eipofj
|
194
194
|
|
195
|
-
|
195
|
+
8.6.9. PassengerThreadCount <number> => passengerthreadcount-number--10jl64a
|
196
196
|
|
197
|
-
|
197
|
+
8.6.10. PassengerMaxRequests <integer> => passengermaxrequests-integer--17qkw9n
|
198
198
|
|
199
|
-
|
199
|
+
8.6.11. PassengerMaxRequestTime <seconds> => passengermaxrequesttime-seconds--127v1i2
|
200
200
|
|
201
|
-
|
201
|
+
8.6.12. PassengerMemoryLimit <integer> => passengermemorylimit-integer--18irza1
|
202
202
|
|
203
|
-
|
203
|
+
8.6.13. PassengerStatThrottleRate <integer> => passengerstatthrottlerate-integer--1dcfda3
|
204
204
|
|
205
|
-
6.
|
205
|
+
8.6.14. PassengerPreStart <url> => passengerprestart-url--1utb57k
|
206
206
|
|
207
|
-
6.
|
207
|
+
8.6.15. PassengerHighPerformance <on|off> => passengerhighperformance-on-off--nvfa86
|
208
208
|
|
209
|
-
|
209
|
+
8.7. Connection handling options => connection-handling-options-1k3zd1a
|
210
210
|
|
211
|
-
|
211
|
+
8.7.1. PassengerBufferUpload <on|off> => passengerbufferupload-on-off--1lsjr93
|
212
212
|
|
213
|
-
|
213
|
+
8.7.2. PassengerBufferResponse <on|off> => passengerbufferresponse-on-off--1y7ilka
|
214
214
|
|
215
|
-
|
215
|
+
8.7.3. PassengerErrorOverride <on|off> => passengererroroverride-on-off--1pq9nez
|
216
216
|
|
217
|
-
|
217
|
+
8.7.4. PassengerMaxRequestQueueSize <number> => passenger-max-request-queue-size-number--1f1uocd
|
218
218
|
|
219
|
-
|
219
|
+
8.8. Compatibility options => compatibility-options-8jve5a
|
220
220
|
|
221
|
-
|
221
|
+
8.8.1. PassengerResolveSymlinksInDocumentRoot <on|off> => passengerresolvesymlinksindocumentroot-on-off--1r0qcp8
|
222
222
|
|
223
|
-
|
223
|
+
8.8.2. PassengerAllowEncodedSlashes <on|off> => passengerallowencodedslashes-on-off--1y3s1ww
|
224
224
|
|
225
|
-
|
225
|
+
8.9. Logging and debugging options => logging-and-debugging-options-el2cuc
|
226
226
|
|
227
|
-
|
227
|
+
8.9.1. PassengerLogLevel <integer> => passengerloglevel-integer--s3kbil
|
228
228
|
|
229
|
-
|
229
|
+
8.9.2. PassengerDebugLogFile <filename> => passengerdebuglogfile-filename--1wjm2j1
|
230
230
|
|
231
|
-
|
231
|
+
8.9.3. PassengerDebugger <on|off> => passengerdebugger-on-off--19you7e
|
232
232
|
|
233
|
-
|
233
|
+
8.10. Advanced options => advanced-options-1ab1jkq
|
234
234
|
|
235
|
-
|
235
|
+
8.10.1. PassengerTempDir <directory> => passengertempdir-directory--68h2ng
|
236
236
|
|
237
|
-
|
237
|
+
8.10.2. PassengerUploadBufferDir <directory> => passengeruploadbufferdir-directory--kdr8at
|
238
238
|
|
239
|
-
|
239
|
+
8.11. Deprecated or removed options => deprecated-options-pm9m57
|
240
240
|
|
241
|
-
|
241
|
+
8.11.1. RailsRuby => railsruby-ht09ei
|
242
242
|
|
243
|
-
|
243
|
+
8.11.2. RailsBaseURI and RackBaseURI => railsbaseuri-uri--1txrw3k
|
244
244
|
|
245
|
-
|
245
|
+
8.11.3. RailsUserSwitching => railsuserswitching-1npx8y4
|
246
246
|
|
247
|
-
|
247
|
+
8.11.4. RailsDefaultUser => railsdefaultuser-19j7n3m
|
248
248
|
|
249
|
-
|
249
|
+
8.11.5. RailsAllowModRewrite => railsallowmodrewrite-1vkziro
|
250
250
|
|
251
|
-
|
251
|
+
8.11.6. RailsSpawnMethod => railsspawnmethod-1aljgpa
|
252
252
|
|
253
|
-
|
253
|
+
8.11.7. RailsAutoDetect, RackAutoDetect and WsgiAutoDetect => railsautodetect-rackautodetect-and-wsgiautodetect-1qgakzs
|
254
254
|
|
255
|
-
|
255
|
+
8.11.8. RailsAppSpawnerIdleTime => railsappspawneridletime-heh41r
|
256
256
|
|
257
|
-
|
257
|
+
8.11.9. RailsFrameworkSpawnerIdleTime => railsframeworkspawneridletime-adcf9k
|
258
258
|
|
259
|
-
|
259
|
+
9. Troubleshooting => troubleshooting-2ihihi
|
260
260
|
|
261
|
-
|
261
|
+
9.1. Generic troubleshooting tips => generic-troubleshooting-tips-130iuhe
|
262
262
|
|
263
|
-
|
263
|
+
9.2. Why does the first request take a long time? => why-does-the-first-request-take-a-long-time--12mg452
|
264
264
|
|
265
|
-
|
265
|
+
9.3. OS X: The installer cannot locate MAMP’s Apache => macos-x-the-installer-cannot-locate-mamp-s-apache-or908n
|
266
266
|
|
267
|
-
|
267
|
+
9.4. Apache reports a "403 Forbidden" error => apache-reports-a-403-forbidden-error-140tb4p
|
268
268
|
|
269
|
-
|
269
|
+
9.5. Static assets such as images and stylesheets aren’t being displayed => static-assets-such-as-images-and-stylesheets-aren-t-being-displayed-uaptpi
|
270
270
|
|
271
|
-
|
271
|
+
9.6. The Apache error log says that the spawn manager script does not exist, or that it does not have permission to execute it => the-apache-error-log-says-that-the-spawn-manager-script-does-not-exist-or-that-it-does-not-have-permission-to-execute-it-1fmoozk
|
272
272
|
|
273
|
-
7.
|
273
|
+
9.7. The application thinks its not on SSL even though it is => the-application-thinks-its-not-on-ssl-even-though-it-is-u9fcp1
|
274
274
|
|
275
|
-
|
275
|
+
9.8. Ruby on Rails-specific troubleshooting => ruby-on-rails-specific-problems-6umss5
|
276
276
|
|
277
|
-
|
277
|
+
9.8.1. The "About your application’s environment" link does not work => the-about-your-application-s-environment-link-does-not-work-7k4tlm
|
278
278
|
|
279
|
-
|
279
|
+
9.8.2. The Rails application reports that it’s unable to start because of a permission error => the-rails-application-reports-that-it-s-unable-to-start-because-of-a-permission-error-v53i6s
|
280
280
|
|
281
|
-
|
281
|
+
9.8.3. The Rails application’s log file is not being written to => my-rails-application-s-log-file-is-not-being-written-to-3i747l
|
282
282
|
|
283
|
-
|
283
|
+
9.9. Conflicting Apache modules => conflicting-apache-modules-1uwpixk
|
284
284
|
|
285
|
-
|
285
|
+
9.9.1. mod_userdir => mod-userdir-x5e2te
|
286
286
|
|
287
|
-
|
287
|
+
9.9.2. MultiViews (mod_negotiation) => multiviews-mod-negotiation--zchfg0
|
288
288
|
|
289
|
-
|
289
|
+
9.9.3. VirtualDocumentRoot => virtualdocumentroot-14cwd7l
|
290
290
|
|
291
|
-
|
291
|
+
10. Analysis and system maintenance => analysis-and-system-maintenance-qvkwzr
|
292
292
|
|
293
|
-
|
293
|
+
10.1. Inspecting memory usage => inspecting-memory-usage-1bkis6i
|
294
294
|
|
295
|
-
|
295
|
+
10.2. Inspecting Phusion Passenger’s internal status => inspecting-phusion-passenger-s-internal-status-ukekf7
|
296
296
|
|
297
|
-
|
297
|
+
10.3. Debugging frozen applications => debugging-frozen-applications-1qsjqq7
|
298
298
|
|
299
|
-
|
299
|
+
10.4. Accessing individual application processes => accessing-individual-application-processes-1p0j4jb
|
300
300
|
|
301
|
-
|
301
|
+
10.5. Attaching an IRB console to an application process => attaching-an-irb-console-to-an-application-process-1cma32j
|
302
302
|
|
303
|
-
|
303
|
+
11. Tips => tips-19cwwf7
|
304
304
|
|
305
|
-
|
305
|
+
11.1. User Switching (security feature) => user-switching-security--8njx1x
|
306
306
|
|
307
|
-
|
307
|
+
11.1.1. Requirements => requirements-yxvtxo
|
308
308
|
|
309
|
-
|
309
|
+
11.1.2. Effects => effects-1lko7vo
|
310
310
|
|
311
|
-
|
311
|
+
11.1.3. Caveats & troubleshooting => caveats-troubleshooting-161hgge
|
312
312
|
|
313
|
-
|
313
|
+
11.1.4. Finding out what user an application is running as => finding-out-what-user-an-application-is-running-as-7uwrol
|
314
314
|
|
315
|
-
|
315
|
+
11.2. Copy-on-write memory support (reducing memory consumption of Ruby applications) => reducing-memory-consumption-of-ruby-on-rails-applications-by-33--1ubxnq0
|
316
316
|
|
317
|
-
|
317
|
+
11.3. Capistrano recipe => capistrano-recipe-syzgo7
|
318
318
|
|
319
|
-
|
319
|
+
11.4. Bundler support => bundler-support-cf72ih
|
320
320
|
|
321
|
-
|
321
|
+
11.4.1. Does Phusion Passenger itself need to be added to the Gemfile? => does-phusion-passenger-itself-need-to-be-added-to-the-gemfile--17whimp
|
322
322
|
|
323
|
-
|
323
|
+
11.5. Installing multiple Ruby on Rails versions => installing-multiple-ruby-on-rails-versions-mi5j14
|
324
324
|
|
325
|
-
|
325
|
+
11.6. Making the application restart after each request => making-the-application-restart-after-each-request-183bezx
|
326
326
|
|
327
|
-
|
327
|
+
11.7. How to fix broken images/CSS/JavaScript URIs in sub-URI deployments => how-to-fix-broken-images-css-javascript-uris-in-sub-uri-deployments-a63b6r
|
328
328
|
|
329
|
-
|
329
|
+
11.8. Out-of-Band Work and Out-of-Band Garbage Collection => out-of-band-work-and-out-of-band-garbage-collection-kav2p8
|
330
330
|
|
331
|
-
|
331
|
+
11.9. Hooks => hooks-bcltgp
|
332
332
|
|
333
|
-
|
333
|
+
11.9.1. Example => example-icjf0z
|
334
334
|
|
335
|
-
|
335
|
+
11.9.2. Environment => environment-1amls4v
|
336
336
|
|
337
|
-
|
337
|
+
11.9.3. Blocking and concurrency => blocking-and-concurrency-cxpbyu
|
338
338
|
|
339
|
-
|
339
|
+
11.9.4. Error handling => error-handling-1a1uvod
|
340
340
|
|
341
|
-
9.
|
341
|
+
11.9.5. Available hooks => available-hooks-159anc3
|
342
342
|
|
343
|
-
|
343
|
+
11.10. Flying Passenger => flying-passenger-q916f7
|
344
344
|
|
345
|
-
10.
|
345
|
+
11.10.1. Requirements => requirements-1ntkin3
|
346
346
|
|
347
|
-
10.
|
347
|
+
11.10.2. Basic usage => basic-usage-joifsk
|
348
348
|
|
349
|
-
10.
|
349
|
+
11.10.3. Configuring Flying Passenger => configuring-flying-passenger-1v35vgg
|
350
350
|
|
351
|
-
10.
|
351
|
+
11.10.4. Managing the Flying Passenger daemon => managing-the-flying-passenger-daemon-1bng2bu
|
352
352
|
|
353
|
-
10.
|
353
|
+
11.10.5. Using Flying Passenger with MRI 1.8 or JRuby => using-flying-passenger-with-mri-1-8-or-jruby-f5tbvs
|
354
354
|
|
355
|
-
10.
|
355
|
+
11.10.6. Caveats and limitations => caveats-and-limitations-lz3rbb
|
356
356
|
|
357
|
-
|
357
|
+
11.11. X-Sendfile support => x-sendfile-support-1cgyykw
|
358
358
|
|
359
|
-
11.
|
359
|
+
11.12. Upload progress => upload-progress-71cyl7
|
360
360
|
|
361
|
-
12.
|
361
|
+
12. Under the hood => under-the-hood-21ue5t
|
362
362
|
|
363
|
-
12.1.
|
363
|
+
12.1. Page caching support => page-caching-support-kwq9b9
|
364
364
|
|
365
|
-
12.2.
|
365
|
+
12.2. Phusion Passenger and its relationship with Ruby => phusion-passenger-and-its-relationship-with-ruby-1eq08ff
|
366
366
|
|
367
|
-
12.
|
367
|
+
12.2.1. How Ruby is used => how-ruby-is-used-14r83nr
|
368
368
|
|
369
|
-
|
369
|
+
12.2.2. When the system has multiple Ruby interpreters => when-the-system-has-multiple-ruby-interpreters-10tm1fq
|
370
370
|
|
371
|
-
|
371
|
+
12.3. Static assets serving => static-assets-serving-wo2d9v
|
372
372
|
|
373
|
-
|
373
|
+
12.4. How Phusion Passenger detects whether a virtual host is a web application => how-phusion-passenger-detects-whether-a-virtual-host-is-a-web-application-179mp8m
|
374
374
|
|
375
|
-
13.
|
375
|
+
13. Appendix A: About this document => appendix-a-about-this-document-103toqs
|
376
376
|
|
377
|
-
|
377
|
+
14. Appendix B: Terminology => appendix-b-terminology-h4eaf4
|
378
378
|
|
379
|
-
|
379
|
+
14.1. Application root => application-root-otx6xf
|
380
380
|
|
381
|
-
|
381
|
+
14.2. Idle process => idle-process-potb6g
|
382
382
|
|
383
|
-
|
383
|
+
14.3. Inactive process => inactive-process-16gjv2e
|
384
384
|
|
385
|
-
|
385
|
+
15. Appendix C: Spawning methods explained => appendix-c-spawning-methods-explained-owghi9
|
386
386
|
|
387
|
-
|
387
|
+
15.1. The most straightforward and traditional way: direct spawning => the-most-straightforward-and-traditional-way-conservative-spawning-1ybbli2
|
388
388
|
|
389
|
-
|
389
|
+
15.2. The smart spawning method => the-smart-spawning-method-1cvu9dd
|
390
390
|
|
391
|
-
|
391
|
+
15.2.1. How it works => how-it-works-672zja
|
392
392
|
|
393
|
-
|
393
|
+
15.2.2. Summary of benefits => summary-of-benefits-1yrihfb
|
394
394
|
|
395
|
-
|
395
|
+
15.3. Smart spawning gotcha #1: unintentional file descriptor sharing => smart-spawning-gotcha-1-unintentional-file-descriptor-sharing-z1y55l
|
396
396
|
|
397
|
-
|
397
|
+
15.3.1. Example 1: Memcached connection sharing (harmful) => example-1-memcached-connection-sharing-harmful--c71wqw
|
398
398
|
|
399
|
-
|
399
|
+
15.3.2. Example 2: Log file sharing (not harmful) => example-2-log-file-sharing-not-harmful--1p2yuol
|
400
400
|
|
401
|
-
|
401
|
+
15.4. Smart spawning gotcha #2: the need to revive threads => smart-spawning-gotcha-2-the-need-to-revive-threads-1k6cj7d
|
402
402
|
|
403
|
-
|
403
|
+
15.5. Smart spawning gotcha #3: code load order => smart-spawning-gotcha-3-code-load-order-nkotiy
|
404
404
|
|
405
|
-
|
405
|
+
16. Appendix D: About environment variables => appendix-d-about-environment-variables-1lebv1u
|
406
406
|
|
407
|
-
|
407
|
+
16.1. Working with environment variables => working-with-environment-variables-85e6aa
|
408
408
|
|
409
|
-
|
409
|
+
16.2. The PATH environment variable => the-path-environment-variable-p8e32r
|
410
|
+
|
411
|
+
16.2.1. Adding Phusion Passenger’s administration tools to PATH => adding-phusion-passenger-s-administration-tools-to-path-xwppud
|
412
|
+
|
413
|
+
16.3. Making environment variables permanent => making-environment-variables-permanent-13x0l4h
|
414
|
+
|
415
|
+
16.3.1. bash => bash-1pktn63
|
416
|
+
|
417
|
+
16.3.2. Apache => apache-15zqjvi
|
418
|
+
|
419
|
+
16.3.3. Nginx => nginx-l7ztbb
|
420
|
+
|
421
|
+
16.3.4. cron => cron-1kjp7ck
|
422
|
+
|
423
|
+
16.3.5. Phusion Passenger-served apps => phusion-passenger-served-apps-478vyt
|
424
|
+
|
425
|
+
16.4. Environment variables and sudo => environment-variables-and-sudo-1odzcpz
|
410
426
|
|