passenger 4.0.20 → 4.0.21

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 (496) hide show
  1. checksums.yaml +8 -8
  2. checksums.yaml.gz.asc +7 -7
  3. data.tar.gz.asc +7 -7
  4. data/.gitignore +1 -0
  5. data/.travis.yml +1 -1
  6. data/NEWS +15 -0
  7. data/README.md +5 -3
  8. data/Rakefile +1 -0
  9. data/bin/passenger-config +1 -5
  10. data/bin/passenger-install-apache2-module +53 -5
  11. data/bin/passenger-install-nginx-module +19 -6
  12. data/bin/passenger-memory-stats +3 -3
  13. data/build/agents.rb +11 -8
  14. data/build/apache2.rb +9 -5
  15. data/build/basics.rb +15 -21
  16. data/build/common_library.rb +16 -6
  17. data/build/cplusplus_support.rb +5 -5
  18. data/build/cxx_tests.rb +3 -3
  19. data/build/documentation.rb +1 -1
  20. data/build/misc.rb +4 -37
  21. data/build/node_tests.rb +29 -0
  22. data/build/oxt_tests.rb +1 -1
  23. data/build/packaging.rb +29 -10
  24. data/build/preprocessor.rb +2 -1
  25. data/build/test_basics.rb +15 -6
  26. data/debian.template/locations.ini.template +1 -0
  27. data/debian.template/passenger.install.template +1 -0
  28. data/dev/copy_boost_headers.rb +7 -3
  29. data/dev/run_travis.sh +32 -16
  30. data/doc/Users guide Apache.idmap.txt +22 -34
  31. data/doc/Users guide Apache.txt +20 -234
  32. data/doc/Users guide Nginx.idmap.txt +84 -66
  33. data/doc/Users guide Nginx.txt +50 -1
  34. data/doc/Users guide Standalone.idmap.txt +74 -0
  35. data/doc/Users guide Standalone.txt +22 -9
  36. data/doc/Users guide.txt +51 -0
  37. data/doc/users_guide_snippets/environment_variables.txt +0 -3
  38. data/doc/users_guide_snippets/installation.txt +337 -380
  39. data/doc/users_guide_snippets/installation/run_installer.txt +58 -0
  40. data/doc/users_guide_snippets/installation/verify_running_epilogue.txt +6 -0
  41. data/doc/users_guide_snippets/support_information.txt +2 -9
  42. data/doc/users_guide_snippets/troubleshooting/default.txt +112 -0
  43. data/doc/users_guide_snippets/troubleshooting/rails.txt +56 -0
  44. data/doc/users_guide_snippets/where_to_get_support.txt +9 -0
  45. data/ext/apache2/Bucket.h +1 -1
  46. data/ext/apache2/Configuration.hpp +0 -44
  47. data/ext/apache2/CreateDirConfig.cpp +1 -1
  48. data/ext/apache2/CreateDirConfig.cpp.erb +1 -1
  49. data/ext/apache2/Hooks.cpp +28 -21
  50. data/ext/apache2/MergeDirConfig.cpp +1 -0
  51. data/ext/apache2/MergeDirConfig.cpp.erb +1 -1
  52. data/ext/apache2/SetHeaders.cpp +73 -0
  53. data/ext/apache2/SetHeaders.cpp.erb +88 -0
  54. data/ext/boost/algorithm/string/detail/find_format.hpp +5 -5
  55. data/ext/boost/algorithm/string/detail/find_format_all.hpp +5 -5
  56. data/ext/boost/algorithm/string/detail/finder.hpp +1 -1
  57. data/ext/boost/algorithm/string/formatter.hpp +2 -2
  58. data/ext/boost/assert.hpp +6 -1
  59. data/ext/boost/atomic.hpp +18 -0
  60. data/ext/boost/atomic/atomic.hpp +241 -0
  61. data/ext/boost/atomic/detail/base.hpp +585 -0
  62. data/ext/boost/atomic/detail/cas32strong.hpp +885 -0
  63. data/ext/boost/atomic/detail/cas32weak.hpp +947 -0
  64. data/ext/boost/atomic/detail/cas64strong.hpp +443 -0
  65. data/ext/boost/atomic/detail/config.hpp +54 -0
  66. data/ext/boost/atomic/detail/gcc-alpha.hpp +368 -0
  67. data/ext/boost/atomic/detail/gcc-armv6plus.hpp +252 -0
  68. data/ext/boost/atomic/detail/gcc-cas.hpp +157 -0
  69. data/ext/boost/atomic/detail/gcc-ppc.hpp +2850 -0
  70. data/ext/boost/atomic/detail/gcc-sparcv9.hpp +1259 -0
  71. data/ext/boost/atomic/detail/gcc-x86.hpp +1766 -0
  72. data/ext/boost/atomic/detail/generic-cas.hpp +206 -0
  73. data/ext/boost/atomic/detail/interlocked.hpp +200 -0
  74. data/ext/boost/atomic/detail/linux-arm.hpp +189 -0
  75. data/ext/boost/atomic/detail/lockpool.hpp +97 -0
  76. data/ext/boost/atomic/detail/platform.hpp +62 -0
  77. data/ext/boost/atomic/detail/type-classification.hpp +45 -0
  78. data/ext/boost/chrono/config.hpp +8 -3
  79. data/ext/boost/chrono/duration.hpp +9 -10
  80. data/ext/boost/chrono/system_clocks.hpp +1 -1
  81. data/ext/boost/chrono/time_point.hpp +4 -3
  82. data/ext/boost/config/auto_link.hpp +53 -52
  83. data/ext/boost/config/compiler/borland.hpp +1 -0
  84. data/ext/boost/config/compiler/clang.hpp +24 -1
  85. data/ext/boost/config/compiler/codegear.hpp +1 -0
  86. data/ext/boost/config/compiler/common_edg.hpp +1 -0
  87. data/ext/boost/config/compiler/cray.hpp +1 -0
  88. data/ext/boost/config/compiler/digitalmars.hpp +1 -0
  89. data/ext/boost/config/compiler/gcc.hpp +29 -3
  90. data/ext/boost/config/compiler/gcc_xml.hpp +2 -1
  91. data/ext/boost/config/compiler/hp_acc.hpp +1 -0
  92. data/ext/boost/config/compiler/intel.hpp +1 -1
  93. data/ext/boost/config/compiler/metrowerks.hpp +1 -0
  94. data/ext/boost/config/compiler/mpw.hpp +1 -0
  95. data/ext/boost/config/compiler/pathscale.hpp +1 -0
  96. data/ext/boost/config/compiler/pgi.hpp +1 -0
  97. data/ext/boost/config/compiler/sunpro_cc.hpp +1 -0
  98. data/ext/boost/config/compiler/vacpp.hpp +3 -2
  99. data/ext/boost/config/compiler/visualc.hpp +25 -11
  100. data/ext/boost/config/platform/vxworks.hpp +353 -15
  101. data/ext/boost/config/select_compiler_config.hpp +4 -4
  102. data/ext/boost/config/stdlib/dinkumware.hpp +10 -3
  103. data/ext/boost/config/stdlib/libstdcpp3.hpp +2 -1
  104. data/ext/boost/config/suffix.hpp +45 -19
  105. data/ext/boost/date_time/format_date_parser.hpp +1 -11
  106. data/ext/boost/date_time/strings_from_facet.hpp +5 -3
  107. data/ext/boost/detail/atomic_redef_macros.hpp +19 -0
  108. data/ext/boost/detail/atomic_undef_macros.hpp +39 -0
  109. data/ext/boost/detail/endian.hpp +52 -4
  110. data/ext/boost/detail/scoped_enum_emulation.hpp +10 -10
  111. data/ext/boost/detail/select_type.hpp +36 -0
  112. data/ext/boost/exception/current_exception_cast.hpp +1 -1
  113. data/ext/boost/exception/detail/error_info_impl.hpp +3 -5
  114. data/ext/boost/exception/detail/exception_ptr.hpp +3 -3
  115. data/ext/boost/exception/detail/is_output_streamable.hpp +1 -1
  116. data/ext/boost/exception/detail/object_hex_dump.hpp +1 -1
  117. data/ext/boost/exception/detail/type_info.hpp +1 -1
  118. data/ext/boost/exception/diagnostic_information.hpp +15 -14
  119. data/ext/boost/exception/exception.hpp +1 -1
  120. data/ext/boost/exception/get_error_info.hpp +1 -1
  121. data/ext/boost/exception/info.hpp +12 -13
  122. data/ext/boost/exception/to_string.hpp +6 -1
  123. data/ext/boost/exception/to_string_stub.hpp +9 -1
  124. data/ext/boost/foreach.hpp +5 -5
  125. data/ext/boost/function/function_template.hpp +6 -6
  126. data/ext/boost/functional/hash/detail/float_functions.hpp +90 -0
  127. data/ext/boost/functional/hash/detail/hash_float.hpp +11 -2
  128. data/ext/boost/functional/hash/extensions.hpp +14 -2
  129. data/ext/boost/functional/hash/hash.hpp +26 -5
  130. data/ext/boost/get_pointer.hpp +17 -2
  131. data/ext/boost/integer_traits.hpp +1 -1
  132. data/ext/boost/lexical_cast.hpp +615 -395
  133. data/ext/boost/libs/atomic/lockpool.cpp +24 -0
  134. data/ext/boost/libs/system/src/error_code.cpp +25 -18
  135. data/ext/boost/libs/thread/src/future.cpp +7 -5
  136. data/ext/boost/libs/thread/src/pthread/once.cpp +9 -3
  137. data/ext/boost/libs/thread/src/pthread/once_atomic.cpp +90 -0
  138. data/ext/boost/libs/thread/src/pthread/thread.cpp +129 -95
  139. data/ext/boost/libs/thread/src/pthread/timeconv.inl +20 -1
  140. data/ext/boost/limits.hpp +1 -1
  141. data/ext/boost/math/policies/policy.hpp +10 -0
  142. data/ext/boost/math/special_functions/detail/round_fwd.hpp +17 -4
  143. data/ext/boost/math/special_functions/fpclassify.hpp +114 -45
  144. data/ext/boost/math/special_functions/math_fwd.hpp +195 -83
  145. data/ext/boost/math/special_functions/sign.hpp +13 -8
  146. data/ext/boost/math/tools/config.hpp +38 -16
  147. data/ext/boost/move/algorithm.hpp +275 -0
  148. data/ext/boost/move/core.hpp +332 -0
  149. data/ext/boost/move/detail/config_begin.hpp +23 -0
  150. data/ext/boost/move/detail/config_end.hpp +20 -0
  151. data/ext/boost/move/detail/meta_utils.hpp +158 -0
  152. data/ext/boost/move/iterator.hpp +298 -0
  153. data/ext/boost/move/move.hpp +10 -1256
  154. data/ext/boost/move/traits.hpp +142 -0
  155. data/ext/boost/move/utility.hpp +194 -0
  156. data/ext/boost/mpl/assert.hpp +72 -4
  157. data/ext/boost/noncopyable.hpp +15 -3
  158. data/ext/boost/pointer_to_other.hpp +55 -0
  159. data/ext/boost/range/concepts.hpp +4 -4
  160. data/ext/boost/range/detail/extract_optional_type.hpp +1 -1
  161. data/ext/boost/range/empty.hpp +1 -1
  162. data/ext/boost/range/iterator_range_core.hpp +4 -1
  163. data/ext/boost/range/iterator_range_io.hpp +2 -2
  164. data/ext/boost/ratio/config.hpp +6 -0
  165. data/ext/boost/ratio/detail/overflow_helpers.hpp +2 -2
  166. data/ext/boost/smart_ptr/allocate_shared_array.hpp +250 -0
  167. data/ext/boost/smart_ptr/detail/allocate_array_helper.hpp +169 -0
  168. data/ext/boost/smart_ptr/detail/array_deleter.hpp +124 -0
  169. data/ext/boost/smart_ptr/detail/array_traits.hpp +53 -0
  170. data/ext/boost/smart_ptr/detail/array_utility.hpp +178 -0
  171. data/ext/boost/smart_ptr/detail/make_array_helper.hpp +157 -0
  172. data/ext/boost/smart_ptr/detail/operator_bool.hpp +16 -9
  173. data/ext/boost/smart_ptr/detail/shared_count.hpp +78 -7
  174. data/ext/boost/smart_ptr/detail/sp_convertible.hpp +15 -0
  175. data/ext/boost/smart_ptr/detail/sp_counted_base.hpp +12 -6
  176. data/ext/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +1 -0
  177. data/ext/boost/smart_ptr/detail/sp_counted_base_aix.hpp +1 -0
  178. data/ext/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +1 -0
  179. data/ext/boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp +1 -0
  180. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +1 -0
  181. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +1 -0
  182. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +1 -0
  183. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +1 -0
  184. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +1 -0
  185. data/ext/boost/smart_ptr/detail/sp_counted_base_nt.hpp +1 -0
  186. data/ext/boost/smart_ptr/detail/sp_counted_base_pt.hpp +1 -0
  187. data/ext/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +162 -0
  188. data/ext/boost/smart_ptr/detail/sp_counted_base_solaris.hpp +1 -0
  189. data/ext/boost/smart_ptr/detail/sp_counted_base_spin.hpp +1 -0
  190. data/ext/boost/smart_ptr/detail/sp_counted_base_sync.hpp +1 -0
  191. data/ext/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +1 -0
  192. data/ext/boost/smart_ptr/detail/sp_counted_impl.hpp +15 -0
  193. data/ext/boost/smart_ptr/detail/sp_forward.hpp +39 -0
  194. data/ext/boost/smart_ptr/detail/sp_has_sync.hpp +19 -3
  195. data/ext/boost/smart_ptr/detail/sp_if_array.hpp +31 -0
  196. data/ext/boost/smart_ptr/detail/sp_nullptr_t.hpp +45 -0
  197. data/ext/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +5 -12
  198. data/ext/boost/smart_ptr/enable_shared_from_this.hpp +4 -4
  199. data/ext/boost/smart_ptr/make_shared.hpp +5 -1060
  200. data/ext/boost/smart_ptr/make_shared_array.hpp +247 -0
  201. data/ext/boost/smart_ptr/make_shared_object.hpp +1128 -0
  202. data/ext/boost/smart_ptr/scoped_array.hpp +32 -7
  203. data/ext/boost/smart_ptr/scoped_ptr.hpp +31 -5
  204. data/ext/boost/smart_ptr/shared_array.hpp +135 -20
  205. data/ext/boost/smart_ptr/shared_ptr.hpp +444 -126
  206. data/ext/boost/smart_ptr/weak_ptr.hpp +39 -28
  207. data/ext/boost/static_assert.hpp +74 -17
  208. data/ext/boost/system/error_code.hpp +76 -68
  209. data/ext/boost/system/system_error.hpp +5 -1
  210. data/ext/boost/thread/barrier.hpp +6 -2
  211. data/ext/boost/thread/completion_latch.hpp +233 -0
  212. data/ext/boost/thread/condition.hpp +6 -1
  213. data/ext/boost/thread/detail/async_func.hpp +571 -0
  214. data/ext/boost/thread/detail/config.hpp +248 -40
  215. data/ext/boost/thread/detail/counter.hpp +93 -0
  216. data/ext/boost/thread/detail/delete.hpp +12 -0
  217. data/ext/boost/thread/detail/invoke.hpp +1351 -0
  218. data/ext/boost/thread/detail/is_convertible.hpp +48 -0
  219. data/ext/boost/thread/detail/lockable_wrapper.hpp +45 -0
  220. data/ext/boost/thread/detail/log.hpp +83 -0
  221. data/ext/boost/thread/detail/make_tuple_indices.hpp +224 -0
  222. data/ext/boost/thread/detail/move.hpp +32 -16
  223. data/ext/boost/thread/detail/thread.hpp +236 -41
  224. data/ext/boost/thread/detail/thread_group.hpp +55 -9
  225. data/ext/boost/thread/detail/thread_interruption.hpp +4 -1
  226. data/ext/boost/thread/exceptions.hpp +2 -0
  227. data/ext/boost/thread/externally_locked.hpp +351 -0
  228. data/ext/boost/thread/externally_locked_stream.hpp +170 -0
  229. data/ext/boost/thread/future.hpp +2517 -455
  230. data/ext/boost/thread/future_error_code.hpp +61 -0
  231. data/ext/boost/thread/is_locked_by_this_thread.hpp +39 -0
  232. data/ext/boost/thread/latch.hpp +142 -0
  233. data/ext/boost/thread/lock_algorithms.hpp +468 -0
  234. data/ext/boost/thread/lock_concepts.hpp +197 -0
  235. data/ext/boost/thread/lock_factories.hpp +78 -0
  236. data/ext/boost/thread/lock_guard.hpp +88 -0
  237. data/ext/boost/thread/lock_options.hpp +31 -0
  238. data/ext/boost/thread/lock_traits.hpp +45 -0
  239. data/ext/boost/thread/lock_types.hpp +1226 -0
  240. data/ext/boost/thread/lockable_adapter.hpp +226 -0
  241. data/ext/boost/thread/lockable_concepts.hpp +157 -0
  242. data/ext/boost/thread/lockable_traits.hpp +207 -0
  243. data/ext/boost/thread/locks.hpp +5 -1816
  244. data/ext/boost/thread/mutex.hpp +33 -1
  245. data/ext/boost/thread/null_mutex.hpp +243 -0
  246. data/ext/boost/thread/once.hpp +10 -1
  247. data/ext/boost/thread/poly_lockable.hpp +68 -0
  248. data/ext/boost/thread/poly_lockable_adapter.hpp +89 -0
  249. data/ext/boost/thread/poly_shared_lockable.hpp +135 -0
  250. data/ext/boost/thread/poly_shared_lockable_adapter.hpp +170 -0
  251. data/ext/boost/thread/pthread/condition_variable.hpp +74 -26
  252. data/ext/boost/thread/pthread/condition_variable_fwd.hpp +54 -27
  253. data/ext/boost/thread/pthread/mutex.hpp +101 -38
  254. data/ext/boost/thread/pthread/once.hpp +459 -44
  255. data/ext/boost/thread/pthread/once_atomic.hpp +313 -0
  256. data/ext/boost/thread/pthread/recursive_mutex.hpp +19 -10
  257. data/ext/boost/thread/pthread/shared_mutex.hpp +226 -61
  258. data/ext/boost/thread/pthread/shared_mutex_assert.hpp +724 -0
  259. data/ext/boost/thread/pthread/thread_data.hpp +53 -50
  260. data/ext/boost/thread/pthread/timespec.hpp +96 -12
  261. data/ext/boost/thread/recursive_mutex.hpp +44 -1
  262. data/ext/boost/thread/reverse_lock.hpp +3 -2
  263. data/ext/boost/thread/scoped_thread.hpp +285 -0
  264. data/ext/boost/thread/shared_lock_guard.hpp +2 -1
  265. data/ext/boost/thread/shared_mutex.hpp +23 -0
  266. data/ext/boost/thread/strict_lock.hpp +235 -0
  267. data/ext/boost/thread/sync_bounded_queue.hpp +594 -0
  268. data/ext/boost/thread/sync_queue.hpp +516 -0
  269. data/ext/boost/thread/synchronized_value.hpp +1001 -0
  270. data/ext/boost/thread/testable_mutex.hpp +148 -0
  271. data/ext/boost/thread/thread.hpp +1 -13
  272. data/ext/boost/thread/thread_functors.hpp +57 -0
  273. data/ext/boost/thread/thread_guard.hpp +46 -0
  274. data/ext/boost/thread/thread_only.hpp +29 -0
  275. data/ext/boost/thread/v2/shared_mutex.hpp +1062 -0
  276. data/ext/boost/thread/v2/thread.hpp +37 -10
  277. data/ext/boost/thread/xtime.hpp +2 -1
  278. data/ext/boost/token_functions.hpp +16 -16
  279. data/ext/boost/type_traits/add_lvalue_reference.hpp +26 -0
  280. data/ext/boost/type_traits/add_reference.hpp +1 -1
  281. data/ext/boost/type_traits/add_rvalue_reference.hpp +4 -4
  282. data/ext/boost/type_traits/aligned_storage.hpp +13 -0
  283. data/ext/boost/type_traits/common_type.hpp +11 -12
  284. data/ext/boost/type_traits/config.hpp +1 -1
  285. data/ext/boost/type_traits/detail/common_type_imp.hpp +1 -1
  286. data/ext/boost/type_traits/detail/has_binary_operator.hpp +1 -1
  287. data/ext/boost/type_traits/detail/is_function_ptr_tester.hpp +1 -1
  288. data/ext/boost/type_traits/has_left_shift.hpp +49 -0
  289. data/ext/boost/type_traits/has_right_shift.hpp +49 -0
  290. data/ext/boost/type_traits/has_trivial_move_assign.hpp +57 -0
  291. data/ext/boost/type_traits/has_trivial_move_constructor.hpp +57 -0
  292. data/ext/boost/type_traits/intrinsics.hpp +18 -2
  293. data/ext/boost/type_traits/is_abstract.hpp +1 -1
  294. data/ext/boost/type_traits/is_array.hpp +1 -1
  295. data/ext/boost/type_traits/is_const.hpp +1 -1
  296. data/ext/boost/type_traits/is_convertible.hpp +78 -17
  297. data/ext/boost/type_traits/is_function.hpp +6 -1
  298. data/ext/boost/type_traits/is_integral.hpp +6 -1
  299. data/ext/boost/type_traits/is_nothrow_move_assignable.hpp +84 -0
  300. data/ext/boost/type_traits/is_nothrow_move_constructible.hpp +84 -0
  301. data/ext/boost/type_traits/is_pod.hpp +3 -1
  302. data/ext/boost/type_traits/is_rvalue_reference.hpp +1 -1
  303. data/ext/boost/type_traits/is_volatile.hpp +1 -1
  304. data/ext/boost/type_traits/make_signed.hpp +153 -0
  305. data/ext/boost/type_traits/make_unsigned.hpp +16 -0
  306. data/ext/boost/type_traits/remove_const.hpp +1 -1
  307. data/ext/boost/type_traits/remove_cv.hpp +1 -1
  308. data/ext/boost/type_traits/remove_reference.hpp +1 -1
  309. data/ext/boost/type_traits/remove_volatile.hpp +1 -1
  310. data/ext/boost/unordered/detail/allocate.hpp +1120 -0
  311. data/ext/boost/unordered/detail/buckets.hpp +876 -0
  312. data/ext/boost/unordered/detail/equivalent.hpp +680 -0
  313. data/ext/boost/unordered/detail/extract_key.hpp +183 -0
  314. data/ext/boost/unordered/detail/fwd.hpp +23 -0
  315. data/ext/boost/unordered/detail/table.hpp +861 -0
  316. data/ext/boost/unordered/detail/unique.hpp +622 -0
  317. data/ext/boost/unordered/detail/util.hpp +260 -0
  318. data/ext/boost/unordered/unordered_map.hpp +1652 -0
  319. data/ext/boost/unordered/unordered_map_fwd.hpp +65 -0
  320. data/ext/boost/unordered/unordered_set.hpp +1549 -0
  321. data/ext/boost/unordered/unordered_set_fwd.hpp +63 -0
  322. data/ext/boost/unordered_map.hpp +18 -0
  323. data/ext/boost/unordered_set.hpp +18 -0
  324. data/ext/boost/utility/addressof.hpp +2 -2
  325. data/ext/boost/utility/result_of.hpp +8 -1
  326. data/ext/boost/version.hpp +2 -2
  327. data/ext/common/Account.h +1 -1
  328. data/ext/common/AccountsDatabase.h +1 -1
  329. data/ext/common/AgentsStarter.cpp +3 -1
  330. data/ext/common/AgentsStarter.h +2 -2
  331. data/ext/common/ApplicationPool2/AppTypes.cpp +24 -6
  332. data/ext/common/ApplicationPool2/AppTypes.h +17 -8
  333. data/ext/common/ApplicationPool2/Common.h +12 -12
  334. data/ext/common/ApplicationPool2/DirectSpawner.h +2 -2
  335. data/ext/common/ApplicationPool2/DummySpawner.h +3 -3
  336. data/ext/common/ApplicationPool2/Group.h +6 -6
  337. data/ext/common/ApplicationPool2/Implementation.cpp +19 -19
  338. data/ext/common/ApplicationPool2/PipeWatcher.h +5 -5
  339. data/ext/common/ApplicationPool2/Pool.h +21 -21
  340. data/ext/common/ApplicationPool2/Process.h +6 -6
  341. data/ext/common/ApplicationPool2/Session.h +1 -1
  342. data/ext/common/ApplicationPool2/SmartSpawner.h +24 -12
  343. data/ext/common/ApplicationPool2/Socket.h +2 -2
  344. data/ext/common/ApplicationPool2/Spawner.h +64 -14
  345. data/ext/common/ApplicationPool2/SpawnerFactory.h +7 -7
  346. data/ext/common/ApplicationPool2/SuperGroup.h +5 -5
  347. data/ext/common/BackgroundEventLoop.cpp +4 -4
  348. data/ext/common/BackgroundEventLoop.h +1 -1
  349. data/ext/common/Constants.h +13 -1
  350. data/ext/common/EventedBufferedInput.h +8 -8
  351. data/ext/common/Exceptions.cpp +71 -0
  352. data/ext/common/Exceptions.h +60 -7
  353. data/ext/common/FileDescriptor.h +4 -4
  354. data/ext/common/MessageClient.h +1 -1
  355. data/ext/common/MessageServer.h +5 -5
  356. data/ext/common/MultiLibeio.cpp +3 -3
  357. data/ext/common/MultiLibeio.h +2 -2
  358. data/ext/common/RandomGenerator.h +11 -11
  359. data/ext/common/ResourceLocator.h +8 -1
  360. data/ext/common/SafeLibev.h +12 -12
  361. data/ext/common/ServerInstanceDir.h +11 -3
  362. data/ext/common/UnionStation.h +10 -10
  363. data/ext/common/Utils.cpp +11 -13
  364. data/ext/common/Utils.h +9 -9
  365. data/ext/common/Utils/BlockingQueue.h +10 -10
  366. data/ext/common/Utils/BufferedIO.h +1 -1
  367. data/ext/common/Utils/CachedFileStat.hpp +2 -2
  368. data/ext/common/Utils/FileChangeChecker.h +1 -1
  369. data/ext/common/Utils/HashMap.h +13 -4
  370. data/ext/common/Utils/IOUtils.cpp +33 -10
  371. data/ext/common/Utils/IniFile.h +3 -3
  372. data/ext/common/Utils/Lock.h +2 -2
  373. data/ext/common/Utils/MessagePassing.h +10 -10
  374. data/ext/common/Utils/ProcessMetricsCollector.h +24 -6
  375. data/ext/common/Utils/ScopeGuard.h +5 -5
  376. data/ext/common/Utils/jsoncpp.cpp +2 -0
  377. data/ext/common/agents/HelperAgent/FileBackedPipe.h +26 -26
  378. data/ext/common/agents/HelperAgent/Main.cpp +18 -18
  379. data/ext/common/agents/HelperAgent/RequestHandler.cpp +4 -4
  380. data/ext/common/agents/HelperAgent/RequestHandler.h +30 -21
  381. data/ext/common/agents/LoggingAgent/AdminController.h +1 -1
  382. data/ext/common/agents/LoggingAgent/FilterSupport.h +13 -11
  383. data/ext/common/agents/LoggingAgent/LoggingServer.h +11 -11
  384. data/ext/common/agents/LoggingAgent/Main.cpp +9 -9
  385. data/ext/common/agents/LoggingAgent/RemoteSender.h +3 -3
  386. data/ext/common/agents/SpawnPreparer.cpp +1 -0
  387. data/ext/common/agents/Watchdog/AgentWatcher.cpp +8 -7
  388. data/ext/common/agents/Watchdog/Main.cpp +81 -73
  389. data/ext/common/agents/Watchdog/ServerInstanceDirToucher.cpp +1 -1
  390. data/ext/libev/Changes +57 -0
  391. data/ext/libev/LICENSE +2 -1
  392. data/ext/libev/Makefile.in +110 -50
  393. data/ext/libev/README +8 -8
  394. data/ext/libev/aclocal.m4 +1503 -861
  395. data/ext/libev/config.guess +290 -304
  396. data/ext/libev/config.sub +77 -198
  397. data/ext/libev/configure +1735 -890
  398. data/ext/libev/configure.ac +3 -2
  399. data/ext/libev/ev++.h +6 -6
  400. data/ext/libev/ev.c +541 -214
  401. data/ext/libev/ev.h +106 -100
  402. data/ext/libev/ev_epoll.c +1 -1
  403. data/ext/libev/ev_kqueue.c +20 -4
  404. data/ext/libev/ev_vars.h +15 -16
  405. data/ext/libev/ev_win32.c +12 -2
  406. data/ext/libev/ev_wrap.h +162 -160
  407. data/ext/libev/event.c +29 -6
  408. data/ext/libev/event.h +9 -2
  409. data/ext/libev/ltmain.sh +2632 -1384
  410. data/ext/nginx/ConfigurationCommands.c +1 -1
  411. data/ext/nginx/ConfigurationCommands.c.erb +3 -1
  412. data/ext/nginx/ContentHandler.c +25 -2
  413. data/ext/nginx/CreateLocationConfig.c +1 -0
  414. data/ext/nginx/CreateLocationConfig.c.erb +1 -1
  415. data/ext/nginx/MergeLocationConfig.c +1 -0
  416. data/ext/nginx/MergeLocationConfig.c.erb +1 -1
  417. data/ext/nginx/config +12 -0
  418. data/ext/oxt/dynamic_thread_group.hpp +7 -4
  419. data/ext/oxt/system_calls.cpp +5 -1
  420. data/ext/oxt/system_calls.hpp +3 -0
  421. data/helper-scripts/node-loader.js +117 -249
  422. data/lib/phusion_passenger.rb +27 -5
  423. data/lib/phusion_passenger/abstract_installer.rb +104 -9
  424. data/lib/phusion_passenger/admin_tools/memory_stats.rb +10 -9
  425. data/lib/phusion_passenger/apache2/config_options.rb +6 -3
  426. data/lib/phusion_passenger/common_library.rb +7 -1
  427. data/lib/phusion_passenger/constants.rb +6 -0
  428. data/lib/phusion_passenger/loader_shared_helpers.rb +7 -4
  429. data/lib/phusion_passenger/nginx/config_options.rb +2 -1
  430. data/lib/phusion_passenger/packaging.rb +3 -0
  431. data/lib/phusion_passenger/platform_info/apache.rb +43 -6
  432. data/lib/phusion_passenger/platform_info/apache_detector.rb +15 -5
  433. data/lib/phusion_passenger/platform_info/compiler.rb +167 -32
  434. data/lib/phusion_passenger/platform_info/cxx_portability.rb +133 -77
  435. data/lib/phusion_passenger/platform_info/depcheck.rb +17 -7
  436. data/lib/phusion_passenger/platform_info/depcheck_specs/apache2.rb +3 -3
  437. data/lib/phusion_passenger/platform_info/depcheck_specs/compiler_toolchain.rb +4 -4
  438. data/lib/phusion_passenger/platform_info/depcheck_specs/ruby.rb +5 -6
  439. data/lib/phusion_passenger/platform_info/linux.rb +2 -1
  440. data/lib/phusion_passenger/platform_info/operating_system.rb +1 -1
  441. data/lib/phusion_passenger/platform_info/ruby.rb +18 -3
  442. data/lib/phusion_passenger/standalone/runtime_installer.rb +6 -2
  443. data/lib/phusion_passenger/standalone/start_command.rb +8 -2
  444. data/lib/phusion_passenger/utils/ansi_colors.rb +9 -0
  445. data/lib/phusion_passenger/utils/hosts_file_parser.rb +4 -2
  446. data/node_lib/phusion_passenger/httplib_emulation.js +141 -0
  447. data/node_lib/phusion_passenger/line_reader.js +154 -0
  448. data/node_lib/phusion_passenger/request_handler.js +65 -0
  449. data/node_lib/phusion_passenger/session_protocol_parser.js +113 -0
  450. data/resources/templates/apache2/deployment_example.txt.erb +2 -1
  451. data/resources/templates/apache2/installing_against_a_different_apache.txt.erb +14 -0
  452. data/resources/templates/apache2/multiple_apache_installations_detected.txt.erb +15 -0
  453. data/resources/templates/apache2/possible_solutions_for_compilation_and_installation_problems.txt.erb +4 -5
  454. data/resources/templates/general_error_with_html.html.template +1 -1
  455. data/resources/templates/installer_common/gem_install_permission_problems.txt.erb +17 -0
  456. data/resources/templates/installer_common/low_amount_of_memory_warning.txt.erb +6 -4
  457. data/resources/templates/installer_common/world_inaccessible_directories.txt.erb +16 -0
  458. data/resources/templates/nginx/deployment_example.txt.erb +2 -1
  459. data/resources/templates/nginx/possible_solutions_for_compilation_and_installation_problems.txt.erb +4 -5
  460. data/resources/templates/standalone/config.erb +1 -0
  461. data/test/cxx/ApplicationPool2/DirectSpawnerTest.cpp +3 -3
  462. data/test/cxx/ApplicationPool2/PoolTest.cpp +4 -4
  463. data/test/cxx/ApplicationPool2/ProcessTest.cpp +5 -5
  464. data/test/cxx/ApplicationPool2/SmartSpawnerTest.cpp +5 -5
  465. data/test/cxx/ApplicationPool2/SpawnerTestCases.cpp +1 -1
  466. data/test/cxx/EventedBufferedInputTest.cpp +6 -6
  467. data/test/cxx/FileBackedPipeTest.cpp +1 -1
  468. data/test/cxx/MessagePassingTest.cpp +1 -1
  469. data/test/cxx/MessageServerTest.cpp +4 -4
  470. data/test/cxx/RequestHandlerTest.cpp +7 -7
  471. data/test/cxx/UnionStationTest.cpp +2 -2
  472. data/test/node/line_reader_spec.js +338 -0
  473. data/test/node/spec_helper.js +27 -0
  474. data/test/ruby/standalone/runtime_installer_spec.rb +2 -1
  475. metadata +131 -22
  476. metadata.gz.asc +7 -7
  477. data/ext/boost/functional/hash/detail/container_fwd_0x.hpp +0 -29
  478. data/ext/boost/lambda/core.hpp +0 -79
  479. data/ext/boost/lambda/detail/actions.hpp +0 -174
  480. data/ext/boost/lambda/detail/arity_code.hpp +0 -110
  481. data/ext/boost/lambda/detail/function_adaptors.hpp +0 -789
  482. data/ext/boost/lambda/detail/is_instance_of.hpp +0 -104
  483. data/ext/boost/lambda/detail/lambda_config.hpp +0 -48
  484. data/ext/boost/lambda/detail/lambda_functor_base.hpp +0 -615
  485. data/ext/boost/lambda/detail/lambda_functors.hpp +0 -324
  486. data/ext/boost/lambda/detail/lambda_fwd.hpp +0 -74
  487. data/ext/boost/lambda/detail/lambda_traits.hpp +0 -578
  488. data/ext/boost/lambda/detail/member_ptr.hpp +0 -737
  489. data/ext/boost/lambda/detail/operator_actions.hpp +0 -139
  490. data/ext/boost/lambda/detail/operator_lambda_func_base.hpp +0 -271
  491. data/ext/boost/lambda/detail/operator_return_type_traits.hpp +0 -917
  492. data/ext/boost/lambda/detail/operators.hpp +0 -370
  493. data/ext/boost/lambda/detail/ret.hpp +0 -325
  494. data/ext/boost/lambda/detail/return_type_traits.hpp +0 -282
  495. data/ext/boost/lambda/detail/select_functions.hpp +0 -74
  496. data/ext/boost/lambda/lambda.hpp +0 -34
