passenger 4.0.42 → 4.0.43

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.

Files changed (67) hide show
  1. checksums.yaml +8 -8
  2. checksums.yaml.gz.asc +7 -7
  3. data.tar.gz.asc +7 -7
  4. data/CHANGELOG +13 -0
  5. data/CONTRIBUTING.md +2 -19
  6. data/build/agents.rb +4 -1
  7. data/build/cxx_tests.rb +7 -2
  8. data/build/debian.rb +1 -1
  9. data/debian.template/control.template +0 -2
  10. data/doc/CodingTipsAndPitfalls.md +56 -0
  11. data/doc/Users guide Apache.idmap.txt +16 -14
  12. data/doc/Users guide Nginx.idmap.txt +8 -6
  13. data/doc/Users guide Standalone.idmap.txt +3 -1
  14. data/doc/Users guide Standalone.txt +1 -1
  15. data/doc/users_guide_snippets/environment_variables.txt +1 -0
  16. data/doc/users_guide_snippets/installation.txt +5 -5
  17. data/doc/users_guide_snippets/support_information.txt +42 -9
  18. data/doc/users_guide_snippets/troubleshooting/default.txt +42 -0
  19. data/ext/common/ApplicationPool2/Common.h +1 -0
  20. data/ext/common/ApplicationPool2/DirectSpawner.h +2 -7
  21. data/ext/common/ApplicationPool2/DummySpawner.h +1 -1
  22. data/ext/common/ApplicationPool2/Group.h +4 -2
  23. data/ext/common/ApplicationPool2/Options.h +9 -7
  24. data/ext/common/ApplicationPool2/Pool.h +83 -40
  25. data/ext/common/ApplicationPool2/Process.h +2 -6
  26. data/ext/common/ApplicationPool2/README.md +0 -40
  27. data/ext/common/ApplicationPool2/SmartSpawner.h +2 -9
  28. data/ext/common/ApplicationPool2/Spawner.h +1 -4
  29. data/ext/common/ApplicationPool2/SpawnerFactory.h +6 -9
  30. data/ext/common/ApplicationPool2/SuperGroup.h +3 -3
  31. data/ext/common/Constants.h +1 -1
  32. data/ext/common/UnionStation/Connection.h +227 -0
  33. data/ext/common/UnionStation/Core.h +497 -0
  34. data/ext/common/UnionStation/ScopeLog.h +172 -0
  35. data/ext/common/UnionStation/Transaction.h +276 -0
  36. data/ext/common/Utils.cpp +83 -8
  37. data/ext/common/Utils.h +25 -4
  38. data/ext/common/Utils/AnsiColorConstants.h +1 -0
  39. data/ext/common/Utils/ProcessMetricsCollector.h +6 -170
  40. data/ext/common/Utils/SpeedMeter.h +258 -0
  41. data/ext/common/Utils/StrIntUtils.cpp +6 -0
  42. data/ext/common/Utils/StringScanning.h +277 -0
  43. data/ext/common/Utils/SystemMetricsCollector.h +1460 -0
  44. data/ext/common/agents/Base.cpp +8 -8
  45. data/ext/common/agents/HelperAgent/Main.cpp +12 -6
  46. data/ext/common/agents/HelperAgent/RequestHandler.h +15 -16
  47. data/ext/common/agents/HelperAgent/SystemMetricsTool.cpp +199 -0
  48. data/ext/common/agents/LoggingAgent/LoggingServer.h +2 -1
  49. data/ext/common/agents/SpawnPreparer.cpp +20 -32
  50. data/lib/phusion_passenger.rb +1 -1
  51. data/lib/phusion_passenger/config/list_instances_command.rb +118 -0
  52. data/lib/phusion_passenger/config/main.rb +22 -4
  53. data/lib/phusion_passenger/config/system_metrics_command.rb +37 -0
  54. data/lib/phusion_passenger/config/utils.rb +1 -1
  55. data/lib/phusion_passenger/loader_shared_helpers.rb +8 -5
  56. data/lib/phusion_passenger/platform_info/compiler.rb +1 -1
  57. data/resources/templates/error_layout.html.template +3 -3
  58. data/test/cxx/ApplicationPool2/DirectSpawnerTest.cpp +3 -5
  59. data/test/cxx/ApplicationPool2/PoolTest.cpp +1 -3
  60. data/test/cxx/ApplicationPool2/ProcessTest.cpp +4 -4
  61. data/test/cxx/ApplicationPool2/SmartSpawnerTest.cpp +5 -7
  62. data/test/cxx/RequestHandlerTest.cpp +9 -3
  63. data/test/cxx/UnionStationTest.cpp +61 -64
  64. metadata +13 -4
  65. metadata.gz.asc +7 -7
  66. data/ext/common/UnionStation.h +0 -968
  67. data/helper-scripts/system-memory-stats.py +0 -207
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZTk2YzkwYzQ3MzQwMjFmMTYwMWNlY2NmYmZkYzE2NjU2OWU0OGJhMQ==
4
+ YWY0MDg5NjYxOTVmODI3N2RhNTFlZjlhMTc0NWFhN2U4N2FjYWUwOQ==
5
5
  data.tar.gz: !binary |-
