Installs the Phusion Passenger Standalone runtime by downloading and compiling Nginx, compiling the Phusion Passenger support binaries, and storing the results in the designated directories. This installer is entirely non-interactive.
The following option must be given:
- source_root: Path to the Phusion Passenger source root.
If you want RuntimeInstaller to compile and install Nginx, then you must specify these options:
- nginx_dir: Nginx will be installed into this directory.
- support_dir: See below.
- version (optional): The Nginx version to download. If not given then a hardcoded version number will be used.
- tarball (optional): The location to the Nginx tarball. This tarball must contain the Nginx version as specified by version. If tarball is given then Nginx will not be downloaded; it will be extracted from this tarball instead.
If you want RuntimeInstaller to compile and install the Phusion Passenger support files, then you must specify these:
- support_dir: The support files will be installed here. Should not equal source_root, or funny things might happen.
Other optional options:
- download_binaries: If true then RuntimeInstaller will attempt to download precompiled Nginx binaries and precompiled Phusion Passenger support files from the network, if they exist for the current platform. The default is false.
- binaries_url_root: The URL on which to look for the aforementioned binaries. The default points to the Phusion website.
Please note that RuntimeInstaller will try to avoid compiling/installing things that don‘t need to be compiled/installed. This is done by checking whether some key files exist, and concluding that something doesn‘t need to be compiled/installed if they do. This quick check is of course not perfect; if you want to force a recompilation/reinstall then you should remove nginx_dir and support_dir before starting this installer.
[ show source ]
# File lib/phusion_passenger/standalone/runtime_installer.rb, line 173
173: def after_install
174: super
175: FileUtils.rm_rf(@working_dir)
176: @plugin.call_hook(:runtime_installer_cleanup) if @plugin
177: end
[ show source ]
# File lib/phusion_passenger/standalone/runtime_installer.rb, line 163
163: def before_install
164: super
165: @plugin.call_hook(:runtime_installer_start, self) if @plugin
166: @working_dir = "/tmp/#{myself}-passenger-standalone-#{Process.pid}"
167: FileUtils.rm_rf(@working_dir)
168: FileUtils.mkdir_p(@working_dir)
169: @download_binaries = true if !defined?(@download_binaries)
170: @binaries_url_root ||= STANDALONE_BINARIES_URL_ROOT
171: end
[ show source ]
# File lib/phusion_passenger/standalone/runtime_installer.rb, line 76
76: def dependencies
77: result = [
78: Dependencies::GCC,
79: Dependencies::GnuMake,
80: Dependencies::DownloadTool,
81: Dependencies::Ruby_DevHeaders,
82: Dependencies::Ruby_OpenSSL,
83: Dependencies::RubyGems,
84: Dependencies::Rake,
85: Dependencies::Rack,
86: Dependencies::Curl_Dev,
87: Dependencies::OpenSSL_Dev,
88: Dependencies::Zlib_Dev,
89: Dependencies::File_Tail,
90: Dependencies::Daemon_Controller,
91: ]
92: if Dependencies.fastthread_required?
93: result << Dependencies::FastThread
94: end
95: if Dependencies.asciidoc_required?
96: result << Dependencies::AsciiDoc
97: end
98: return result
99: end
[ show source ]
# File lib/phusion_passenger/standalone/runtime_installer.rb, line 105
105: def install!
106: if @support_dir && @nginx_dir
107: show_welcome_screen
108: end
109: check_dependencies(false) || exit(1)
110: puts
111: if passenger_support_files_need_to_be_installed?
112: check_whether_we_can_write_to(@support_dir) || exit(1)
113: end
114: if nginx_needs_to_be_installed?
115: check_whether_we_can_write_to(@nginx_dir) || exit(1)
116: end
117:
118: if passenger_support_files_need_to_be_installed? && should_download_binaries?
119: download_and_extract_passenger_binaries(@support_dir) do |progress, total|
120: show_progress(progress, total, 1, 1, "Extracting Passenger binaries...")
121: end
122: puts
123: puts
124: end
125: if nginx_needs_to_be_installed? && should_download_binaries?
126: download_and_extract_nginx_binaries(@nginx_dir) do |progress, total|
127: show_progress(progress, total, 1, 1, "Extracting Nginx binaries...")
128: end
129: puts
130: puts
131: end
132:
133: if nginx_needs_to_be_installed?
134: nginx_source_dir = download_and_extract_nginx_sources do |progress, total|
135: show_progress(progress, total, 1, 7, "Extracting...")
136: end
137: if nginx_source_dir.nil?
138: puts
139: show_possible_solutions_for_download_and_extraction_problems
140: exit(1)
141: end
142: end
143: if passenger_support_files_need_to_be_installed?
144: install_passenger_support_files do |progress, total, phase, status_text|
145: if phase == 1
146: show_progress(progress, total, 2, 7, status_text)
147: else
148: show_progress(progress, total, 3..5, 7, status_text)
149: end
150: end
151: end
152: if nginx_needs_to_be_installed?
153: install_nginx_from_source(nginx_source_dir) do |progress, total, status_text|
154: show_progress(progress, total, 6..7, 7, status_text)
155: end
156: end
157:
158: puts
159: color_puts "<green><b>All done!</b></green>"
160: puts
161: end
[ show source ]
# File lib/phusion_passenger/standalone/runtime_installer.rb, line 101
101: def users_guide
102: return "#{DOCDIR}/Users guide Standalone.html"
103: end