@@ -21,6 +21,7 @@ using the command line.
21
21
 
22
22
  include::users_guide_snippets/support_information.txt[]
23
23
 
24
+ [[installation]]
24
25
  == Installation
25
26
 
26
27
  include::users_guide_snippets/installation.txt[]
@@ -806,6 +807,9 @@ passenger_set_cgi_param APP_NAME "my super blog";
806
807
  passenger_set_cgi_param EXTRA_REQUEST_METHOD method=$request_method;
807
808
  ------------------------------
808
809
 
810
+ .Use CGI environment names
811
+ [NOTE]
812
+ ===============================================
809
813
  If you want to set an HTTP header, then you must set it in the CGI environment name
810
814
  format, i.e. 'HTTP_*':
811
815
 
@@ -816,10 +820,38 @@ passenger_set_cgi_param X-Forwarded-For 127.0.0.2;
816
820
  # Instead, write it like this:
817
821
  passenger_set_cgi_param HTTP_X_FORWARDED_FOR 127.0.0.2;
818
822
  ------------------------------
823
+ ===============================================
824
+
825
+ .This configuration option is NOT inherited across contexts
826
+ [WARNING]
827
+ ===============================================
828
+ In each new context (e.g. in each new 'location' block), you must re-specify `passenger_set_cgi_param`. Values set in parent contexts have no effect on subcontexts. For example:
829
+
830
+ ------------------------------
831
+ server {
832
+ ...
833
+ passenger_set_cgi_param FOO foo;
834
+
835
+ location /users {
836
+ passenger_enabled_on;
837
+ # !!!THIS IS WRONG!!! The 'FOO' CGI variable will not
838
+ # be passed URLs beginning with /users because you didn't
839
+ # re-specify passenger_set_cgi_param.
840
+ }
841
+
842
+ location /apps {
843
+ passenger_enabled on;
844
+ # This is correct. Here we re-specify passenger_set_cgi_param,
845
+ # so the 'FOO' CGI variable will be correctly passed to URLs
846
+ # starting with /apps.
847
+ passenger_set_cgi_param FOO foo;
848
+ }
849
+ }
850
+ ------------------------------
851
+ ===============================================
819
852
 
