Detects all possible Apache installations on the system, and presents the autodetection information to the user in a friendly way. It turns out too many people have multiple Apache installations on their system, but they don't know about that, or they don't know how to compile against the correct Apache installation. This tool helps them.
# File lib/phusion_passenger/platform_info/apache_detector.rb, line 79 def initialize(output) @output = output @results = [] PlatformInfo.verbose = true PlatformInfo.log_implementation = lambda do |message| if message =~ /: found$/ log("<green> * #{message}</green>") else log(" * #{message}") end end end
# File lib/phusion_passenger/platform_info/apache_detector.rb, line 97 def detect_all log "<banner>Looking for possible Apache installations...</banner>" apxses = PlatformInfo.find_all_commands("apxs2") + PlatformInfo.find_all_commands("apxs") apxses = remove_symlink_duplications(apxses) log "" apxses.each do |apxs2| detect_one(apxs2) end end
# File lib/phusion_passenger/platform_info/apache_detector.rb, line 108 def detect_one(apxs2) log "<banner>Analyzing #{apxs2}...</banner>" add_result do |result| result.apxs2 = apxs2 log "Detecting main Apache executable..." result.httpd = PlatformInfo.httpd(:apxs2 => apxs2) if result.httpd if result.version = PlatformInfo.httpd_version(:httpd => result.httpd) log "Version detected: #{result.version}" else log "<red>Cannot detect version!</red>" result.httpd = nil end end if result.httpd log "Detecting control command..." result.ctl = PlatformInfo.apache2ctl(:apxs2 => apxs2) result.httpd = nil if !result.ctl end if result.httpd result.config_file = PlatformInfo.httpd_default_config_file(:httpd => result.httpd) if result.config_file log "Default config file location detected: #{result.config_file}" else log "<red>Cannot detect default config file location!</red>" result.httpd = nil end end if result.httpd result.error_log = PlatformInfo.httpd_actual_error_log(:httpd => result.httpd) if result.error_log log "Error log file detected: #{result.error_log}" else log "<red>Cannot detect error log file!</red>" result.httpd = nil end end if result.httpd if PlatformInfo.httpd_supports_a2enmod?(:httpd => result.httpd) log "This Apache installation does not support a2enmod." else log "Detecting a2enmod and a2dismod..." result.a2enmod = PlatformInfo.a2enmod(:apxs2 => apxs2) result.a2dismod = PlatformInfo.a2dismod(:apxs2 => apxs2) end end if result.httpd log "<green>Found a usable Apache installation using #{apxs2}.</green>" true else log "<yellow>Cannot find a usable Apache installation using #{apxs2}.</yellow>" false end end log "" end
# File lib/phusion_passenger/platform_info/apache_detector.rb, line 92 def finish PlatformInfo.verbose = false PlatformInfo.log_implementation = nil end
# File lib/phusion_passenger/platform_info/apache_detector.rb, line 165 def report log "<banner>Final autodetection results</banner>" @results.each do |result| result.report end if @results.empty? log "<red>Sorry, this program cannot find an Apache installation.</red>" log "" log "To install Apache, please run the following. It will tell you how to install Apache." log "" log " <b>#{PhusionPassenger.bin_dir}/passenger-install-apache2-module</b>" log "" log "If you are sure that you have Apache installed, please read the documentation:" log " * <b>#{PhusionPassenger.doc_dir}/Users guide Apache.html</b>, section" log " section 'Installation' -> 'Customizing the compilation process' ->" log " 'Forcing location of command line tools and dependencies'" log " * Or visit the online version:" log " <b>http://www.modrails.com/documentation/Users%20guide%20Apache.html#_forcing_location_of_command_line_tools_and_dependencies</b>" elsif @results.size > 1 log "<yellow>WARNING: You have multiple Apache installations on your system!</yellow>" log "You are strongly recommended to read this section of the documentation:" log " * <b>#{PhusionPassenger.doc_dir}/Users guide Apache.html</b>, section" log " section 'Installation' -> 'Customizing the compilation process' ->" log " 'Forcing location of command line tools and dependencies'" log " * Or visit the online version:" log " <b>http://www.modrails.com/documentation/Users%20guide%20Apache.html#_forcing_location_of_command_line_tools_and_dependencies</b>" end end
Generated with the Darkfish Rdoc Generator 2.