6
- MzJiMDU1ZmM0NDU3YjYwNzlkMDBiNjhmNjA3Y2ZhNDIzNTVjYjRmMQ==
6
+ MDVkZTY5YmIzZWEwZDk5Y2E1ODlhNTQ1YWVlZWE5NDI4ZDJmN2EzNA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MDdlZmY0M2Y3MGJmZTI2OWE1ZWIxNWY3NDIxMjlkNDQxNWQ0NWY3ZWQ5ODRm
10
- Yjg1ODJlYzcxMDA4ZThlNzM0MjM2OTM0MzI2ZTdjYjlmN2NhOTkyY2MxMTY1
11
- YjQ0NmRlZDQ0OWI3ODgwMTU2MjM5N2FjNjEwNGE3ODU4ZDRlMTc=
9
+ M2FiMWE4OWRmZTJjZmY2YmMwZmE1ZjFkYzk2YTM4ZDhiOGFmNzlhNmI5YzAx
10
+ MGU1YWVlY2IwYmFhNGE0MzQ1Y2ExMWIzOWQ1NzFkZDc5MTQ0NzE4NzQ0ZjY0
11
+ Y2U2ZmFiOTVlOWIwYzUyZDU2NzFiMGU0MGQ2MmIwOGRmNTY0NWY=
12
12
  data.tar.gz: !binary |-
13
- ZjAzMzFlN2E2YTE3YTNkOTQ0MTJlNTBlNDgwZmNmOTE4MjE3NDIwM2U2YThl
14
- YWY4NzMzNDE4Y2MyZmM5NmVjMDE5NGMwNzU0YjI5N2YyYWNlOTkyY2M3MWZi
15
- ZGM1YWY3ZDI3ZGY4YmZiODA5MWU5YWZlMmU4MGRiNDg5ZjY4MGM=
13
+ MGQ4OTUwZjA1MGU4OWU3YjU4YmZjYjYwZmZhNDlmMmE2YzRhNzk0OWRkOTlj
14
+ NjlkZjU1MTBkNGFmNzc1NTdmNmU0MTQxODFmMzU4ZmRkNDAyNzQ3NDNiZGZk
15
+ ZjZhNjQ1Mjk2NzFkN2UwZDBlNjM3ZmJmM2Q1MWYzYjE5NGM2NTM=
@@ -2,11 +2,11 @@
2
2
  Version: GnuPG/MacGPG2 v2.0.17 (Darwin)
3
3
  Comment: GPGTools - http://gpgtools.org
4
4
 
5
- iQEcBAABAgAGBQJTagHhAAoJECrHRaUKISqM3JgH/iO5ytwG5HOsJtQIysPKlA1i
6
- D2rnfAPBxs40pvf1ga8qLFvpcUyxtZayP6JU5xNNM/5Z31fJt9gQGsLoA6K6SuLq
7
- qvEq7C25Hiub2PWIhz1Ejl+uMQAFBO8bZiAWutkKTSyg3FbBxz8QqUyExvl6KjWm
8
- Izw60V1sgyBZfKxm2gKC6GC3yCBJXPfyWSFOV+1QgZOHDLMH+ehELCAXzYmKj/Lg
9
- sA+l+4W1gcDv6aDuf1mKMRytU6F6fe1KXeShiGVvE80R4sXz3YnKNU+RADbTcSLA
10
- f6eBkPTOjiuXGgYzQQFhcrVy3c4OnxSqBt4pf99pMqCbbExmX4pjKUsyGpMftDY=
11
- =Qmot
5
+ iQEcBAABAgAGBQJThfVWAAoJECrHRaUKISqM6JcIAItnZwCnNA1rlB+ok8htu4bv
6
+ ZihNlJWmnzihxH7ZAD7qt02XegS63gcjGQ/Y2hxDBbKXaQ6WnqBtmAcOxT3T7YYy
7
+ MeaeLTLcXn7LJvGrrJm1CNWnUpce3zPVecRvuyGBD2yYEpdmtnBS1Mb9j8unZ5cs
8
+ S/WGpIw9rkntrisM8g/dFMJgsJ51LPTkZzb9QkpWG8GfBG7b/Rpzyz3W7f92YSnZ
9
+ feWN3tvFo8UB+CeUCN6XOS0VcGCsKdVJSb5D837AGtymrRhSJ9nJvcz1uQZJX48U
10
+ WEW76te2BwzDchBn1RgvJirLVjx5t2jfC9UWNcLcnopxlzjniRozySdrNDDLQWc=
11
+ =I4xQ
12
12
  -----END PGP SIGNATURE-----
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
- iQEcBAABAgAGBQJTagHhAAoJECrHRaUKISqM4/gH/jWZegkrdqOsXBTGp5zXL5iY
6
- Gx2+AkGOsbYEZ1CIeNn7VlUDqNTAHX4vcSulnP6Tefhs3bJHf6okgv6Bx2NGPtU6
7
- 8H9ju7z/+ZfJDkD2nymwZpApRppUGJKy47VFDjVQX2soHNA1VFdcqnv9bjcWEWSO
8
- DXFLoUYVNVp/9y3Q9uKmP0Uz5Mr/lqzm2VfkUjZjAJVcpSUkGysWC0+8UwAMfuVd
9
- SBlEZ0G9RoJ5e6vMhsdBv0L7jFSt9yGRTCCi5gqgLtoRzUSw7GVUZj36e28KYLzg
10
- H900Ze8sqOczw4VFN8Fw6UXYV778YPpcx+r5Lf0BCLgTs5Tw/K0S9Emk0IiYOBM=
11
- =7RXc
5
+ iQEcBAABAgAGBQJThfVWAAoJECrHRaUKISqMAJsIAKvyWvcg58WQGdss/ZSDAFw5
6
+ fgb4b8YAZyCJuwhOya+Rb4cR5QJ2Yz8o/PqJ4yfqU+hkRJcBCsvW/OPkFr/IDIDW
7
+ ep74AyiQcL7gXxoyZtK1vSKefuCN0RTguXY9sYzZB7VwJ1UDykMB+fqcO8kTQy48
8
+ e9mBiwNHY+GHFLULyJN3hsNiwgzxx9yNMSHtt2TE8I9aK5aFSXOOG7boyI8jseRr
9
+ kI3NXj4HI6hH6c4klf0nPj+9BLVUI77MGQ/0OiOjrdkTxNdM7fJkgy1b/+p5gT+P
10
+ gjsHpxdGR76ppHnW6LpyiBfMLEPpniq/Dx/I037cwqLltw+qJeBawgbXE8Yr9iM=
11
+ =/Ohk
12
12
  -----END PGP SIGNATURE-----