820
853
  This option may occur in the following places:
821
854
 
822
- * In the 'http' configuration block.
823
855
  * In a 'server' configuration block.
824
856
  * In a 'location' configuration block.
825
857
  * In an 'if' configuration scope.
@@ -1733,6 +1765,20 @@ compatibility reasons.
1733
1765
  Deprecated in favor of <<PassengerSpawnMethod,passenger_spawn_method>>.
1734
1766
 
1735
1767
 
1768
+ [[troubleshooting]]
1769
+ == Troubleshooting ==
1770
+
1771
+ include::users_guide_snippets/troubleshooting/default.txt[]
1772
+
1773
+ === The application thinks its not on SSL even though it is
1774
+
1775
+ Rails and many other frameworks infers whether it's running on SSL through the CGI
1776
+ environment variable `HTTPS`. This variable is *only* set if you set `ssl on`.
1777
+ Setting just `listen 443 ssl` is not enough.
1778
+
1779
+ include::users_guide_snippets/troubleshooting/rails.txt[]
1780
+
1781
+
1736
1782
  == Analysis and system maintenance ==
1737
1783
 
1738
1784
  include::users_guide_snippets/analysis_and_system_maintenance.txt[]
@@ -1792,4 +1838,7 @@ include::users_guide_snippets/appendix_b_terminology.txt[]
1792
1838
 
1793
1839
  include::users_guide_snippets/appendix_c_spawning_methods.txt[]
1794
1840
 
1841
+ [[about_environment_variables]]
1842
+ == Appendix D: About environment variables
1843
+
1795
1844
  include::users_guide_snippets/environment_variables.txt[]
@@ -20,5 +20,79 @@
20
20
 
21
21
  2. Installation => installation-2vrmef
22
22
 
23
+ 2.1. Synopsis => synopsis-92sr34
24
+
25
+ 2.2. Installing or upgrading on Mac OS X with Homebrew => installing-or-upgrading-on-mac-os-x-with-homebrew-fxjdi1
26
+
27
+ 2.3. Installing or upgrading on Debian or Ubuntu => installing-or-upgrading-on-debian-or-ubuntu-gme2a9
28
+
29
+ 2.3.1. Adding our APT repository => adding-our-apt-repository-1qu2se8
30
+
31
+ 2.3.2. Installing packages => installing-packages-k1zxbg
32
+
33
+ 2.4. Installing or upgrading on Red Hat, Fedora, CentOS or ScientificLinux => installing-or-upgrading-on-red-hat-fedora-centos-or-scientificlinux-16cek45
34
+
35
+ 2.5. Generic installation, upgrade and downgrade method: via RubyGems => generic-installation-upgrade-and-downgrade-method-via-rubygems-1229ugi
36
+
37
+ 2.6. Generic installation, upgrade and downgrade method: via tarball => generic-installation-upgrade-and-downgrade-method-via-tarball-1rwvasy
38
+
39
+ 2.7. Upgrading from open source to Enterprise => upgrading-from-open-source-to-enterprise-1kezors
40
+
41
+ 2.8. Cryptographic verification of installation files => cryptographic-verification-of-installation-files-85nwoi
42
+
43
+ 2.8.1. Synopsis => synopsis-1ij8j9r
44
+
45
+ 2.8.2. Importing the Phusion Software Signing key => importing-the-phusion-software-signing-key-1u5hkcr
46
+
47
+ 2.8.3. Verifying the Phusion Software Signing key => verifying-the-phusion-software-signing-key-qor1n1
48
+
49
+ 2.8.4. Verifying the gem and tarball => verifying-the-gem-and-tarball-i7tj7a
50
+
51
+ 2.8.5. Verifying Git signatures => verifying-git-signatures-dltpan
52
+
53
+ 2.8.6. Verifying DEB and RPM packages => verifying-deb-and-rpm-packages-uga0ho
54
+
55
+ 2.8.7. Revocation => revocation-ukzeg9
56
+
57
+ 2.9. Customizing the compilation process => customizing-the-compilation-process-j4xj2t
58
+
59
+ 2.9.1. Setting the compiler => setting-the-compiler-1fxfulc
60
+
61
+ 2.9.2. Adding additional compiler or linker flags => adding-additional-compiler-or-linker-flags-nxfour
62
+
63
+ 2.9.3. Forcing location of command line tools and dependencies => forcing-location-of-command-line-tools-and-dependencies-xajpg1
64
+
65
+ 2.10. Uninstalling => uninstalling-3hpprb
66
+
67
+ 2.11. Moving to a different directory => moving-to-a-different-directory-b3lpy1
68
+
23
69
  3. Usage => usage-1eyt33o
24
70
 
71
+ 4. Troubleshooting => troubleshooting-o7g75o
72
+
73
+ 4.1. Generic troubleshooting tips => generic-troubleshooting-tips-2vokcr
74
+
75
+ 4.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
76
+
77
+ 5. Appendix: About environment variables => appendix-about-environment-variables-1ct91x3
78
+
79
+ 5.1. Working with environment variables => working-with-environment-variables-11cmwlv
80
+
81
+ 5.2. The PATH environment variable => the-path-environment-variable-yzfn3k
82
+
83
+ 5.2.1. Adding Phusion Passenger’s administration tools to PATH => adding-phusion-passenger-s-administration-tools-to-path-d7k5mh
84
+
85
+ 5.3. Making environment variables permanent => making-environment-variables-permanent-mkq46d
86
+
87
+ 5.3.1. bash => bash-hmcscc
88
+
89
+ 5.3.2. Apache => apache-15y3bm0
90
+
91
+ 5.3.3. Nginx => nginx-uarf27
92
+
93
+ 5.3.4. cron => cron-6272ar
94
+
95
+ 5.3.5. Phusion Passenger-served apps => phusion-passenger-served-apps-127wbl2
96
+
97
+ 5.4. Environment variables and sudo => environment-variables-and-sudo-znzmif
98
+
@@ -1,4 +1,4 @@
1
- = Phusion Passenger Standalone users guide =
1
+ = Phusion Passenger Standalone users guide
2
2
 
3
3
  image:images/phusion_banner.png[link="http://www.phusion.nl/"]
4
4
 
@@ -16,17 +16,19 @@ Here are some of the highlights:
16
16
  resource management for you. Crashing application processes are automatically restarted.
17
17
  - Can listen on a Unix socket, for use in reverse proxy setups.
18
18
 
19
- == Support information ==
19
+
20
+ == Support information
20
21
 
21
22
  include::users_guide_snippets/support_information.txt[]
22
23
 
23
- == Installation ==
24
24
 
25
- ------------------------------
26
- gem install passenger
27
- ------------------------------
25
+ [[installation]]
26
+ == Installation
27
+
28
+ include::users_guide_snippets/installation.txt[]
29
+
28
30
 
29
- == Usage ==
31
+ == Usage
30
32
 
31
33
  Go to your application's root directory, and run:
32
34
 
@@ -38,7 +40,18 @@ This will start Phusion Passenger on port 3000. If you want to run it on a diffe
38
40
  use the `-p` option, e.g.:
39
41
 
40
42
  ------------------------------
41
- sudo passenger start -p 80
43
+ passenger start -p 8000
42
44
  ------------------------------
43
45
 
44
- See `--help` for all available options.
46
+ See `--help` for all available options.
47
+
48
+
49
+ [[troubleshooting]]
50
+ == Troubleshooting
51
+
52
+ include::users_guide_snippets/troubleshooting/default.txt[]
53
+
54
+ [[about_environment_variables]]
55
+ == Appendix: About environment variables
56
+
57
+ include::users_guide_snippets/environment_variables.txt[]
@@ -0,0 +1,51 @@
1
+ Phusion Passenger users guide index
2
+ ===================================
3
+
4
+ image:images/phusion_banner.png[link="http://www.phusion.nl/"]
5
+
6
+ link:https://www.phusionpassenger.com/[Phusion Passenger] is a web server and application server, designed to be fast, robust and lightweight. It runs your web apps with the least amount of hassle by taking care of almost all administrative heavy lifting for you. Advanced administration tools allow you to gain deep insight into your web applications' operations and to keep your servers healthy. Phusion Passenger is polyglot by design, and currently supports Ruby (Rack), Python (WSGI) and Node.js.
7
+
8
+ Phusion Passenger has several integration modes, each mode with its own documentation, covering *installation*, *usage*, *troubleshooting* and more.
9
+
10
+ [[overview]]
11
+ == Overview
12
+
13
+ === Nginx integration mode
14
+
15
+ In this mode, Phusion Passenger integrates directly into Nginx as an Nginx module. You operate Phusion Passenger mostly through Nginx and through Nginx configuration files. The Nginx integration mode is, along with the Standalone mode, highly optimized for performance.
16
+
17
+ link:Users%20Guide%20Nginx.html[**Read the documentation for the Nginx integration mode >>**]
18
+
19
+ === Apache integration mode
20
+
21
+ In this mode, Phusion Passenger integrates directly into Apache as an Apache module. You operate Phusion Passenger mostly through Apache and through Apache configuration files.
22
+
23
+ link:Users%20Guide%20Apache.html[**Read the documentation for the Apache integration mode >>**]
24
+
25
+ === Standalone mode
26
+
27
+ In this mode, Phusion Passenger operates as a fully-featured, secure standalone HTTP server. You do not need to have an existing web server like Apache or Nginx. This mode is ideal...
28
+
29
+ * ...if you are not familiar with Apache or Nginx
30
+ * ...when you want to quickly start up a server without editing configuration files (e.g. during development)
31
+ * ...or when you want to decouple the web server from the application server, by setting up reverse proxies.
32
+
33
+ Along with the Nginx mode, the Standalone mode is highly optimized for performance.
34
+
35
+ link:Users%20Guide%20Standalone.html[**Read the documentation for the Standalone mode >>**]
36
+
37
+ [[installation]]
38
+ == Installation and upgrade
39
+
40
+ Please refer to:
41
+
42
+ * link:Users%20Guide%20Nginx.html#installation[**Nginx** mode installation & upgrade]
43
+ * link:Users%20Guide%20Apache.html#installation[**Apache** mode installation & upgrade]
44
+ * link:Users%20Guide%20Standalone.html#installation[**Standalone** mode installation & upgrade]
45
+
46
+ [[support]]
47
+ == Where to get support
48
+
49
+ include::users_guide_snippets/where_to_get_support.txt[]
50
+
51
+ include::users_guide_snippets/appendix_a_about.txt[]
@@ -1,6 +1,3 @@
1
- [[about_environment_variables]]
2
- == Appendix D: About environment variables
3
-
4
1
  The Phusion Passenger compilation process can be customized with environment variables.
