Created
April 9, 2020 17:34
-
-
Save rajputvai/d7f48fe7673a6aff4789a424212a5e31 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| require 'fileutils' | |
| res = `which passenger-config` | |
| if $?.exitstatus != 0 | |
| puts "`passenger-config` not found, Passenger might not be installed.\n`gem install passenger -v 6.0.4`.\n" | |
| exit(-1) | |
| end | |
| path = "#{Dir.pwd}/nginx" | |
| nginx_download_url = "http://nginx.org/download/nginx-1.12.2.tar.gz" | |
| nchan_download_url = "https://github.com/slact/nchan/archive/v1.2.7.tar.gz" | |
| upload_module_url = "https://github.com/Austinb/nginx-upload-module/archive/2.2.zip" | |
| build_arguments = [ | |
| #"--add-module=$(passenger-config --nginx-addon-dir)" | |
| "--with-http_gzip_static_module", | |
| "--with-http_ssl_module" | |
| ] | |
| puts "\nBuilding nginx in #{path}....\n\n" | |
| puts "Clearing contents in #{path}...." | |
| unless (FileUtils.rm_rf(path)) | |
| puts "#{res}\nFailed to delete directory #{path}" | |
| exit(-1) | |
| end | |
| unless FileUtils.mkdir_p("#{path}/tmp") | |
| puts "#{res}\nFailed to create directory #{path}/tmp" | |
| exit(-1) | |
| end | |
| upload_module_name = "" | |
| nchan_name = "" | |
| nginx_name = "" | |
| FileUtils.cd("#{path}/tmp") do | |
| puts "Downloading nginx #{nginx_download_url}...." | |
| res = `wget #{nginx_download_url}` | |
| if $?.exitstatus != 0 | |
| puts "#{res}\nFailed to download nginx" | |
| exit(-1) | |
| end | |
| nginx_name = nginx_download_url.split("/").last | |
| puts "unpacking nginx...." | |
| res = `tar -xvf #{nginx_name}` | |
| if $?.exitstatus != 0 | |
| puts "#{res}\nFailed to unpack nginx" | |
| exit(-1) | |
| end | |
| FileUtils.rm(nginx_name) | |
| nginx_name = nginx_name.gsub(".tar.gz","") | |
| puts "Downloading nchan #{nchan_download_url}...." | |
| res = `wget #{nchan_download_url}` | |
| if $?.exitstatus != 0 | |
| puts "#{res}\nFailed to download nchan" | |
| exit(-1) | |
| end | |
| nchan_name = nchan_download_url.split("/").last | |
| puts "Unpacking nchan...." | |
| res = `tar -xvf #{nchan_name}` | |
| if $?.exitstatus != 0 | |
| puts "#{res}\nFailed to unpack nchan" | |
| exit(-1) | |
| end | |
| FileUtils.rm(nchan_name) | |
| #nchan is unpacked to `nchan-version` | |
| nchan_name = "nchan-#{nchan_name.gsub('.tar.gz','').gsub('v','')}" | |
| puts "Downloading upload module #{upload_module_url}...." | |
| res = `wget #{upload_module_url}` | |
| if $?.exitstatus != 0 | |
| puts "#{res}\nFailed to download upload module" | |
| exit(-1) | |
| end | |
| upload_module_name = upload_module_url.split("/").last | |
| puts "Unpacking upload module...." | |
| res = `unzip #{upload_module_name}` | |
| if $?.exitstatus != 0 | |
| puts "#{res}\nFailed to unpack upload module" | |
| exit(-1) | |
| end | |
| upload_module_name = "nginx-upload-module-2.2" | |
| end | |
| FileUtils.cd(path) do | |
| puts "checking passenger..." | |
| res = `passenger-config --nginx-addon-dir` | |
| passenger_nginx_addon = res.strip | |
| ########################################################################################## | |
| #prepare build | |
| build_arguments << "--add-module=#{path}/tmp/#{upload_module_name}" | |
| build_arguments << "--add-module=#{path}/tmp/#{nchan_name}" | |
| build_arguments << "--add-module=#{passenger_nginx_addon}" | |
| build_arguments << "--prefix=#{path}" | |
| nginx_name = "#{path}/tmp/#{nginx_name}" | |
| puts "Configuring build....\ncd #{nginx_name} && ./configure #{build_arguments.join(" ")}\n" | |
| res = `cd #{nginx_name} && ./configure #{build_arguments.join(" ")}` | |
| if $?.exitstatus != 0 | |
| puts "#{res}\n | |
| *****************************\n | |
| Failed to configure build, might need manual installation of packages, see above output\n | |
| ***************************\n" | |
| exit(-1) | |
| end | |
| `sed -i -- 's/ngx_atomic_fetch_add(&head->shared->sub_count, head->total_sub_count - head->internal_sub_count);/ /g' /Users/vaibhav/nginx/tmp/nchan-1.2.7/src/store/memory/ipc-handlers.c` | |
| puts "trying to make....\ncd #{nginx_name} && make\n" | |
| res = `cd #{nginx_name} && make -i` | |
| if $?.exitstatus != 0 | |
| puts "#{res}\nFailed to make\n" | |
| exit(-1) | |
| end | |
| puts "trying to install....\ncd #{nginx_name} && make install\n" | |
| res = `cd #{nginx_name} && make install` | |
| if $?.exitstatus != 0 | |
| puts "#{res}\nFailed to make install\n" | |
| exit(-1) | |
| end | |
| #clearing all tmp files | |
| FileUtils.rm_rf("#{path}/tmp") | |
| puts "Build complete in #{path}" | |
| #creating ngix temp folders | |
| FileUtils.mkdir_p("#{path}/client_body_temp") | |
| FileUtils.mkdir_p("#{path}/proxy_temp") | |
| puts "COPY CERTIFICATES AND CONFIG FILES TO #{path}/conf/\n\n" | |
| end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment