passenger 5.1.10 → 5.1.11

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 (200) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +18 -0
  3. data/Rakefile +20 -17
  4. data/bin/passenger-install-apache2-module +14 -11
  5. data/build/agent.rb +45 -18
  6. data/build/apache2.rb +32 -16
  7. data/build/basics.rb +29 -40
  8. data/build/common_library.rb +70 -54
  9. data/build/cxx_tests.rb +34 -43
  10. data/build/integration_tests.rb +10 -10
  11. data/build/misc.rb +6 -6
  12. data/build/node_tests.rb +1 -2
  13. data/build/oxt_tests.rb +7 -5
  14. data/build/packaging.rb +11 -441
  15. data/build/ruby_extension.rb +1 -1
  16. data/build/ruby_tests.rb +1 -2
  17. data/build/support/cplusplus.rb +6 -5
  18. data/build/support/cxx_dependency_map.rb +357 -833
  19. data/build/support/general.rb +23 -1
  20. data/build/test_basics.rb +3 -28
  21. data/dev/ci/tests/rpm/Jenkinsfile +68 -0
  22. data/dev/ci/tests/rpm/run +63 -0
  23. data/dev/ci/tests/source-packaging/run +1 -1
  24. data/dev/ci/tests/source-packaging/setup +1 -1
  25. data/doc/{Packaging.txt.md → Packaging.md} +0 -0
  26. data/resources/templates/apache2/deployment_example.txt.erb +2 -2
  27. data/resources/templates/apache2/multiple_apache_installations_detected.txt.erb +2 -2
  28. data/resources/templates/nginx/deployment_example.txt.erb +1 -1
  29. data/resources/templates/standalone/mass_deployment_default_server.erb +2 -2
  30. data/resources/templates/standalone/server.erb +2 -2
  31. data/src/agent/AgentMain.cpp +0 -4
  32. data/src/agent/Core/CoreMain.cpp +88 -5
  33. data/src/agent/Core/SpawningKit/Spawner.h +2 -1
  34. data/src/agent/Shared/Fundamentals/AbortHandler.cpp +1109 -0
  35. data/src/agent/Shared/Fundamentals/AbortHandler.h +63 -0
  36. data/src/agent/Shared/Fundamentals/Implementation.cpp +7 -0
  37. data/src/agent/Shared/Fundamentals/Initialization.cpp +614 -0
  38. data/src/agent/Shared/{Base.h → Fundamentals/Initialization.h} +23 -14
  39. data/src/agent/Shared/Fundamentals/Utils.cpp +127 -0
  40. data/src/agent/Shared/Fundamentals/Utils.h +46 -0
  41. data/src/agent/TempDirToucher/TempDirToucherMain.cpp +1 -1
  42. data/src/agent/Watchdog/CoreWatcher.cpp +3 -1
  43. data/src/agent/Watchdog/InstanceDirToucher.cpp +90 -53
  44. data/src/agent/Watchdog/WatchdogMain.cpp +13 -29
  45. data/src/apache2_module/Hooks.cpp +4 -1
  46. data/src/cxx_supportlib/ConfigKit/Store.h +32 -5
  47. data/src/cxx_supportlib/Constants.h +1 -2
  48. data/src/cxx_supportlib/Crypto.cpp +2 -1
  49. data/src/cxx_supportlib/Hooks.h +16 -37
  50. data/src/cxx_supportlib/LoggingKit/Context.h +22 -0
  51. data/src/cxx_supportlib/LoggingKit/Forward.h +1 -0
  52. data/src/cxx_supportlib/LoggingKit/Implementation.cpp +106 -22
  53. data/src/cxx_supportlib/ProcessManagement/Ruby.cpp +106 -0
  54. data/src/{agent/UstRouter/FileSink.h → cxx_supportlib/ProcessManagement/Ruby.h} +23 -47
  55. data/src/cxx_supportlib/ProcessManagement/Spawn.cpp +199 -0
  56. data/src/cxx_supportlib/ProcessManagement/Spawn.h +150 -0
  57. data/src/cxx_supportlib/ProcessManagement/Utils.cpp +459 -0
  58. data/src/cxx_supportlib/ProcessManagement/Utils.h +107 -0
  59. data/src/cxx_supportlib/Utils.cpp +41 -561
  60. data/src/cxx_supportlib/Utils.h +0 -68
  61. data/src/cxx_supportlib/Utils/AsyncSignalSafeUtils.h +187 -0
  62. data/src/cxx_supportlib/Utils/ProcessMetricsCollector.h +14 -2
  63. data/src/cxx_supportlib/WatchdogLauncher.h +2 -12
  64. data/src/cxx_supportlib/oxt/dynamic_thread_group.hpp +2 -2
  65. data/src/cxx_supportlib/vendor-modified/jsoncpp/json-forwards.h +4 -0
  66. data/src/cxx_supportlib/vendor-modified/jsoncpp/json.h +16 -1
  67. data/src/cxx_supportlib/vendor-modified/jsoncpp/jsoncpp.cpp +12 -9
  68. data/src/cxx_supportlib/vendor-modified/libev/ev++.h +4 -4
  69. data/src/cxx_supportlib/vendor-modified/libev/ev.h +3 -3
  70. data/src/nginx_module/CacheLocationConfig.c +0 -75
  71. data/src/nginx_module/CacheLocationConfig.c.cxxcodebuilder +1 -0
  72. data/src/nginx_module/Configuration.c +0 -1
  73. data/src/nginx_module/Configuration.h +0 -1
  74. data/src/nginx_module/ConfigurationCommands.c +1 -1
  75. data/src/nginx_module/ContentHandler.c +0 -1
  76. data/src/nginx_module/ContentHandler.h +0 -1
  77. data/src/nginx_module/CreateLocationConfig.c +0 -5
  78. data/src/nginx_module/CreateLocationConfig.c.cxxcodebuilder +1 -0
  79. data/src/nginx_module/LocationConfig.h +0 -4
  80. data/src/nginx_module/LocationConfig.h.cxxcodebuilder +2 -1
  81. data/src/nginx_module/MergeLocationConfig.c +0 -12
  82. data/src/nginx_module/MergeLocationConfig.c.cxxcodebuilder +1 -0
  83. data/src/nginx_module/ngx_http_passenger_module.h +0 -1
  84. data/src/ruby_supportlib/phusion_passenger.rb +1 -1
  85. data/src/ruby_supportlib/phusion_passenger/common_library.rb +20 -11
  86. data/src/ruby_supportlib/phusion_passenger/config/api_call_command.rb +1 -1
  87. data/src/ruby_supportlib/phusion_passenger/config/reopen_logs_command.rb +0 -1
  88. data/src/ruby_supportlib/phusion_passenger/config/validate_install_command.rb +10 -3
  89. data/src/ruby_supportlib/phusion_passenger/console_text_template.rb +3 -1
  90. data/src/ruby_supportlib/phusion_passenger/constants.rb +0 -1
  91. data/src/ruby_supportlib/phusion_passenger/debug_logging.rb +1 -1
  92. data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +32 -6
  93. data/src/ruby_supportlib/phusion_passenger/nginx/config_options.rb +0 -1
  94. data/src/ruby_supportlib/phusion_passenger/packaging.rb +2 -4
  95. data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +101 -20
  96. data/src/ruby_supportlib/phusion_passenger/platform_info/apache_detector.rb +21 -9
  97. data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +34 -31
  98. data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +3 -1
  99. data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck_specs/apache2.rb +2 -14
  100. data/src/ruby_supportlib/phusion_passenger/platform_info/operating_system.rb +40 -3
  101. data/src/ruby_supportlib/phusion_passenger/standalone/app_finder.rb +15 -14
  102. data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +1 -1
  103. data/src/ruby_supportlib/phusion_passenger/standalone/config_utils.rb +1 -1
  104. data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +8 -3
  105. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/nginx_engine.rb +19 -18
  106. data/src/ruby_supportlib/phusion_passenger/standalone/stop_command.rb +6 -1
  107. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller.rb +17 -1
  108. metadata +19 -97
  109. data/build/documentation.rb +0 -70
  110. data/doc/CloudLicensingConfiguration.html +0 -172
  111. data/doc/CloudLicensingConfiguration.txt.md +0 -3
  112. data/doc/Packaging.html +0 -488
  113. data/doc/Security of user switching support.idmap.txt +0 -34
  114. data/doc/Security of user switching support.txt +0 -197
  115. data/doc/ServerOptimizationGuide.html +0 -172
  116. data/doc/ServerOptimizationGuide.txt.md +0 -3
  117. data/doc/images/by_sa.png +0 -0
  118. data/doc/images/cloud_licensing_batch_job.png +0 -0
  119. data/doc/images/code_walkthrough.jpg +0 -0
  120. data/doc/images/direct_spawning.png +0 -0
  121. data/doc/images/direct_spawning.svg +0 -251
  122. data/doc/images/glyphicons-halflings-white.png +0 -0
  123. data/doc/images/glyphicons-halflings.png +0 -0
  124. data/doc/images/icons/README +0 -5
  125. data/doc/images/icons/callouts/1.png +0 -0
  126. data/doc/images/icons/callouts/10.png +0 -0
  127. data/doc/images/icons/callouts/11.png +0 -0
  128. data/doc/images/icons/callouts/12.png +0 -0
  129. data/doc/images/icons/callouts/13.png +0 -0
  130. data/doc/images/icons/callouts/14.png +0 -0
  131. data/doc/images/icons/callouts/15.png +0 -0
  132. data/doc/images/icons/callouts/2.png +0 -0
  133. data/doc/images/icons/callouts/3.png +0 -0
  134. data/doc/images/icons/callouts/4.png +0 -0
  135. data/doc/images/icons/callouts/5.png +0 -0
  136. data/doc/images/icons/callouts/6.png +0 -0
  137. data/doc/images/icons/callouts/7.png +0 -0
  138. data/doc/images/icons/callouts/8.png +0 -0
  139. data/doc/images/icons/callouts/9.png +0 -0
  140. data/doc/images/icons/caution.png +0 -0
  141. data/doc/images/icons/example.png +0 -0
  142. data/doc/images/icons/home.png +0 -0
  143. data/doc/images/icons/important.png +0 -0
  144. data/doc/images/icons/next.png +0 -0
  145. data/doc/images/icons/note.png +0 -0
  146. data/doc/images/icons/prev.png +0 -0
  147. data/doc/images/icons/tip.png +0 -0
  148. data/doc/images/icons/up.png +0 -0
  149. data/doc/images/icons/warning.png +0 -0
  150. data/doc/images/many_web_framework_protocols.png +0 -0
  151. data/doc/images/passenger_architecture.png +0 -0
  152. data/doc/images/passenger_architecture.svg +0 -385
  153. data/doc/images/passenger_architecture_overview.png +0 -0
  154. data/doc/images/passenger_core_architecture.png +0 -0
  155. data/doc/images/passenger_nodejs_architecture.svg +0 -558
  156. data/doc/images/phusion_banner.png +0 -0
  157. data/doc/images/rack.png +0 -0
  158. data/doc/images/smart_spawning.png +0 -0
  159. data/doc/images/smart_spawning.svg +0 -323
  160. data/doc/images/spawn_server_architecture.png +0 -0
  161. data/doc/images/spawn_server_architecture.svg +0 -655
  162. data/doc/images/spawning_preparation_work.png +0 -0
  163. data/doc/images/startup_sequence.png +0 -0
  164. data/doc/images/typical_isolated_web_application.png +0 -0
  165. data/doc/images/typical_isolated_web_application.svg +0 -213
  166. data/doc/users_guide_snippets/alternative_for_flying_passenger.txt +0 -1
  167. data/doc/users_guide_snippets/analysis_and_system_maintenance.txt +0 -61
  168. data/doc/users_guide_snippets/appendix_a_about.txt +0 -13
  169. data/doc/users_guide_snippets/appendix_b_terminology.txt +0 -71
  170. data/doc/users_guide_snippets/appendix_c_spawning_methods.txt +0 -36
  171. data/doc/users_guide_snippets/deployment_basics.txt +0 -37
  172. data/doc/users_guide_snippets/enterprise_only.txt +0 -1
  173. data/doc/users_guide_snippets/environment_variables.txt +0 -44
  174. data/doc/users_guide_snippets/global_queueing_explained.txt +0 -74
  175. data/doc/users_guide_snippets/installation.txt +0 -228
  176. data/doc/users_guide_snippets/installation/run_installer.txt +0 -58
  177. data/doc/users_guide_snippets/installation/verify_running_epilogue.txt +0 -6
  178. data/doc/users_guide_snippets/passenger_spawn_method.txt +0 -37
  179. data/doc/users_guide_snippets/rackup_specifications.txt +0 -1
  180. data/doc/users_guide_snippets/rvm_helper_tool.txt +0 -44
  181. data/doc/users_guide_snippets/since_version.txt +0 -1
  182. data/doc/users_guide_snippets/support_information.txt +0 -8
  183. data/doc/users_guide_snippets/tips.txt +0 -302
  184. data/doc/users_guide_snippets/troubleshooting/default.txt +0 -48
  185. data/doc/users_guide_snippets/troubleshooting/rails.txt +0 -59
  186. data/doc/users_guide_snippets/under_the_hood/page_caching_support.txt +0 -24
  187. data/doc/users_guide_snippets/under_the_hood/relationship_with_ruby.txt +0 -10
  188. data/doc/users_guide_snippets/where_to_get_support.txt +0 -9
  189. data/src/agent/Shared/Base.cpp +0 -1678
  190. data/src/agent/UstRouter/ApiServer.h +0 -292
  191. data/src/agent/UstRouter/Client.h +0 -112
  192. data/src/agent/UstRouter/Controller.h +0 -1309
  193. data/src/agent/UstRouter/LogSink.h +0 -145
  194. data/src/agent/UstRouter/OptionParser.h +0 -180
  195. data/src/agent/UstRouter/RemoteSender.h +0 -853
  196. data/src/agent/UstRouter/RemoteSink.h +0 -145
  197. data/src/agent/UstRouter/Transaction.h +0 -278
  198. data/src/agent/UstRouter/UstRouterMain.cpp +0 -681
  199. data/src/agent/Watchdog/UstRouterWatcher.cpp +0 -80
  200. data/src/ruby_supportlib/phusion_passenger/platform_info/macos.rb +0 -45
@@ -1,558 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
- <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
-
4
- <svg
5
- xmlns:dc="http://purl.org/dc/elements/1.1/"
6
- xmlns:cc="http://creativecommons.org/ns#"
7
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8
- xmlns:svg="http://www.w3.org/2000/svg"
9
- xmlns="http://www.w3.org/2000/svg"
10
- xmlns:xlink="http://www.w3.org/1999/xlink"
11
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
12
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13
- width="850"
14
- height="1052.3622"
15
- id="svg2"
16
- version="1.1"
17
- inkscape:version="0.48.2 r9819"
18
- inkscape:export-filename="/Users/hongli/Desktop/passenger_node.png"
19
- inkscape:export-xdpi="80.629997"
20
- inkscape:export-ydpi="80.629997"
21
- sodipodi:docname="passenger_nodejs_architecture.svg">
22
- <defs
23
- id="defs4">
24
- <linearGradient
25
- id="linearGradient3873">
26
- <stop
27
- style="stop-color:#636363;stop-opacity:1;"
28
- offset="0"
29
- id="stop3875" />
30
- <stop
31
- style="stop-color:#b1b1b1;stop-opacity:1;"
32
- offset="1"
33
- id="stop3877" />
34
- </linearGradient>
35
- <linearGradient
36
- id="linearGradient3863">
37
- <stop
38
- style="stop-color:#eeeeee;stop-opacity:1;"
39
- offset="0"
40
- id="stop3865" />
41
- <stop
42
- style="stop-color:#ffffff;stop-opacity:1;"
43
- offset="1"
44
- id="stop3867" />
45
- </linearGradient>
46
- <marker
47
- inkscape:stockid="Arrow1Mstart"
48
- orient="auto"
49
- refY="0.0"
50
- refX="0.0"
51
- id="Arrow1Mstart"
52
- style="overflow:visible">
53
- <path
54
- id="path4005"
55
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
56
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
57
- transform="scale(0.4) translate(10,0)" />
58
- </marker>
59
- <marker
60
- inkscape:stockid="Arrow2Send"
61
- orient="auto"
62
- refY="0"
63
- refX="0"
64
- id="Arrow2Send"
65
- style="overflow:visible">
66
- <path
67
- id="path4032"
68
- style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
69
- d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
70
- transform="matrix(-0.3,0,0,-0.3,0.69,0)"
71
- inkscape:connector-curvature="0" />
72
- </marker>
73
- <marker
74
- inkscape:stockid="Arrow2Sstart"
75
- orient="auto"
76
- refY="0"
77
- refX="0"
78
- id="Arrow2Sstart"
79
- style="overflow:visible">
80
- <path
81
- id="path4029"
82
- style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
83
- d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
84
- transform="matrix(0.3,0,0,0.3,-0.69,0)"
85
- inkscape:connector-curvature="0" />
86
- </marker>
87
- <marker
88
- inkscape:stockid="Arrow2Mend"
89
- orient="auto"
90
- refY="0"
91
- refX="0"
92
- id="Arrow2Mend"
93
- style="overflow:visible">
94
- <path
95
- id="path4026"
96
- style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
97
- d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
98
- transform="scale(-0.6,-0.6)"
99
- inkscape:connector-curvature="0" />
100
- </marker>
101
- <marker
102
- inkscape:stockid="Arrow2Mstart"
103
- orient="auto"
104
- refY="0"
105
- refX="0"
106
- id="Arrow2Mstart"
107
- style="overflow:visible">
108
- <path
109
- id="path4023"
110
- style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
111
- d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
112
- transform="scale(0.6,0.6)"
113
- inkscape:connector-curvature="0" />
114
- </marker>
115
- <radialGradient
116
- inkscape:collect="always"
117
- xlink:href="#linearGradient3863"
118
- id="radialGradient3871"
119
- cx="399.86142"
120
- cy="173.65393"
121
- fx="399.86142"
122
- fy="173.65393"
123
- r="124.21188"
124
- gradientTransform="matrix(0.08359871,-0.53730252,1.4968758,0.23289847,152.10997,303.41193)"
125
- gradientUnits="userSpaceOnUse" />
126
- <radialGradient
127
- inkscape:collect="always"
128
- xlink:href="#linearGradient3873"
129
- id="radialGradient3881"
130
- cx="420.47626"
131
- cy="176.68454"
132
- fx="420.47626"
133
- fy="176.68454"
134
- r="124.21188"
135
- gradientTransform="matrix(0.19105948,-0.65672497,1.4449036,0.42036247,84.848158,325.87482)"
136
- gradientUnits="userSpaceOnUse" />
137
- </defs>
138
- <sodipodi:namedview
139
- id="base"
140
- pagecolor="#ffffff"
141
- bordercolor="#666666"
142
- borderopacity="1.0"
143
- inkscape:pageopacity="0.0"
144
- inkscape:pageshadow="2"
145
- inkscape:zoom="1"
146
- inkscape:cx="170.25044"
147
- inkscape:cy="740"
148
- inkscape:document-units="px"
149
- inkscape:current-layer="layer1"
150
- showgrid="false"
151
- inkscape:snap-bbox="false"
152
- inkscape:snap-bbox-midpoints="false"
153
- inkscape:window-width="1333"
154
- inkscape:window-height="856"
155
- inkscape:window-x="0"
156
- inkscape:window-y="0"
157
- inkscape:window-maximized="0">
158
- <inkscape:grid
159
- type="xygrid"
160
- id="grid3901"
161
- empspacing="5"
162
- visible="true"
163
- enabled="true"
164
- snapvisiblegridlinesonly="true" />
165
- </sodipodi:namedview>
166
- <metadata
167
- id="metadata7">
168
- <rdf:RDF>
169
- <cc:Work
170
- rdf:about="">
171
- <dc:format>image/svg+xml</dc:format>
172
- <dc:type
173
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
174
- <dc:title></dc:title>
175
- </cc:Work>
176
- </rdf:RDF>
177
- </metadata>
178
- <g
179
- inkscape:label="Layer 1"
180
- inkscape:groupmode="layer"
181
- id="layer1">
182
- <g
183
- id="g3963"
184
- transform="matrix(0.63975588,0,0,0.63975588,121.89997,153.53014)">
185
- <rect
186
- ry="15"
187
- rx="15"
188
- y="96.362183"
189
- x="403"
190
- height="134"
191
- width="187.5"
192
- id="rect3958"
193
- style="fill:#106bce;fill-opacity:1;stroke:none" />
194
- <rect
195
- ry="15"
196
- rx="15"
197
- y="96.362183"
198
- x="206"
199
- height="134"
200
- width="200"
201
- id="rect3917"
202
- style="fill:#3d93f0;fill-opacity:1;stroke:none" />
203
- <text
204
- xml:space="preserve"
205
- style="font-size:25.53247833px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
206
- x="306.66592"
207
- y="136.18573"
208
- id="text3923"
209
- sodipodi:linespacing="125%"><tspan
210
- style="font-size:25.53247833px;font-style:normal;font-variant:normal;font-weight:500;font-stretch:condensed;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Pluto Sans;-inkscape-font-specification:Pluto Sans Medium Condensed"
211
- sodipodi:role="line"
212
- id="tspan3925"
213
- x="306.66592"
214
- y="136.18573">Passenger</tspan><tspan
215
- style="font-size:25.53247833px;font-style:normal;font-variant:normal;font-weight:500;font-stretch:condensed;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Pluto Sans;-inkscape-font-specification:Pluto Sans Medium Condensed"
216
- id="tspan3927"
217
- sodipodi:role="line"
218
- x="306.66592"
219
- y="168.10133">+</tspan><tspan
220
- id="tspan3929"
221
- style="font-size:25.53247833px;font-style:normal;font-variant:normal;font-weight:500;font-stretch:condensed;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Pluto Sans;-inkscape-font-specification:Pluto Sans Medium Condensed"
222
- sodipodi:role="line"
223
- x="306.66592"
224
- y="200.01692">Nginx</tspan></text>
225
- <rect
226
- style="fill:#106bce;fill-opacity:1;stroke:none"
227
- id="rect3931"
228
- width="187.5"
229
- height="134"
230
- x="385"
231
- y="96.362183" />
232
- <text
233
- sodipodi:linespacing="125%"
234
- id="text3933"
235
- y="137.68573"
236
- x="486.66595"
237
- style="font-size:25.53247833px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
238
- xml:space="preserve"><tspan
239
- id="tspan3946"
240
- y="137.68573"
241
- x="486.66595"
242
- sodipodi:role="line"
243
- style="font-size:25.53247833px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Pluto Sans;-inkscape-font-specification:Pluto Sans Condensed">Management</tspan></text>
244
- <path
245
- sodipodi:nodetypes="scssssss"
246
- inkscape:connector-curvature="0"
247
- id="rect3960"
248
- d="m 418,163.86218 172.5,0 0,51.5 c 0,8.31 -6.69,15 -15,15 l -157.5,0 c -8.31,0 -15,-6.69 -15,-15 l 0,-36.5 c 0,-8.31 6.69857,-15.37734 15,-15 z"
249
- style="fill:#137bed;fill-opacity:1;stroke:none" />
250
- <rect
251
- y="163.86218"
252
- x="385"
253
- height="66.5"
254
- width="187.5"
255
- id="rect3950"
256
- style="fill:#137bed;fill-opacity:1;stroke:none" />
257
- <text
258
- xml:space="preserve"
259
- style="font-size:25.53247833px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
260
- x="485.16595"
261
- y="203.68573"
262
- id="text3952"
263
- sodipodi:linespacing="125%"><tspan
264
- style="font-size:25.53247833px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Pluto Sans;-inkscape-font-specification:Pluto Sans Condensed"
265
- sodipodi:role="line"
266
- x="485.16595"
267
- y="203.68573"
268
- id="tspan3954">Inspection</tspan></text>
269
- </g>
270
- <g
271
- id="g3805"
272
- transform="matrix(0.96875643,0,0,0.96875643,54.85768,351.22217)">
273
- <rect
274
- ry="10"
275
- rx="10"
276
- y="96.362183"
277
- x="28"
278
- height="77"
279
- width="170"
280
- id="rect2985"
281
- style="fill:#5dc737;fill-opacity:1;stroke:none" />
282
- <text
283
- sodipodi:linespacing="125%"
284
- id="text2987"
285
- y="145.36218"
286
- x="52"
287
- style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
288
- xml:space="preserve"><tspan
289
- style="font-size:32px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Pluto Sans;-inkscape-font-specification:Pluto Sans Bold"
290
- y="145.36218"
291
- x="52"
292
- id="tspan2989"
293
- sodipodi:role="line">Node.js</tspan></text>
294
- </g>
295
- <g
296
- transform="matrix(0.96875643,0,0,0.96875643,246.56886,351.22217)"
297
- id="g3986">
298
- <rect
299
- style="fill:#5dc737;fill-opacity:1;stroke:none"
300
- id="rect3988"
301
- width="170"
302
- height="77"
303
- x="28"
304
- y="96.362183"
305
- rx="10"
306
- ry="10" />
307
- <text
308
- xml:space="preserve"
309
- style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
310
- x="52"
311
- y="145.36218"
312
- id="text3990"
313
- sodipodi:linespacing="125%"><tspan
314
- sodipodi:role="line"
315
- id="tspan3992"
316
- x="52"
317
- y="145.36218"
318
- style="font-size:32px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Pluto Sans;-inkscape-font-specification:Pluto Sans Bold">Node.js</tspan></text>
319
- </g>
320
- <path
321
- style="fill:none;stroke:#000000;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Sstart);marker-end:url(#Arrow2Send)"
322
- d="m 281.76628,316.63576 -68.6403,124.81129"
323
- id="path3994"
324
- inkscape:connector-curvature="0"
325
- sodipodi:nodetypes="cc" />
326
- <path
327
- sodipodi:nodetypes="cc"
328
- inkscape:connector-curvature="0"
329
- id="path5004"
330
- d="M 357.84638,444.47452 357.56679,316.65484"
331
- style="fill:none;stroke:#000000;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Sstart);marker-end:url(#Arrow2Send)" />
332
- <text
333
- xml:space="preserve"
334
- style="font-size:12.87560654px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
335
- x="-216.75558"
336
- y="369.31613"
337
- id="text5006"
338
- sodipodi:linespacing="125%"
339
- transform="matrix(0.47513133,-0.87991489,0.87991489,0.47513133,0,0)"><tspan
340
- sodipodi:role="line"
341
- id="tspan5008"
342
- x="-216.75558"
343
- y="369.31613"
344
- style="font-size:12.87560654px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Pluto Sans;-inkscape-font-specification:Pluto Sans Condensed">High-performance</tspan><tspan
345
- sodipodi:role="line"
346
- x="-216.75558"
347
- y="385.41064"
348
- id="tspan5010"
349
- style="font-size:12.87560654px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Pluto Sans;-inkscape-font-specification:Pluto Sans Condensed">Unix channel</tspan></text>
350
- <g
351
- id="g5055"
352
- transform="translate(31,183)">
353
- <rect
354
- ry="10"
355
- rx="10"
356
- y="111.36218"
357
- x="-14"
358
- height="57"
359
- width="143"
360
- id="rect5049"
361
- style="fill:#92c61d;fill-opacity:1;stroke:none" />
362
- <text
363
- sodipodi:linespacing="125%"
364
- id="text5051"
365
- y="145.36218"
366
- x="13"
367
- style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
368
- xml:space="preserve"><tspan
369
- style="font-size:18px;font-style:normal;font-variant:normal;font-weight:500;font-stretch:condensed;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Pluto Sans;-inkscape-font-specification:Pluto Sans Medium Condensed"
370
- y="145.36218"
371
- x="13"
372
- id="tspan5053"
373
- sodipodi:role="line">Filesystem</tspan></text>
374
- </g>
375
- <path
376
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Sstart);marker-end:url(#Arrow2Send)"
377
- d="m 253,258.36218 -166,0 0,33.52872"
378
- id="path5060"
379
- inkscape:connector-curvature="0" />
380
- <text
381
- xml:space="preserve"
382
- style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
383
- x="84"
384
- y="248.36218"
385
- id="text5444"
386
- sodipodi:linespacing="125%"><tspan
387
- sodipodi:role="line"
388
- id="tspan5446"
389
- x="84"
390
- y="248.36218"
391
- style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Pluto Sans;-inkscape-font-specification:Pluto Sans Condensed">Static file acceleration</tspan></text>
392
- <g
393
- id="g6238"
394
- transform="translate(3,133)">
395
- <g
396
- transform="translate(38,-12)"
397
- id="g5462">
398
- <path
399
- style="fill:#6fb6de;fill-opacity:1;stroke:none"
400
- d="m 654,73.875 c -13.71265,0 -24.82895,11.116298 -24.82895,24.828947 0,9.155773 4.99343,17.101053 12.36883,21.405843 -14.03045,5.70434 -24.05304,20.7911 -24.05304,38.47574 0,10.01686 3.24256,19.1791 8.58059,26.28947 l 55.86514,0 c 5.33803,-7.11037 8.58059,-16.27261 8.58059,-26.28947 0,-17.68464 -10.02259,-32.7714 -24.05304,-38.47574 7.3754,-4.30479 12.36883,-12.25007 12.36883,-21.405843 C 678.82895,84.991298 667.71265,73.875 654,73.875 z"
401
- id="path5448"
402
- inkscape:connector-curvature="0" />
403
- <path
404
- style="fill:none;stroke:#3389ff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
405
- d="m 644,106.36218 c 0,0 9.5,12 20,0"
406
- id="path5456"
407
- inkscape:connector-curvature="0"
408
- sodipodi:nodetypes="cc" />
409
- <path
410
- sodipodi:type="arc"
411
- style="fill:#3389ff;fill-opacity:1;stroke:none"
412
- id="path5458"
413
- sodipodi:cx="572.5"
414
- sodipodi:cy="103.86218"
415
- sodipodi:rx="3"
416
- sodipodi:ry="3"
417
- d="m 575.5,103.86218 c 0,1.65686 -1.34315,3 -3,3 -1.65685,0 -3,-1.34314 -3,-3 0,-1.65685 1.34315,-3 3,-3 1.65685,0 3,1.34315 3,3 z"
418
- transform="translate(72.5,-9.5)" />
419
- <path
420
- transform="translate(90.5,-9.5)"
421
- d="m 575.5,103.86218 c 0,1.65686 -1.34315,3 -3,3 -1.65685,0 -3,-1.34314 -3,-3 0,-1.65685 1.34315,-3 3,-3 1.65685,0 3,1.34315 3,3 z"
422
- sodipodi:ry="3"
423
- sodipodi:rx="3"
424
- sodipodi:cy="103.86218"
425
- sodipodi:cx="572.5"
426
- id="path5460"
427
- style="fill:#3389ff;fill-opacity:1;stroke:none"
428
- sodipodi:type="arc" />
429
- </g>
430
- <text
431
- sodipodi:linespacing="125%"
432
- id="text5468"
433
- y="197.36218"
434
- x="691.82397"
435
- style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
436
- xml:space="preserve"><tspan
437
- style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Pluto Sans;-inkscape-font-specification:Pluto Sans"
438
- y="197.36218"
439
- x="691.82397"
440
- id="tspan5470"
441
- sodipodi:role="line">You only deal with one</tspan><tspan
442
- id="tspan5472"
443
- style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Pluto Sans;-inkscape-font-specification:Pluto Sans"
444
- y="219.86218"
445
- x="691.82397"
446
- sodipodi:role="line">thing. Much easier.</tspan></text>
447
- </g>
448
- <path
449
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)"
450
- d="m 525,256.36218 119,0"
451
- id="path5474"
452
- inkscape:connector-curvature="0" />
453
- <path
454
- style="fill:url(#radialGradient3871);fill-opacity:1;stroke:url(#radialGradient3881);stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
455
- d="m 365.31316,30.858157 c -31.87555,3.054126 -58.12241,15.226805 -67.31975,29.681083 -33.71321,4.861688 -58.83608,21.896149 -57.14883,39.5058 1.79097,18.69207 33.103,30.98397 69.93739,27.45472 9.48641,-0.90893 18.42234,-2.79353 26.41904,-5.38809 14.33469,10.45714 41.87556,15.92236 72.75561,12.96362 43.98136,-4.21403 78.07668,-23.89729 76.15403,-43.963782 -1.29771,-13.544074 -18.69292,-23.79842 -43.3747,-27.739499 0.21494,-1.421792 0.26078,-2.848192 0.12347,-4.281294 C 440.98944,39.573986 406.2708,26.93384 365.31316,30.858157 z"
456
- id="path6248"
457
- inkscape:connector-curvature="0" />
458
- <text
459
- xml:space="preserve"
460
- style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#464646;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
461
- x="330"
462
- y="96.362183"
463
- id="text6276"
464
- sodipodi:linespacing="125%"><tspan
465
- sodipodi:role="line"
466
- id="tspan6278"
467
- x="330"
468
- y="96.362183"
469
- style="font-size:36px;font-style:normal;font-variant:normal;font-weight:500;font-stretch:condensed;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Pluto Sans;-inkscape-font-specification:Pluto Sans Medium Condensed;fill:#464646;fill-opacity:1">Web</tspan></text>
470
- <path
471
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:15,15;stroke-dashoffset:0"
472
- d="m 375,141.36218 0,70"
473
- id="path6293"
474
- inkscape:connector-curvature="0" />
475
- <path
476
- transform="matrix(18.915507,0,0,19.762923,-6593.8118,-7739.4215)"
477
- d="m 383,416.36218 a 5,6 0 1 1 -10,0 5,6 0 1 1 10,0 z"
478
- sodipodi:ry="6"
479
- sodipodi:rx="5"
480
- sodipodi:cy="416.36218"
481
- sodipodi:cx="378"
482
- id="path6507"
483
- style="fill:#ffffff;stroke:#000000;stroke-width:0.17735070000000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;fill-opacity:1"
484
- sodipodi:type="arc" />
485
- <text
486
- xml:space="preserve"
487
- style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
488
- x="558.68427"
489
- y="439.86218"
490
- id="text6485"
491
- sodipodi:linespacing="125%"><tspan
492
- sodipodi:role="line"
493
- id="tspan6487"
494
- x="558.68427"
495
- y="439.86218"
496
- style="font-size:16px;font-style:normal;font-variant:normal;font-weight:500;font-stretch:condensed;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Pluto Sans;-inkscape-font-specification:Pluto Sans Medium Condensed">Taken care for you:</tspan><tspan
497
- sodipodi:role="line"
498
- x="558.68427"
499
- y="459.86218"
500
- style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Pluto Sans;-inkscape-font-specification:Pluto Sans Condensed"
501
- id="tspan6489">Process spawning</tspan><tspan
502
- sodipodi:role="line"
503
- x="558.68427"
504
- y="479.86218"
505
- style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Pluto Sans;-inkscape-font-specification:Pluto Sans Condensed"
506
- id="tspan6491">Process scaling</tspan><tspan
507
- sodipodi:role="line"
508
- x="558.68427"
509
- y="499.86218"
510
- style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Pluto Sans;-inkscape-font-specification:Pluto Sans Condensed"
511
- id="tspan6493">Load balancing</tspan><tspan
512
- sodipodi:role="line"
513
- x="558.68427"
514
- y="519.86218"
515
- style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Pluto Sans;-inkscape-font-specification:Pluto Sans Condensed"
516
- id="tspan6495">Multi-core support</tspan><tspan
517
- sodipodi:role="line"
518
- x="558.68427"
519
- y="539.86218"
520
- style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Pluto Sans;-inkscape-font-specification:Pluto Sans Condensed"
521
- id="tspan6497">Supervision</tspan><tspan
522
- sodipodi:role="line"
523
- x="558.68427"
524
- y="559.86218"
525
- style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Pluto Sans;-inkscape-font-specification:Pluto Sans Condensed"
526
- id="tspan6499">...and more!</tspan></text>
527
- <path
528
- sodipodi:type="arc"
529
- style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.44975093;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
530
- id="path6501"
531
- sodipodi:cx="378"
532
- sodipodi:cy="416.36218"
533
- sodipodi:rx="5"
534
- sodipodi:ry="6"
535
- d="m 383,416.36218 a 5,6 0 1 1 -10,0 5,6 0 1 1 10,0 z"
536
- transform="matrix(1.4620453,0,0,1.3017044,-170.15311,-155.1183)" />
537
- <path
538
- transform="matrix(2.095475,0,0,1.9962292,-379.08955,-432.29214)"
539
- d="m 383,416.36218 a 5,6 0 1 1 -10,0 5,6 0 1 1 10,0 z"
540
- sodipodi:ry="6"
541
- sodipodi:rx="5"
542
- sodipodi:cy="416.36218"
543
- sodipodi:cx="378"
544
- id="path6503"
545
- style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
546
- sodipodi:type="arc" />
547
- <path
548
- sodipodi:type="arc"
549
- style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
550
- id="path6505"
551
- sodipodi:cx="378"
552
- sodipodi:cy="416.36218"
553
- sodipodi:rx="5"
554
- sodipodi:ry="6"
555
- d="m 383,416.36218 a 5,6 0 1 1 -10,0 5,6 0 1 1 10,0 z"
556
- transform="matrix(3,0,0,3,-682,-834.72437)" />
557
- </g>
558
- </svg>