5
2
 
6
3
  Environment variables are named values that affect how the system works. For example they tell the system where to look for commands (the `PATH` variable) or where to look for libraries (`LD_LIBRARY_PATH`). Their names are often in all-uppercase. Sometimes people refer to an environment variable with a dollar sign `$` in front, but that's the same thing: when people say "the $PATH environment variable" they mean "the PATH environment variable". This is because the dollar sign `$` is a shell syntax for refering to an environment variable, as you will learn later.
@@ -1,346 +1,57 @@
1
1
  === Synopsis
2
2
 
3
- The Phusion Passenger installation process consists of two steps:
4
-
5
- 1. The *obtainment step*, where you download the Phusion Passenger files puts them somewhere on your system. This can be done through downloading the source tarball, installing the Ruby gem or installing a native OS package via APT or YUM.
6
- 2. The *integration step*, where you configure Phusion Passenger so that it works properly with other system components such as Apache, Nginx, Ruby, Python, etc.
7
-
8
- Because Phusion Passenger is designed to run in a wide variety of operating systems and configurations, both steps can be done in multiple ways. Most users -- especially first-time users -- will be satisfied with the _generic installation instructions_ which covers both steps. However some users may prefer _OS-specific installation instructions_, which allow Phusion Passenger to better integrate into the operating system. Better integration is characterized by following OS-specific conventions.
9
-
10
- If you are not familiar with system administration and do not understand all the choices, then we recommend you to go with the <<rubygems_generic_install,RubyGems generic installation method>> (if you're a Ruby user) or the <<tarball_generic_install,tarball generic installation method>> (if you're not a Ruby user).
3
+ Because Phusion Passenger is designed to run in a wide variety of operating systems and configurations, there are multiple ways to install it. Most users -- especially first-time users -- will prefer _OS-specific installation instructions_. These are not only the easiest, but also allow Phusion Passenger to integrate into the operating system in the best way possible. Other users should consult the _generic installation instructions_.
11
4
 
12
5
  The steps for upgrading or downgrading Phusion Passenger is almost the same as the steps for installing. All the installation guides in this section will also teach you how to upgrade and downgrade.
13
6
 
14
7
 
15
- [[rubygems_generic_install]]
16
- === Generic installation, upgrade and downgrade method: via RubyGems
17
-
18
- RubyGems is only used as a method to obtain the Phusion Passenger files, so in case you have multiple Ruby versions it does not matter which Ruby's RubyGems you use for installation. Once installed, Phusion Passenger can work with all other Ruby versions on your system. This is explained in <<relationship_with_ruby,Phusion Passenger and its relationship with Ruby>>.
19
-
20
- [[is_ruby_home_or_system_wide_installed]]
21
- [float]
22
- ==== Step 1: figuring out whether your Ruby is installed the home directory or system-wide
23
-
24
- Ruby may either be installed in the home directory, or system-wide. If it's installed system-wide then we will want to install gems system-wide as well, so you need to switch to a root prompt first. If Ruby is installed in the home directory then we will want to install gems to the home directory as well, as a normal user.
25
-
26
- To find out which case applies, run the following command to find out where the `ruby` command is:
27
-
28
- --------------
29
- which ruby
30
- --------------
31
-
32
- Do you see a filename that references '/home' or '/Users'? If so then your Ruby interpreter is installed in your home directory and you can proceed to step 2. Otherwise, you need to switch to a root prompt by running one of the following commands:
33
-
34
- * Are you using RVM? Run `rvmsudo -s`
35
- * Are you not using RVM, or do you not know what RVM is? Run `sudo -s`
36
- * Is 'sudo' not installed on your system? Run `su -c bash`
37
-
38
- You must maintain this root prompt throughout this installation guide.
39
-
40
- [float]
41
- ==== Step 2: install the gem
42
-
43
- .Open Source
44
-
45
- Install the latest gem to obtain the files for the latest stable version of the open source Phusion Passenger:
46
-
47
- ----------------------
48
- gem install passenger
49
- ----------------------
50
-
51
- Sometimes you will want to obtain the latest beta version of Phusion Passenger. Beta versions are not normally selected by `gem install`, so to opt-in for beta versions you have to add the `--pre` argument:
52
-
53
- -----------------------------------
54
- gem install passenger --pre
55
- -----------------------------------
56
-
57
- If you want to obtain a specific version of Phusion Passenger, e.g. because you are downgrading, then specify the version number with `--version`:
58
-
59
- -----------------------------------
60
- gem install passenger --version 3.0.0
61
- -----------------------------------
62
-
63
- If you want to obtain a specific *beta* version of Phusion Passenger then you must also pass `--pre`:
64
-
65
- ----------------------------------------------------
66
- gem install passenger --version 3.9.1.beta --pre
67
- ----------------------------------------------------
68
-
69
- .Enterprise
70
-
71
- First, download the *license key* from the link:https://www.phusionpassenger.com/orders[Customer Area] and save it as '/etc/passenger-enterprise-license'.
72
-
73
- Next, add the Phusion Passenger Enterprise gem server to your RubyGems source list:
74
-
75
- ------------------------------------------
76
- gem source --add https://YOUR_ORDER_REFERENCE:YOUR_PASSWORD@www.phusionpassenger.com/enterprise_gems/
77
- ------------------------------------------
78
-
79
- Substitute 'YOUR_ORDER_REFERENCE' and 'YOUR_PASSWORD' with your link:https://www.phusionpassenger.com/orders[Customer Area] login credentials. And notice the **trailing slash** in the URL! It is very important.
80
-
81
- Finally, install the latest gem to obtain the files for the latest stable version of the open source Phusion Passenger:
82
-
83
- ----------------------
84
- gem install passenger-enterprise-server
85
- ----------------------
86
-
87
- Sometimes you will want to obtain the latest beta version of Phusion Passenger Enterprise. Beta versions are not normally selected by `gem install`, so to opt-in for beta versions you have to add the `--pre` argument:
88
-
89
- -----------------------------------
90
- gem install passenger-enterprise-server --pre
91
- -----------------------------------
92
-
93
- If you want to obtain a specific version of Phusion Passenger Enterprise, e.g. because you are downgrading, then specify the version number with `--version`:
94
-
95
- -----------------------------------
96
- gem install passenger-enterprise-server --version 3.0.0
97
- -----------------------------------
98
-
99
- If you want to obtain a specific *beta* version of Phusion Passenger then you must also pass `--pre`:
100
-
101
- ----------------------------------------------------
102
- gem install passenger-enterprise-server --version 3.9.1.beta --pre
103
- ----------------------------------------------------
104
-
105
- [float]
106
- ==== Step 3: loosen permissions
107
-
108
- If in step 1 you determined that your Ruby interpreter is installed in your home directory, then you need to make sure that the Phusion Passenger gem directory is accessible by your web server. To do that, you must ensure that the Phusion Passenger gem directory, as well as all parent directories, have the world-executable permission.
109
-
110
- To find out where the Phusion Passenger gem directory is, run:
111
-
112
- -------------------------
113
- passenger-config --root
114
- -------------------------
115
-
116
- Suppose that the above command outputs '/home/phusion/.rvm/gems/ruby-1.9.3-p362/gems/passenger-x.x.x'. Then you `chmod o+x` the directory itself and all parent directories up until '/home/phusion':
117
-
118
- -------------------------
119
- chmod o+x /home/phusion/.rvm/gems/ruby-1.9.3-p362/gems/passenger-x.x.x
120
- chmod o+x /home/phusion/.rvm/gems/ruby-1.9.3-p362/gems
121
- chmod o+x /home/phusion/.rvm/gems/ruby-1.9.3-p362
122
- chmod o+x /home/phusion/.rvm/gems
123
- chmod o+x /home/phusion/.rvm
124
- chmod o+x /home/phusion
125
- -------------------------
126
-
127
- [[run_passenger_installer]]
128
- [float]
129
- ==== Step 4: run the Phusion Passenger installer
130
-
131
- ifdef::apache[]
132
- The Phusion Passenger gem only contains source files. In this step we will use the installer to compile the Phusion Passenger binaries, which include the various Phusion Passenger agent executables and the Phusion Passenger Apache module.
133
-
134
- Run the following command and follow the on-screen instructions.
135
-
136
- ----------------------------------
137
- passenger-install-apache2-module
138
- ----------------------------------
139
-
140
- At the end of the installation process, you will be asked to copy and paste a configuration snippet (containing `LoadModule`, `PassengerRoot`, etc.) into your Apache configuration file. If you're upgrading, then you already had a similar configuration snippet. Be sure to remove the old one before pasting the new one.
141
-
142
- Different operating systems and Apache installations have different conventions with regard to where the Apache configuration file is and how it is organized. Please read <<working_with_apache_conf,Working with the Apache configuration file>> if you're not familiar with it. That section is especially of interest for OS X Server >= 10.8 users because the configuration file may not be at a surprising location.
143
-
144
- If compilation doesn't succeed, then please consult the <<troubleshooting,Troubleshooting>> section.
145
-
146
- .What does the installer do?
147
-
148
- Despite the name, this "installer" doesn't actually install anything. The installer checks whether all required dependencies are installed, invokes the compiler, and tells you how to modify the Apache
149
- configuration file. However, it doesn't copy any files to outside the Phusion Passenger source directory.
8
+ [[install_osx_homebrew]]
9
+ === Installing or upgrading on Mac OS X with Homebrew
150
10
 
151
- `passenger-install-apache2-module` is actually just a user-friendly frontend around the command `rake apache2`, which performs the actual compilation of Phusion Passenger.
152
- endif::[]
11
+ **Open source**::
12
+ Every time we release a new Phusion Passenger version, we make it available through link:http://brew.sh/[Homebrew]. Please note that the Homebrew maintainers have to merge our pull requests manually, so it may take a day or two before a new version shows up in the official Homebrew repository.
13
+ +
14
+ 1. Update the Homebrew recipes:
15
+ +
16
+ ---------------------------
17
+ brew update
18
+ ---------------------------
19
+ 2. Run one of the following, and follow the instructions:
20
+ +
153
21
  ifdef::nginx[]
154
- Nginx is a different from other web servers in that it does not support loadable modules. The only way to extend Nginx is to recompile it entirely from source. Since Phusion Passenger consists of some external executables plus an Nginx module, you must recompile Nginx when first installing Phusion Passenger, but also when upgrading Nginx itself or when upgrading the Phusion Passenger version.
155
-
156
- Recompiling Nginx and the Phusion Passenger executables is what we will do in this step. The good news is that Phusion Passenger provides a tool to make this easy for you.
157
-
158
- If you've already installed Nginx before, but without Phusion Passenger support, then you *should* uninstall it first. You don't have to, because you can also install another Nginx with Phusion Passenger support, in parallel to the existing Nginx. We merely recommend uninstalling the existing in order to avoid user confusion, but the choice is yours.
159
-
160
- If you had previously installed Nginx with Phusion Passenger support, and you are upgrading, then you don't have to uninstall your existing Nginx first. Instead we'll overwrite it this step. But it is important that you recompile Nginx with the configure parameters that you used last time.
161
-
162
- Here's how you can uninstall the original Nginx:
163
-
164
- - If you installed the existing Nginx through APT, run: `sudo apt-get remove nginx nginx-full nginx-light nginx-naxsi nginx-common`
165
- - If you installed the existing Nginx through YUM, run `yum remove nginx` as root.
166
-
167
- To proceed with installing or upgrading Phusion Passenger, run the Phusion Passenger Nginx installer and follow the on-screen instructions:
168
-
169
- ----------------------------------
170
- passenger-install-nginx-module
171
- ----------------------------------
172
-
173
- At some point it will ask you which prefix to install Nginx to. If you're upgrading, then specify the same prefix that you used last time, as well as the same configuration parameters that you used last time.
174
- endif::[]
175
-
176
- [float]
177
- ==== Step 5: Restarting the Flying Passenger daemon
178
-
179
- If you are using <<flying_passenger,Flying Passenger>> then you must restart the Flying Passenger daemon by sending it the SIGTERM signal:
180
-
181
- -------------------------------
182
- kill `cat /path-to/flying-passenger.pid`
183
- -------------------------------
184
-
185
- Or, if Flying Passenger is not running with a PID file, look up its PID us `ps` and then send it SIGTERM:
186
-
187
- -------------------------------
188
- ps auxw | grep flying-passenger
189
- kill PID_OF_FLYING_PASSENGER
190
- -------------------------------
191
-
192
- [[verify_passenger_running]]
193
- [float]
194
- ==== Step 6: Verifying that Phusion Passenger is running
195
-
196
- Restart your web server and run:
197
-
198
22
  ---------------------------
199
- passenger-memory-stats
23
+ brew install passenger nginx --with-passenger
24
+ -OR-
25
+ brew upgrade passenger nginx --with-passenger
200
26
  ---------------------------
27
+ +
28
+ .Upgrade note
29
+ [NOTE]
30
+ =======================================
31
+ If Phusion Passenger has been updated, but no new Nginx version has been released, then you must also reinstall Nginx against the latest version of Phusion Passenger:
201
32
 
202
- You should see the web server processes as well as a number of Phusion Passenger processes (e.g. PassengerWatchdog, PassengerHelperAgent). Congratulations, Phusion Passenger is now installed and running!
203
- ifdef::nginx[]
204
- At this point you may be interested in <<nginx_init_script,creating an Nginx init script>>.
33
+ ---------------------------
34
+ brew reinstall nginx --with-passenger
35
+ ---------------------------
36
+ =======================================
205
37
  endif::[]
206
-
207
- If the output is not as expected, then please refer to the <<troubleshooting,Troubleshooting>> section.
208
-
209
-
210
- [[tarball_generic_install]]
211
- === Generic installation, upgrade and downgrade method: via tarball
212
-
213
- [float]
214
- ==== Step 1: download and extract the tarball
215
-
216
- Download the open source Phusion Passenger tarball from link:https://www.phusionpassenger.com/download#open_source[the Phusion Passenger website]. Older versions can be found on link:https://www.phusionpassenger.com/file_releases[the release archive].
217
-
218
- If you a link:https://www.phusionpassenger.com/enterprise[Phusion Passenger Enterprise] customer, download the Phusion Passenger Enterprise tarball from the link:https://www.phusionpassenger.com/orders[Customer Area]. Also be sure to download the *license key* and save it as '/etc/passenger-enterprise-license'.
219
-
220
- Once you have downloaded the tarball, pick a location to extract it to. You can pick any location. A good location is '/opt/passenger'. Let's call this location `$PREFIX`. Create this directory and extract the tarball as follows:
221
-
222
- --------------------------------------------------
223
- mkdir $PREFIX
224
- cd $PREFIX
225
- tar xzvf /location-to/passenger-x.x.x.tar.gz
226
- cd $PREFIX/passenger-x.x.x
227
- --------------------------------------------------
228
-
229
- Note that `passenger-x.x.x` should be `passenger-enterprise-server-x.x.x` if you're using Phusion Passenger Enterprise.
230
-
231
- [float]
232
- ==== Step 2: loosen permissions
233
-
234
- The Phusion Passenger directory must be accessible by the web server and by any web apps you want to run. To do that, you must ensure that the Phusion Passenger gem directory, as well as all parent directories, have the world-executable permission.
235
-
236
- Suppose that the Phusion Passenger directory is '/opt/passenger/passenger-4.0.0'. Run `chmod o+x` on the directory itself and all parent directories.
237
-
238
- -------------------------
239
- chmod o+x /opt/passenger/passenger-4.0.0
240
- chmod o+x /opt/passenger
241
- chmod o+x /opt
242
- -------------------------
243
-
244
- [float]
245
- ==== Step 3: installing Ruby and Rake
246
-
247
- Phusion Passenger supports multiple languages and its core is written in C++, but its installer and administration tools are written in Ruby, so you must install that.
248
-
249
- Even though Ruby is required, Ruby will normally not be loaded during normal operation unless you deploy a Ruby web application on Phusion Passenger. Phusion Passenger's dependency on Ruby is very minimal. See <<relationship_with_ruby,Phusion Passenger and its relationship with Ruby>> for details.
250
-
251
- Run `ruby --version` and `rake --version` to find out whether both commands are already installed and recent enough. Phusion Passenger requires Ruby >= 1.8.6. Any Rake version will do.
252
-
253
- .Debian 6
254
-
255
- We recommend you to use link:http://wiki.brightbox.co.uk/docs:phusion-passenger[the Brightbox Ruby packages]. They provide more up-to-date versions of Ruby than Debian's official repositories provide. Their Ubuntu Lucid repository is compatible with Debian 6. If you do not want to use the Brightbox repository, then follow the instructions for Debian 5.
256
-
257
- Add the Brightbox repository and install the Bright APT public key:
258
-
259
- -----------------------------
260
- echo deb http://ppa.launchpad.net/brightbox/ruby-ng/ubuntu lucid main | sudo tee /etc/apt/sources.list.d/brightbox-source.list
261
- sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C3173AA6
262
- -----------------------------
263
-
264
- Then install Ruby and Rake:
265
-
266
- -----------------------------
267
- sudo apt-get update
268
- sudo apt-get install ruby1.9.3
269
- sudo gem install rake
270
- -----------------------------
271
-
272
- .Debian 5
273
-
274
- Run:
275
-
276
- -----------------------------
277
- sudo apt-get update
278
- sudo apt-get install ruby rake
279
- -----------------------------
280
-
281
- Then <<add_rubygems_bin_dir_to_path,add the RubyGems bin directory to your $PATH>>.
282
-
283
- .Ubuntu
284
-
285
- We recommend you to use link:http://wiki.brightbox.co.uk/docs:phusion-passenger[the Brightbox Ruby packages]. They provide more up-to-date versions of Ruby than Ubuntu's official repositories provide. Add the Brightbox repository as follows:
286
-
287
- -----------------------------
288
- sudo apt-add-repository ppa:brightbox/passenger
289
- sudo apt-get update
290
- -----------------------------
291
-
292
- Then install Ruby and Rake:
293
-
294
- -----------------------------
295
- sudo apt-get update
296
- sudo apt-get install ruby1.9.3
297
- sudo gem install rake
298
- -----------------------------
299
-
300
- .Other operating systems
301
-
302
- Please install Ruby from link:http://www.ruby-lang.org/[the Ruby website]. Once Ruby is installed, run the following command (<<is_ruby_home_or_system_wide_installed,possibly as root>>) to install Rake:
303
-
304
- -----------------------
305
- gem install rake
306
- -----------------------
307
-
308
- [float]
309
- ==== Step 4: figuring out whether your Ruby is installed the home directory or system-wide
310
-
311
- Depending on whether you installed Ruby system-wide, you need to enter a root prompt before continuing to step 5. Please refer to <<is_ruby_home_or_system_wide_installed,this section>>.
312
-
313
- [float]
314
- ==== Step 5: run the Phusion Passenger installer
315
-
316
- Please refer to <<run_passenger_installer,this section>>.
317
38
  ifdef::apache[]
318
- Note that the `passenger-install-apache2-module` command is inside the 'bin' subdirectory of the Phusion Passenger source directory, so you would have to run something like '/opt/passenger/passenger-x.x.x/bin/passenger-install-apache2-module'.
39
+ ---------------------------
40
+ brew install passenger
41
+ -OR-
42
+ brew upgrade passenger
43
+ ---------------------------
319
44
  endif::[]
320
- ifdef::nginx[]
321
- Note that the `passenger-install-nginx-module` command is inside the 'bin' subdirectory of the Phusion Passenger source directory, so you would have to run something like '/opt/passenger/passenger-x.x.x/bin/passenger-install-nginx-module'.
45
+ ifdef::standalone[]
46
+ ---------------------------
47
+ brew install passenger
48
+ -OR-
49
+ brew upgrade passenger
50
+ ---------------------------
322
51
  endif::[]
323
52
 
324
- [float]
325
- ==== Step 6: Restarting the Flying Passenger daemon
326
-
327
- If you are using <<flying_passenger,Flying Passenger>> then you must restart the Flying Passenger daemon by sending it the SIGTERM signal:
328
-
329
- -------------------------------
330
- kill `cat /path-to/flying-passenger.pid`
331
- -------------------------------
332
-
333
- Or, if Flying Passenger is not running with a PID file, look up its PID us `ps` and then send it SIGTERM:
334
-
335
- -------------------------------
336
- ps auxw | grep flying-passenger
337
- kill PID_OF_FLYING_PASSENGER
338
- -------------------------------
339
-
340
- [float]
341
- ==== Step 7: Verifying that Phusion Passenger is running
342
-
343
- Please refer to <<verify_passenger_running,this section>>. Note that all Phusion Passenger administration scripts are located inside the 'bin' subdirectory of the Phusion Passenger source directory, so you would have to run something like '/opt/passenger/passenger-x.x.x/bin/passenger-memory-stats'.
53
+ **Enterprise**::
54
+ link:https://www.phusionpassenger.com/enterprise[Phusion Passenger Enterprise] is currently not available through Homebrew. Please try one of the other installation methods instead.
344
55
 
345
56
 
346
57
  [[install_on_debian_ubuntu]]
@@ -357,8 +68,7 @@ Packages are available for the x86 and x86_64 architectures. Our policy is to su
357
68
  Packages are signed by "Phusion Automated Software Signing (auto-software-signing@phusion.nl)", fingerprint 1637 8A33 A6EF 1676 2922 526E 561F 9B9C AC40 B2F7. Install our PGP key:
358
69
 
359
70
  --------------------------------------------------------------
360
- gpg --keyserver keyserver.ubuntu.com --recv-keys 561F9B9CAC40B2F7
361
- gpg --armor --export 561F9B9CAC40B2F7 | sudo apt-key add -
71
+ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 561F9B9CAC40B2F7
362
72
  --------------------------------------------------------------
363
73
 
364
74
  Our APT repository is stored on an HTTPS server so you may need to add HTTPS support for APT:
@@ -374,7 +84,7 @@ Phusion Passenger open source:
374
84
  --------------------------------------------------------------
375
85
  deb https://oss-binaries.phusionpassenger.com/apt/passenger lucid main
376
86
  deb https://oss-binaries.phusionpassenger.com/apt/passenger precise main
377
- deb https://oss-binaries.phusionpassenger.com/apt/passenger raring main
87
+ deb https://oss-binaries.phusionpassenger.com/apt/passenger saucy main
378
88
  deb https://oss-binaries.phusionpassenger.com/apt/passenger squeeze main
379
89
  deb https://oss-binaries.phusionpassenger.com/apt/passenger wheezy main
380
90
  --------------------------------------------------------------
@@ -384,7 +94,7 @@ Phusion Passenger Enterprise:
384
94
  --------------------------------------------------------------
385
95
  deb https://YOUR_ORDER_REFERENCE:YOUR_PASSWORD@www.phusionpassenger.com/enterprise_apt lucid main
386
96
  deb https://YOUR_ORDER_REFERENCE:YOUR_PASSWORD@www.phusionpassenger.com/enterprise_apt precise main