data/CHANGELOG CHANGED
@@ -1,3 +1,16 @@
1
+ Release 4.0.43
2
+ --------------
3
+
4
+ * Introduced a new command `passenger-config list-instances`, which prints all
5
+ running Phusion Passenger instances.
6
+ * Introduced a new command `passenger-config system-metrics, which displays
7
+ metrics about the system such as the total CPU and memory usage.
8
+ * Fixed some compilation problems caused by the compiler capability autodetector.
9
+ * System metrics such as total CPU usage and memory usage, are now sent to
10
+ [Union Station](https://www.unionstationapp.com) in preparation for future
11
+ features.
12
+
13
+
1
14
  Release 4.0.42
2
15
  --------------
3
16
 
@@ -280,23 +280,6 @@ The usual Ruby coding style applies, with some exceptions:
280
280
  * Use 4-space tabs for indentation.
281
281
  * Return values explicitly with `return`.
282
282
 
283
- ### Prefer shared_ptrs
283
+ ## Further reading
284
284
 
285
- You should prefer `shared_ptr`s over raw pointers because they make memory leaks and memory errors less likely. There are only very limited cases in which raw pointers are justified, e.g. optimizations in very hot code paths.
286
-
287
- ### Event loop callbacks
288
-
289
- Be careful with event loop callbacks, they are more tricky than one would expect.
290
-
291
- * If your event loop callback ever calls user-defined functions, either explicitly or implicitly, you should obtain a `shared_ptr` to your `this` object. This is because the user-defined function could call something that would free your object. Your class should derive from `boost::enable_shared_from_this` to make it easy for you to obtain a `shared_ptr` to yourself.
292
-
293
- void callback(ev::io &io, int revents) {
294
- shared_ptr<Foo> self = shared_from_this();
295
- ...
296
- }
297
-
298
- * Event loop callbacks should catch expected exceptions. Letting an exception pass will crash the program. When system call failure simulation is turned on, the code can throw arbitrary SystemExceptions, so beware of those.
299
-
300
- ### Thread interruption and RAII destructors
301
-
302
- When using thread interruption, make sure that RAII destructors are non-interruptable. If your code is interrupted and then a `thread_interrupted` is thrown, make sure that RAII destructors don't check for the interruption flag and then throw `thread_interrupted` again. This not only fails to clean things up properly, but also confuses the exception system, resulting in strange errors such as "terminate called without an active exception".
285
+ Please read "doc/CodingTipsAndPitfalls.md".
@@ -60,6 +60,7 @@ dependencies = [
60
60
  'ext/common/agents/HelperAgent/RequestHandler.h',
61
61
  'ext/common/agents/HelperAgent/RequestHandler.cpp',
62
62
  'ext/common/agents/HelperAgent/ScgiRequestParser.h',
63
+ 'ext/common/agents/HelperAgent/SystemMetricsTool.cpp',
63
64
  'ext/common/Constants.h',
64
65
  'ext/common/StaticString.h',
65
66
  'ext/common/Account.h',
@@ -69,6 +70,7 @@ dependencies = [
69
70
  'ext/common/Logging.h',
70
71
  'ext/common/ResourceLocator.h',
71
72
  'ext/common/Utils/ProcessMetricsCollector.h',
73
+ 'ext/common/Utils/SystemMetricsCollector.h',
72
74
  'ext/common/Utils/VariantMap.h',
73
75
  'ext/common/ApplicationPool2/Pool.h',
74
76
  'ext/common/ApplicationPool2/Common.h',
@@ -150,7 +152,8 @@ file AGENT_OUTPUT_DIR + 'PassengerLoggingAgent' => dependencies do
150
152
  "#{EXTRA_CXX_LDFLAGS}")
151
153
  end
152
154
 
153
- spawn_preparer_libs = COMMON_LIBRARY.only('Utils/Base64.o')
155
+ spawn_preparer_libs = COMMON_LIBRARY.only('Utils/Base64.o', 'Utils/SystemTime.o',
156
+ 'Utils/StrIntUtils.o', 'Utils/IOUtils.o')
154
157
  dependencies = [
155
158
  'ext/common/agents/SpawnPreparer.cpp',
156
159
  spawn_preparer_libs.link_objects,
@@ -115,7 +115,9 @@ TEST_CXX_OBJECTS = {
115
115
  ext/common/agents/LoggingAgent/RemoteSender.h
116
116
  ext/common/agents/LoggingAgent/DataStoreId.h
117
117
  ext/common/agents/LoggingAgent/FilterSupport.h
118
- ext/common/UnionStation.h
118
+ ext/common/UnionStation/Connection.h
119
+ ext/common/UnionStation/Core.h
120
+ ext/common/UnionStation/Transaction.h
119
121
  ext/common/Utils.h
120
122
  ext/common/EventedServer.h
121
123
  ext/common/EventedClient.h
@@ -144,7 +146,10 @@ TEST_CXX_OBJECTS = {
144
146
  ext/common/agents/HelperAgent/FileBackedPipe.h
145
147
  ext/common/agents/HelperAgent/ScgiRequestParser.h
146
148
  ext/common/agents/HelperAgent/AgentOptions.h
147
- ext/common/UnionStation.h
149
+ ext/common/UnionStation/Connection.h
150
+ ext/common/UnionStation/Core.h
151
+ ext/common/UnionStation/Transaction.h
152
+ ext/common/UnionStation/ScopeLog.h
148
153
  ext/common/ApplicationPool2/Pool.h
149
154
  ext/common/ApplicationPool2/SuperGroup.h
150
155
  ext/common/ApplicationPool2/Group.h
@@ -166,7 +166,7 @@ def create_debian_binary_package_task(distribution, arch)
166
166
  command = "cd #{PKG_DIR}/official && " +
167
167
  "pbuilder-dist #{distribution} #{arch} build #{base_name}.dsc " +
168
168
  "2>&1 | awk '{ print strftime(\"%Y-%m-%d %H:%M:%S -- \"), $0; fflush(); }'" +
169
- " | tee #{logfile}"
169
+ " | tee #{logfile}; test ${PIPESTATUS[0]} -eq 0"
170
170
  sh "bash -c #{Shellwords.escape(command)}"
171
171
  sh "echo Done >> #{logfile}"
172
172
  end
@@ -38,7 +38,6 @@ Depends: ${shlibs:Depends}, ${misc:Depends},
38
38
  ruby-daemon-controller (>= 1.2.0)
39
39
  Recommends: passenger-doc (= ${binary:Version}), passenger-dev (= ${binary:Version}),
40
40
  crash-watch
41
- Suggests: python
42
41
  Breaks: libapache2-mod-passenger (<< <%= DEBIAN_EPOCH %>:<%= PACKAGE_VERSION %>), passenger-common,
43
42
  passenger-common1.8, passenger-common1.9.1, ruby-passenger
44
43
  Replaces: libapache2-mod-passenger (<< <%= DEBIAN_EPOCH %>:<%= PACKAGE_VERSION %>), passenger-common,
@@ -54,7 +53,6 @@ Architecture: any
54
53
  Depends: ${shlibs:Depends}, ${misc:Depends},
55
54
  ruby2.2 | ruby2.1 | ruby2.0 | ruby1.9.1 | ruby1.8 | ruby-interpreter,
56
55
  passenger (= ${binary:Version})
57
- Suggests: python
58
56
  Replaces: ruby-passenger-dev
59
57
  Conflicts: ruby-passenger-dev
60
58
  Provides: ruby-passenger-dev
@@ -0,0 +1,56 @@
1
+ # Coding tips and common coding pitfalls
2
+
3
+ ## Prefer shared_ptrs
4
+
5
+ You should prefer `shared_ptr`s over raw pointers because they make memory leaks and memory errors less likely. There are only very limited cases in which raw pointers are justified, e.g. optimizations in very hot code paths.
6
+
7
+ ### Unexpected shared_ptr invalidation
8
+
9
+ Suppose you have a function which takes a reference to a shared_ptr, like this:
10
+
11
+ void foo(const shared_ptr<Client> &client) {
12
+ performNetworking();
13
+ log(client->getAddress());
14
+ }
15
+
16
+ You might think that `client` is never going to be destroyed during the scope of the function, right? Wrong. If `client` came from a non-local variable, and your function calls another function (perhaps indirectly) which resets that variable, then `client` is going to be invalidated. Consider a contrived example like this:
17
+
18
+ static shared_ptr<Client> client;
19
+
20
+ void performNetworking() {
21
+ if (write(...) == -1) {
22
+ // An error occurred, disconnect client.
23
+ client.reset();
24
+ }
25
+ }
26
+
27
+ More realistically, this kind of bug is likely to occur if `foo()` calls some function which invokes a user-defined callback, which unreferences the original object under some conditions. Thus, if your code might call an arbitrary user-defined function, you should increase the reference count locally:
28
+
29
+ void foo(const shared_ptr<Client> &client) {
30
+ shared_ptr<Client> extraReference = client;
31
+ performNetworking();
32
+ log(client->getAddress());
33
+ }
34
+
35
+ A variant of this pitfall is documented under "Event loop callbacks".
36
+
37
+ ## Event loop callbacks
38
+
39
+ ### Obtain extra shared_ptr reference on `this`
40
+
41
+ If your event loop callback ever calls user-defined functions, either explicitly or implicitly, you should obtain a `shared_ptr` to your `this` object. This is because the user-defined function could call something that would free your object. The problem is documented in detail in "Unexpected shared_ptr invalidation".
42
+
43
+ Your class should derive from `boost::enable_shared_from_this` to make it easy for you to obtain a `shared_ptr` to yourself.
44
+
45
+ void callback(ev::io &io, int revents) {
46
+ shared_ptr<Foo> extraReference = shared_from_this();
47
+ ...
48
+ }
49
+
50
+ ### Exceptions
51
+
52
+ Event loop callbacks should catch expected exceptions. Letting an exception pass will crash the program. When system call failure simulation is turned on, the code can throw arbitrary SystemExceptions, so beware of those.
53
+
54
+ ## Thread interruption and RAII destructors
55
+
56
+ When using thread interruption, make sure that RAII destructors are non-interruptable. If your code is interrupted and then a `thread_interrupted` is thrown, make sure that RAII destructors don't check for the interruption flag and then throw `thread_interrupted` again. This not only fails to clean things up properly, but also confuses the exception system, resulting in strange errors such as "terminate called without an active exception".
@@ -14,7 +14,7 @@
14
14
 
15
15
  1. Support information => support-information-zkewk3
16
16
 
17
- 1.1. Supported operating systems => supported-operating-systems-rhbg35
17
+ 1.1. Supported operating systems and languages => supported-operating-systems-rhbg35
18
18
 
19
19
  1.2. Where to get support => where-to-get-support-f3pbrb
20
20
 
@@ -264,31 +264,33 @@
264
264
 
265
265
  9.2. Why does the first request take a long time? => why-does-the-first-request-take-a-long-time--12mg452
266
266
 
267
- 9.3. OS X: The installer cannot locate MAMP’s Apache => macos-x-the-installer-cannot-locate-mamp-s-apache-or908n
267
+ 9.3. I get "command not found" when running a Phusion Passenger command through sudo => i-get-command-not-found-when-running-a-phusion-passenger-command-through-sudo-v9z223
268
268
 
269
- 9.4. Apache reports a "403 Forbidden" error => apache-reports-a-403-forbidden-error-140tb4p
269
+ 9.4. OS X: The installer cannot locate MAMP’s Apache => macos-x-the-installer-cannot-locate-mamp-s-apache-or908n
270
270
 
271
- 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
271
+ 9.5. Apache reports a "403 Forbidden" error => apache-reports-a-403-forbidden-error-140tb4p
272
272
 
273
- 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
273
+ 9.6. Static assets such as images and stylesheets aren’t being displayed => static-assets-such-as-images-and-stylesheets-aren-t-being-displayed-uaptpi
274
274
 
275
- 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
275
+ 9.7. 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
276
276
 
277
- 9.8. Ruby on Rails-specific troubleshooting => ruby-on-rails-specific-problems-6umss5
277
+ 9.8. The application thinks its not on SSL even though it is => the-application-thinks-its-not-on-ssl-even-though-it-is-u9fcp1
278
278
 
279
- 9.8.1. The "About your application’s environment" link does not work => the-about-your-application-s-environment-link-does-not-work-7k4tlm
279
+ 9.9. Ruby on Rails-specific troubleshooting => ruby-on-rails-specific-problems-6umss5
280
280
 
281
- 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
281
+ 9.9.1. The "About your application’s environment" link does not work => the-about-your-application-s-environment-link-does-not-work-7k4tlm
282
282
 
283
- 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
283
+ 9.9.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
284
284
 
285
- 9.9. Conflicting Apache modules => conflicting-apache-modules-1uwpixk
285
+ 9.9.3. The Rails application’s log file is not being written to => my-rails-application-s-log-file-is-not-being-written-to-3i747l
286
286
 
287
- 9.9.1. mod_userdir => mod-userdir-x5e2te
287
+ 9.10. Conflicting Apache modules => conflicting-apache-modules-1uwpixk
288
288
 
289
- 9.9.2. MultiViews (mod_negotiation) => multiviews-mod-negotiation--zchfg0
289
+ 9.10.1. mod_userdir => mod-userdir-x5e2te
290
290
 
291
- 9.9.3. VirtualDocumentRoot => virtualdocumentroot-14cwd7l
291
+ 9.10.2. MultiViews (mod_negotiation) => multiviews-mod-negotiation--zchfg0
292
+
293
+ 9.10.3. VirtualDocumentRoot => virtualdocumentroot-14cwd7l
292
294
 
293
295
  10. Analysis and system maintenance => analysis-and-system-maintenance-qvkwzr
294
296
 
@@ -14,7 +14,7 @@
14
14
 
15
15
  1. Support information => support-information-nl5gdn
16
16
 
17
- 1.1. Supported operating systems => supported-operating-systems-a5n2x4
17
+ 1.1. Supported operating systems and languages => supported-operating-systems-a5n2x4
18
18
 
19
19
  1.2. Where to get support => where-to-get-support-2s9na5
20
20
 
@@ -250,15 +250,17 @@
250
250
 
251
251
  9.3. Upon accessing the web app, Nginx reports a "Permission denied" error => upon-accessing-the-web-app-nginx-reports-a-permission-denied-error-1wgatlk
252
252
 
253
- 9.4. The application thinks its not on SSL even though it is => the-application-thinks-its-not-on-ssl-even-though-it-is-1e2m21h
253
+ 9.4. I get "command not found" when running a Phusion Passenger command through sudo => i-get-command-not-found-when-running-a-phusion-passenger-command-through-sudo-10fzwno
254
254
 
255
- 9.5. Ruby on Rails-specific troubleshooting => ruby-on-rails-specific-troubleshooting-n8u5u1
255
+ 9.5. The application thinks its not on SSL even though it is => the-application-thinks-its-not-on-ssl-even-though-it-is-1e2m21h
256
256
 
257
- 9.5.1. The "About your application’s environment" link does not work => the-about-your-application-s-environment-link-does-not-work-9p7b2g
257
+ 9.6. Ruby on Rails-specific troubleshooting => ruby-on-rails-specific-troubleshooting-n8u5u1
258
258
 
259
- 9.5.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-58ww8s
259
+ 9.6.1. The "About your application’s environment" link does not work => the-about-your-application-s-environment-link-does-not-work-9p7b2g
260
260
 
261
- 9.5.3. The Rails application’s log file is not being written to => the-rails-application-s-log-file-is-not-being-written-to-9m2i5h
261
+ 9.6.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-58ww8s
262
+
263
+ 9.6.3. The Rails application’s log file is not being written to => the-rails-application-s-log-file-is-not-being-written-to-9m2i5h
262
264
 
263
265
  10. Analysis and system maintenance => analysis-and-system-maintenance-1nnlnj8
264
266
 
@@ -14,7 +14,7 @@
14
14
 
15
15
  1. Support information => support-information-1x8e9ee
16
16
 
17
- 1.1. Supported operating systems => supported-operating-systems-1387080
17
+ 1.1. Supported operating systems and languages => supported-operating-systems-1387080
18
18
 
19
19
  1.2. Where to get support => where-to-get-support-xkx7rx
20
20
 
@@ -92,6 +92,8 @@
92
92
 
93
93
  7.2. Upon uploading a file, Phusion Passenger reports "client_body_temp/00000000xx failed (2: No such file or directory)" => upon-uploading-a-file-phusion-passenger-reports-client-body-temp-00000000xx-failed-2-no-such-file-or-directory--d01goe
94
94
 
95
+ 7.3. I get "command not found" when running a Phusion Passenger command through sudo => i-get-command-not-found-when-running-a-phusion-passenger-command-through-sudo-14k8kde
96
+
95
97
  8. Appendix: About environment variables => appendix-about-environment-variables-1ct91x3
96
98
 
97
99
  8.1. Working with environment variables => working-with-environment-variables-11cmwlv
@@ -130,7 +130,7 @@ Every time you start Standalone, you must pass the `--nginx-config-template` par
130
130
 
131
131
  [source,sh]
132
132
  ------------------------------------------
133
- passenger start --nginx-config-template nginx.config.erb
133
+ passenger start --nginx-config-template nginx.conf.erb
134
134
  ------------------------------------------
135
135
 
136
136
  Alternatively, if you don't want to pass this parameter every time, you can also set the `nginx_config_template` option in <<config_file,passenger-standalone.json>>.
@@ -69,6 +69,7 @@ export PATH=/opt/local/bin:$PATH
69
69
  export PATH=$PATH:/usr/local/bin
70
70
  ---------------------------------
71
71
 
72
+ [[the_path_env_var]]
72
73
  === The PATH environment variable
73
74
 
74
75
  The `PATH` environment variable dictates where the system looks for command. It is a colon-separated list of directories. If you get a "command not found" error while you know that the command is installed, then setting `PATH` will help. For example suppose that the command `frobnicator` is in `/opt/local/bin`:
@@ -61,7 +61,7 @@ We provide an official Phusion Passenger APT repository. This APT repository con
61
61
 
62
62
  If you use these packages to install Phusion Passenger then you do not need to run `passenger-install-apache2-module` or `passenger-install-nginx-module`. These packages contain all the binaries that you need.
63
63
 
64
- Packages are available for the x86 and x86_64 architectures. Our policy is to support all Ubuntu LTS releases that are still supported by Canonical, plus the latest non-LTS Ubuntu release, plus all Debian releases that are still supported by Debian.
64
+ Packages are available for the x86 and x86_64 architectures. Our policy is to support all Ubuntu LTS releases that are still supported by Canonical, plus the latest Ubuntu release, plus all Debian releases that are still supported by Debian.
65
65
 
66
66
  [[install_add_apt_repo]]
67
67
  ==== Adding our APT repository
@@ -85,8 +85,8 @@ sudo apt-get install apt-transport-https ca-certificates
85
85
  [source,sh]
86
86
  --------------------------------------------------------------
87
87
  ##### !!!! Only add ONE of these lines, not all of them !!!! #####
88
- # Ubuntu 13.10
89
- deb https://oss-binaries.phusionpassenger.com/apt/passenger saucy main
88
+ # Ubuntu 14.04
89
+ deb https://oss-binaries.phusionpassenger.com/apt/passenger trusty main
90
90
  # Ubuntu 12.04
91
91
  deb https://oss-binaries.phusionpassenger.com/apt/passenger precise main
92
92
  # Ubuntu 10.04
@@ -102,8 +102,8 @@ deb https://oss-binaries.phusionpassenger.com/apt/passenger squeeze main
102
102
  [source,sh]
103
103
  --------------------------------------------------------------
104
104
  ##### !!!! Only add ONE of these lines, not all of them !!!! #####
105
- # Ubuntu 13.10
106
- deb https://download:YOUR_DOWNLOAD_TOKEN@www.phusionpassenger.com/enterprise_apt saucy main
105
+ # Ubuntu 14.04
106
+ deb https://download:YOUR_DOWNLOAD_TOKEN@www.phusionpassenger.com/enterprise_apt trusty main
107
107
  # Ubuntu 12.04
108
108
  deb https://download:YOUR_DOWNLOAD_TOKEN@www.phusionpassenger.com/enterprise_apt precise main
109
109
  # Ubuntu 10.04
@@ -1,18 +1,51 @@
1
- === Supported operating systems ===
1
+ === Supported operating systems and languages ===
2
2
 
3
- Phusion Passenger works on any POSIX-compliant operating system. In other
3
+ Phusion Passenger works on almost any POSIX-compliant operating system. In other
4
4
  words: practically any operating system on earth, except Microsoft Windows.
5
5
 
6
- Phusion Passenger is confirmed on a large number of operating systems and Linux
7
- distributions, including, but not limited to, Ubuntu, Debian, CentOS/Fedora/RHEL,
8
- Gentoo, Mac OS X, FreeBSD and Solaris. OpenBSD is supported since version 5.2.
9
- Both 32-bit and 64-bit platforms are supported.
6
+ Supported operating systems:
10
7
 
11
- Please
8
+ [options="header"]
9
+ |==================================================
10
+ | OS | Minimum version
11
+ | Ubuntu | 10.04
12
+ | Debian | 6
13
+ | Mac OS X | 10.8 Mountain Lion
14
+ | FreeBSD | 8
15
+ | OpenBSD | 5.2
16
+ | Other Unix | -
17
+ |==================================================
18
+
19
+ "Other Unix" is supported on a "best-effort" basis. We do not regularly check whether Phusion Passenger still works on other Unices, but if users report issues then we'll try to address them.
20
+
21
+ Supported architectures:
22
+
23
+ [options="header"]
24
+ |==================================================
25
+ | Architecture | Notes
26
+ | x86 (32-bit) | -
27
+ | x86_64 (64-bit) | -
28
+ | Other | Supported on a "best-effort" basis.
29
+ |==================================================
30
+
31
+ Supported languages and frameworks:
32
+
33
+ [options="header"]
34
+ |==================================================
35
+ | Language/framework | Minimum version
36
+ | Ruby (MRI) | 1.8.5
37
+ | JRuby | 1.7.0
38
+ | Rubinius | 2.2.0
39
+ | Ruby on Rails | 1.2
40
+ | Python | 2.6
41
+ | Node.js | 0.10
42
+ | Meteor | 0.6
43
+ |==================================================
44
+
45
+ If you run into any issues, please
12
46
  link:http://code.google.com/p/phusion-passenger/issues/list[report a bug]
13
47
  or
14
- link:http://groups.google.com/group/phusion-passenger[join our discussion forum]
15
- if it doesn't work on your POSIX-compliant operating system.
48
+ link:http://groups.google.com/group/phusion-passenger[join our discussion forum].
16
49
 
17
50
  [[where_to_get_support]]
18
51
  === Where to get support ===