387
- deb https://YOUR_ORDER_REFERENCE:YOUR_PASSWORD@www.phusionpassenger.com/enterprise_apt raring main
97
+ deb https://YOUR_ORDER_REFERENCE:YOUR_PASSWORD@www.phusionpassenger.com/enterprise_apt saucy main
388
98
  deb https://YOUR_ORDER_REFERENCE:YOUR_PASSWORD@www.phusionpassenger.com/enterprise_apt squeeze main
389
99
  deb https://YOUR_ORDER_REFERENCE:YOUR_PASSWORD@www.phusionpassenger.com/enterprise_apt wheezy main
390
100
  --------------------------------------------------------------
@@ -401,51 +111,58 @@ sudo apt-get update
401
111
 
402
112
  ==== Installing packages
403
113
 
404
- .Open source
405
-
406
- To install Phusion Passenger for Nginx:
407
-
114
+ **Open source**::
115
+ +
116
+ ifdef::nginx[]
117
+ 1. Install the packages:
118
+ +
408
119
  --------------------------------------------------------------
409
120
  sudo apt-get install nginx-full passenger
410
121
  --------------------------------------------------------------
411
-
412
- Then edit `/etc/nginx/nginx.conf`, and uncomment `passenger_root` and `passenger_ruby`. Finally, run `sudo service nginx restart`.
413
-
414
- To install Phusion Passenger for Apache:
415
-
122
+ 2. Edit `/etc/nginx/nginx.conf` and uncomment `passenger_root` and `passenger_ruby`.
123
+ 3. Restart Nginx:
124
+ +
125
+ --------------------------------------------------------------
126
+ sudo service nginx restart
127
+ --------------------------------------------------------------
128
+ endif::[]
129
+ ifdef::apache[]
416
130
  --------------------------------------------------------------
417
131
  sudo apt-get install libapache2-mod-passenger
418
132
  --------------------------------------------------------------
419
-
420
- To install Phusion Passenger Standalone:
421
-
133
+ endif::[]
134
+ ifdef::standalone[]
422
135
  --------------------------------------------------------------
423
136
  sudo apt-get install passenger
424
137
  --------------------------------------------------------------
138
+ endif::[]
425
139
 
426
- .Enterprise
427
-
428
- Before installing packages, download your license key from the link:https://www.phusionpassenger.com/orders[Customer Area] and save it as `/etc/passenger-enterprise-license`.
429
-
430
- To install Phusion Passenger for Nginx:
431
-
140
+ **Enterprise**::
141
+ +
142
+ 1. Download your license key from the link:https://www.phusionpassenger.com/orders[Customer Area] and save it as `/etc/passenger-enterprise-license`.
143
+ 2. Install the packages:
144
+ +
145
+ ifdef::nginx[]
432
146
  --------------------------------------------------------------
433
147
  sudo apt-get install nginx-full passenger-enterprise
434
148
  --------------------------------------------------------------
435
-
436
- Then edit `/etc/nginx/nginx.conf`, and uncomment `passenger_root` and `passenger_ruby`. Finally, run `sudo service nginx restart`.
437
-
438
- To install Phusion Passenger for Apache:
439
-
149
+ 3. Edit `/etc/nginx/nginx.conf` and uncomment `passenger_root` and `passenger_ruby`.
150
+ 4. Restart Nginx:
151
+ +
152
+ --------------------------------------------------------------
153
+ sudo service nginx restart
154
+ --------------------------------------------------------------
155
+ endif::[]
156
+ ifdef::apache[]
440
157
  --------------------------------------------------------------
441
158
  sudo apt-get install libapache2-mod-passenger-enterprise
442
159
  --------------------------------------------------------------
443
-
444
- To install Phusion Passenger Standalone:
445
-
160
+ endif::[]
161
+ ifdef::standalone[]
446
162
  --------------------------------------------------------------
447
163
  sudo apt-get install passenger-enterprise
448
164
  --------------------------------------------------------------
165
+ endif::[]
449
166
 
450
167
 
451
168
  === Installing or upgrading on Red Hat, Fedora, CentOS or ScientificLinux
@@ -525,35 +242,242 @@ yum install passenger-standalone
525
242
  There are instructions for building your own packages and Yum repositories in the link:https://github.com/phusion/passenger/tree/master/rpm#readme[rpm directory ReadMe] within the link:https://github.com/phusion/passenger[GitHub repository].
526
243
 
527
244
 
528
- === Installing or upgrading on Mac OS X with Homebrew
245
+ [[rubygems_generic_install]]
246
+ === Generic installation, upgrade and downgrade method: via RubyGems
247
+
248
+ RubyGems is only used as a method to obtain the Phusion Passenger files, so in case you have multiple Ruby versions it does not matter which Ruby's RubyGems you use for installation. Once installed, Phusion Passenger can work with all other Ruby versions on your system. This is explained in <<relationship_with_ruby,Phusion Passenger and its relationship with Ruby>>.
249
+
250
+ [[is_ruby_home_or_system_wide_installed]]
251
+ [float]
252
+ ==== Step 1: figuring out whether your Ruby is installed in the home directory or system-wide
253
+
254
+ Ruby may either be installed in the home directory, or system-wide. If it's installed system-wide then we will want to install gems system-wide as well, so you need to switch to a root prompt first. If Ruby is installed in the home directory then we will want to install gems to the home directory as well, as a normal user.
255
+
256
+ To find out which case applies, run the following command to find out where the `ruby` command is:
257
+
258
+ --------------
259
+ which ruby
260
+ --------------
261
+
262
+ Do you see a filename that references '/home' or '/Users'? If so then your Ruby interpreter is installed in your home directory and you can proceed to step 2. Otherwise, you need to switch to a root prompt by running one of the following commands:
529
263
 
530
- .Open source
264
+ * Are you using RVM? Run `rvmsudo -s`
265
+ * Are you not using RVM, or do you not know what RVM is? Run `sudo -s`
266
+ * Is 'sudo' not installed on your system? Run `su -c bash`
267
+
268
+ You must maintain this root prompt throughout this installation guide.
531
269
 
532
- Every time we release a new Phusion Passenger version, we make it available through Homebrew. Please note that the Homebrew maintainers have to merge our pull requests manually, so it may take a day or two before a new version shows up in the official Homebrew repository.
270
+ [float]
271
+ ==== Step 2: install the gem
533
272
 
534
- 1. Update the Homebrew recipes:
273
+ **Open Source**::
274
+ Install the latest gem to obtain the files for the latest stable version of the open source Phusion Passenger:
535
275
  +
536
- ---------------------------
537
- brew update
538
- ---------------------------
539
- 2. Run the following command and follow the instructions. This will give you access to link:Users%20guide%20Apache.html[Phusion Passenger for Apache] and link:Users%20guide%20Standalone.html[Phusion Passenger Standalone].
276
+ ----------------------
277
+ gem install passenger
278
+ ----------------------
540
279
  +
280
+ .Previous versions and beta versions
281
+ ********************************************************
282
+ Sometimes you will want to obtain the latest beta version of Phusion Passenger. Beta versions are not normally selected by `gem install`, so to opt-in for beta versions you have to add the `--pre` argument:
283
+
284
+ -----------------------------------
285
+ gem install passenger --pre
286
+ -----------------------------------
287
+
288
+ If you want to obtain a specific version of Phusion Passenger, e.g. because you are downgrading, then specify the version number with `--version`:
289
+
290
+ -----------------------------------
291
+ gem install passenger --version 3.0.0
292
+ -----------------------------------
293
+
294
+ If you want to obtain a specific *beta* version of Phusion Passenger then you must also pass `--pre`:
295
+
296
+ ----------------------------------------------------
297
+ gem install passenger --version 3.9.1.beta --pre
298
+ ----------------------------------------------------
299
+ ********************************************************
300
+
301
+ **Enterprise**::
302
+ First, download the *license key* from the link:https://www.phusionpassenger.com/orders[Customer Area] and save it as `/etc/passenger-enterprise-license`.
303
+ +
304
+ Next, add the Phusion Passenger Enterprise gem server to your RubyGems source list:
305
+ +
306
+ ------------------------------------------
307
+ gem source --add https://YOUR_ORDER_REFERENCE:YOUR_PASSWORD@www.phusionpassenger.com/enterprise_gems/
308
+ ------------------------------------------
309
+ +
310
+ Substitute 'YOUR_ORDER_REFERENCE' and 'YOUR_PASSWORD' with your link:https://www.phusionpassenger.com/orders[Customer Area] login credentials. And notice the **trailing slash** in the URL! It is very important.
311
+ +
312
+ Finally, install the latest gem to obtain the files for the latest stable version of the open source Phusion Passenger:
313
+ +
314
+ ----------------------
315
+ gem install passenger-enterprise-server
316
+ ----------------------
317
+ +
318
+ .Previous versions and beta versions
319
+ ********************************************************
320
+ Sometimes you will want to obtain the latest beta version of Phusion Passenger Enterprise. Beta versions are not normally selected by `gem install`, so to opt-in for beta versions you have to add the `--pre` argument:
321
+
322
+ -----------------------------------
323
+ gem install passenger-enterprise-server --pre
324
+ -----------------------------------
325
+
326
+ If you want to obtain a specific version of Phusion Passenger Enterprise, e.g. because you are downgrading, then specify the version number with `--version`:
327
+
328
+ -----------------------------------
329
+ gem install passenger-enterprise-server --version 3.0.0
330
+ -----------------------------------
331
+
332
+ If you want to obtain a specific *beta* version of Phusion Passenger then you must also pass `--pre`:
333
+
334
+ ----------------------------------------------------
335
+ gem install passenger-enterprise-server --version 3.9.1.beta --pre
336
+ ----------------------------------------------------
337
+ ********************************************************
338
+
339
+ ifndef::standalone[]
340
+ [[run_passenger_installer]]
341
+ [float]
342
+ ==== Step 3: run the Phusion Passenger installer
343
+
344
+ :gem: true
345
+ include::installation/run_installer.txt[]
346
+
347
+ :gem!:
348
+
349
+ [float]
350
+ ==== Step 4: restarting the Flying Passenger daemon
351
+
352
+ If you are using <<flying_passenger,Flying Passenger>> then you must restart the Flying Passenger daemon by sending it the SIGTERM signal:
353
+
354
+ -------------------------------
355
+ kill `cat /path-to/flying-passenger.pid`
356
+ -------------------------------
357
+
358
+ Or, if Flying Passenger is not running with a PID file, look up its PID us `ps` and then send it SIGTERM:
359
+
360
+ -------------------------------
361
+ ps aux | grep flying-passenger
362
+ kill PID_OF_FLYING_PASSENGER
363
+ -------------------------------
364
+
365
+ [[verify_passenger_running]]
366
+ [float]
367
+ ==== Step 5: verifying that Phusion Passenger is running
368
+
369
+ Restart your web server and run:
370
+
541
371
  ---------------------------
542
- brew install passenger
543
- -OR-
544
- brew upgrade passenger
372
+ passenger-memory-stats
545
373
  ---------------------------
546
- 3. (Optional) If you want to use link:Users%20guide%20Nginx.html[Phusion Passenger for Nginx], run:
374
+
375
+ include::installation/verify_running_epilogue.txt[]
376
+
377
+ endif::[]
378
+
379
+
380
+ [[tarball_generic_install]]
381
+ === Generic installation, upgrade and downgrade method: via tarball
382
+
383
+ [float]
384
+ ==== Step 1: installing Ruby
385
+
386
+ Phusion Passenger supports multiple languages and its core is written in C++, but its installer and administration tools are written in Ruby, so you must install Ruby.
387
+
388
+ Even though Ruby is required, Ruby will normally not be loaded during normal operation unless you deploy a Ruby web application on Phusion Passenger. Phusion Passenger's dependency on Ruby is very minimal. See <<relationship_with_ruby,Phusion Passenger and its relationship with Ruby>> for details.
389
+
390
+ |==========================================================
391
+ | Debian, Ubuntu | `sudo apt-get update` +
392
+ `sudo apt-get install ruby rake`
393
+ | Red Hat, CentOS, ScientificLinux, Amazon Linux | Enable link:http://fedoraproject.org/wiki/EPEL[EPEL], then run as root: +
394
+ `yum install ruby rubygem-rake`
395
+ | Mac OS X | No action needed. Ruby is installed by default.
396
+ | Other operating systems | Install Ruby from link:http://www.ruby-lang.org/[the Ruby website].
397
+ |==========================================================
398
+
399
+ [float]
400
+ ==== Step 2: download and extract the tarball
401
+
402
+ **Open Source**::
403
+ Download the open source Phusion Passenger tarball from link:https://www.phusionpassenger.com/download#open_source[the Phusion Passenger website].
404
+ +
405
+ Older versions can be found in link:https://www.phusionpassenger.com/file_releases[the release archive].
406
+
407
+ **Enterprise**::
408
+ link:https://www.phusionpassenger.com/enterprise[Phusion Passenger Enterprise] customers can download the Phusion Passenger Enterprise tarball from the link:https://www.phusionpassenger.com/orders[Customer Area].
547
409
  +
410
+ Also be sure to download the *license key* and save it as `/etc/passenger-enterprise-license`.
411
+
412
+ Once you have downloaded the tarball, pick a location to extract it to. You can pick any location. A good location is '/opt/passenger'. Create this directory and extract the tarball as follows:
413
+
414
+ --------------------------------------------------
415
+ mkdir /opt/passenger
416
+ cd /opt/passenger
417
+ tar xzvf /location-to/passenger-x.x.x.tar.gz
418
+ cd /opt/passenger/passenger-x.x.x
419
+ --------------------------------------------------
420
+
421
+ Note that `passenger-x.x.x` should be `passenger-enterprise-server-x.x.x` if you're using Phusion Passenger Enterprise.
422
+
423
+ ifdef::standalone[]
424
+ [float]
425
+ ==== Step 3: adding the Phusion Passenger tools to PATH
426
+
427
+ Edit `/etc/bashrc` (or `/etc/bash.bashrc` on some systems) and append the following to the end of the file:
428
+
429
+ ---------------------
430
+ export PATH=/opt/passenger/passenger-x.x.x/bin:$PATH
431
+ ---------------------
432
+
433
+ Finally, restart all your shell sessions in order to activate this change. The installation is now complete.
434
+
435
+ endif::[]
436
+
437
+ ifndef::standalone[]
438
+ [float]
439
+ ==== Step 3: run the Phusion Passenger installer
440
+
441
+ :tarball: true
442
+ include::installation/run_installer.txt[]
443
+
444
+ :tarball!:
445
+
446
+ ifdef::nginx[]
447
+ [float]
448
+ ==== Step 4: restarting the Flying Passenger daemon
449
+
450
+ If you are using <<flying_passenger,Flying Passenger>> then you must restart the Flying Passenger daemon by sending it the SIGTERM signal:
451
+
452
+ -------------------------------
453
+ kill `cat /path-to/flying-passenger.pid`
454
+ -------------------------------
455
+
456
+ Or, if Flying Passenger is not running with a PID file, look up its PID us `ps` and then send it SIGTERM:
457
+
458
+ -------------------------------
459
+ ps aux | grep flying-passenger
460
+ kill PID_OF_FLYING_PASSENGER
461
+ -------------------------------
462
+ endif::[]
463
+
464
+ [float]
465
+ ifdef::apache[]
466
+ ==== Step 4: verifying that Phusion Passenger is running
467
+ endif::[]
468
+ ifdef::nginx[]
469
+ ==== Step 5: verifying that Phusion Passenger is running
470
+ endif::[]
471
+
472
+ Restart your web server and run:
473
+
548
474
  ---------------------------
549
- brew install nginx --with-passenger
550
- -OR-
551
- brew upgrade nginx --wtih-passenger
475
+ ./bin/passenger-memory-stats
552
476
  ---------------------------
553
477
 
554
- .Enterprise
478
+ include::installation/verify_running_epilogue.txt[]
555
479
 
556
- link:https://www.phusionpassenger.com/enterprise[Phusion Passenger Enterprise] is currently not available through Homebrew. Please try one of the other installation methods insteads.
480
+ endif::[]
557
481
 
558
482
 
559
483
  === Upgrading from open source to Enterprise
@@ -621,7 +545,7 @@ gpg --keyserver keyserver.ubuntu.com --search-keys 0xBA8DA3F46FAF3782
621
545
 
622
546
  ==== Verifying the gem and tarball
623
547
 
624
- You can find the open source version's gem and tarball GPG signatures at https://www.phusionpassenger.com/signatures/. The Enterprise version's GPG signatures can be found in the link:https://www.phusionpassenger.com/orders[Customer Area]. All signatures have the '.asc' extension. Once you have imported our key, you can verify the validity of a file against its signature as follows:
548
+ You can find the open source version's gem and tarball GPG signatures at https://www.phusionpassenger.com/file_releases. The Enterprise version's GPG signatures can be found in the link:https://www.phusionpassenger.com/orders[Customer Area]. All signatures have the '.asc' extension. Once you have imported our key, you can verify the validity of a file against its signature as follows:
625
549
 
626
550
  -----------------------------------------
627
551
  $ gpg --verify passenger-x.x.x.tar.gz.asc passenger-x.x.x.tar.gz
@@ -631,7 +555,7 @@ gpg: Good signature from "Phusion Software Signing <software-signing@phusion.nl>
631
555
 
632
556
  ==== Verifying Git signatures
633
557
 
634
- Tags in the link:https://github.com/FooBarWidget/passenger[Git repository for the open source version] are also tagged. You can verify a Git tag as follows:
558
+ Tags in the link:https://github.com/phusion/passenger[Git repository for the open source version] are also tagged. You can verify a Git tag as follows:
635
559
 
636
560
  -------------------------------------------------------
637
561
  $ git tag --verify release-x.x.x
@@ -647,7 +571,7 @@ gpg: Good signature from "Phusion Software Signing <software-signing@phusion.nl>
647
571
 
648
572
  ==== Verifying DEB and RPM packages
649
573
 
650
- The DEB and RPM packages are signed with the signatures of the respective packagers. Phusion does not provide signatures for them.
574
+ The DEB and RPM packages are signed with the signatures of the respective packagers. They are automatically checked upon installation.
651
575
 
652
576
  ==== Revocation
653
577
 
@@ -659,7 +583,14 @@ gpg --refresh-keys --keyserver pool.sks-servers.net
659
583
  gpg --refresh-keys --keyserver keyserver.ubuntu.com
660
584
  -------------------------------------------------------
661
585
 
586
+ If you installed Phusion Passenger through our APT repository, then you should update APT's keyring from time to time as well:
587
+
588
+ -------------------------------------------------------
589
+ sudo apt-key adv --refresh-keys --keyserver keyserver.ubuntu.com
590
+ -------------------------------------------------------
591
+
662
592
 
593
+ ifndef::standalone[]
663
594
  === Non-interactive, automatic, headless installs or upgrades
664
595
 
665
596
  ifdef::apache[]
@@ -668,6 +599,7 @@ endif::[]
668
599
  ifdef::nginx[]
669
600
  By default, the installer (`passenger-install-nginx-module`) is interactive. If you want to automate installation then you can do so by passing various answers to the installer through command line options. Please run the installer with `--help` for a list of available command line options.
670
601
  endif::[]
602
+ endif::[]
671
603
 
672
604
 
673
605
  === Customizing the compilation process
@@ -704,6 +636,10 @@ On some systems, C/C++ libraries and headers that Phusion Passenger requires may
704
636
  These flags are injected into all C/C++ compiler invocations that involve linking. This includes compiler invocations that compile *and* link. The flags are injected at the beginning of the command string, but after `EXTRA_PRE_CFLAGS` and `EXTRA_PRE_CXXFLAGS`.
705
637
  `EXTRA_LDFLAGS`::
706
638
  Similar to `EXTRA_PRE_LDFLAGS`, but injected at the very end of the command string, even after `EXTRA_CFLAGS` and `EXTRA_CXXFLAGS`.
639
+ `EXTRA_C_LDFLAGS`::
640
+ Similar to `EXTRA_LDFLAGS`, but only injected for C executable linking commands. Injected right after `EXTRA_LDFLAGS`.
641
+ `EXTRA_CXX_LDFLAGS`::
642
+ Similar to `EXTRA_LDFLAGS`, but only injected for C++ executable linking commands. Injected right after `EXTRA_LDFLAGS`.
707
643
  `PASSENGER_THREAD_LOCAL_STORAGE`::
708
644
  Setting this to 1 will enable the `PASSENGER_THREAD_LOCAL_STORAGE` macro, which forcefully disables the use of thread-local storage inside the Phusion Passenger codebase. Setting this environment variable is useful on systems that have broken support for thread-local storage, despite passing our build system's check for proper thread-local storage support. At the time of writing, one user has reported that Ubuntu 12.04 32-bit has broken thread-local storage report although neither the reporter nor us were able to reproduce the problem on any other systems running Ubuntu 12.04 32-bit. Note that this flag has no effect on non-Phusion Passenger code.
709
645
 
@@ -806,6 +742,7 @@ When using one of those init scripts, please make sure that the paths inside the
806
742
  endif::[]
807
743
 
808
744
 
745
+ ifndef::standalone[]
809
746
  === Disabling without uninstalling
810
747
 
811
748
  You can temporarily unload (disable) Phusion Passenger from the web server, without
@@ -912,13 +849,16 @@ http {
912
849
  endif::[]
913
850
 
914
851
  After you've done this, save the configuration file and restart the web server.
852
+ endif::[]
915
853
 
916
854
  [[uninstalling]]
917
855
  === Uninstalling
918
856
 
857
+ ifndef::standalone[]
919
858
  To uninstall Phusion Passenger, please first remove all Phusion Passenger
920
859
  configuration directives from your web server configuration file(s). After you've
921
860
  done this, you need to remove the Phusion Passenger files.
861
+ endif::[]
922
862
 
923
863
  - If you installed Phusion Passenger via a Ruby gem, then run `gem uninstall passenger` (or, if you're a link:https://www.phusionpassenger.com/enterprise[Phusion Passenger Enterprise] user, `gem uninstall passenger-enterprise-server`).
924
864
  You <<is_ruby_home_or_system_wide_installed,might have to run this as root>>.
@@ -944,20 +884,37 @@ First, move the directory to whereever you like:
944
884
  mv /opt/passenger/passenger-4.0.0 /usr/local/passenger-4.0.0
945
885
  --------------------------------------------------------------
946
886
 
947
- Next you must tell your web server that Phusion Passenger has moved.
948
887
  ifdef::apache[]
888
+ Next you must tell Apache that Phusion Passenger has moved.
949
889
  Open your <<working_with_apache_conf,Apache configuration file>> and set the 'PassengerRoot' directive to the new location:
950
890
 
951
891
  ---------------------------------------------
952
892
  PassengerRoot /usr/local/passenger-4.0.0
953
893
  ---------------------------------------------
894
+
895
+ Restart your web server to finalize the change.
954
896
  endif::[]
955
897
  ifdef::nginx[]
898
+ Next you must tell Nginx that Phusion Passenger has moved.
956
899
  Open your Nginx configuration file and set the 'passenger_root' directive to the new location:
957
900
 
958
901
  ---------------------------------------------
959
- passenger_root /usr/local/passenger-4.0.0
902
+ passenger_root /usr/local/passenger-4.0.0;
960
903
  ---------------------------------------------
961
- endif::[]
962
904
 
963
905
  Restart your web server to finalize the change.
906
+ endif::[]
907
+
908
+ If you used <<tarball_generic_install,the tarball installation method>> and you added Phusion Passenger's `bin` subdirectory to `PATH`, then you must update your PATH with the new location. Open `/etc/bashrc` (or `/etc/bash.bashrc` on some systems) and change:
909
+
910
+ ---------------------
911
+ export PATH=/opt/passenger/passenger-4.0.0/bin:$PATH
912
+ ---------------------
913
+
914
+ to:
915
+
916
+ ---------------------
917
+ export PATH=/usr/local/passenger-4.0.0/bin:$PATH
918
+ ---------------------
919
+
920
+ Finally, restart all your shell sessions to activate the PATH change.