homebrew-core/Formula/nginx.rb

138 lines
3.8 KiB
Ruby

require 'formula'
class Nginx < Formula
homepage 'http://nginx.org/'
url 'http://nginx.org/download/nginx-1.2.8.tar.gz'
sha1 'b8c193d841538c3c443d262a2ab815a9ce1faaf6'
devel do
url 'http://nginx.org/download/nginx-1.3.15.tar.gz'
sha1 '16488c527078e26c32b0e467120501abf927fc8f'
end
env :userpaths
depends_on 'pcre'
option 'with-passenger', 'Compile with support for Phusion Passenger module'
option 'with-webdav', 'Compile with support for WebDAV module'
option 'with-debug', 'Compile with support for debug log'
option 'with-spdy', 'Compile with support for SPDY module' if build.devel?
skip_clean 'logs'
# Changes default port to 8080
def patches
DATA
end
def passenger_config_args
passenger_root = `passenger-config --root`.chomp
if File.directory?(passenger_root)
return "--add-module=#{passenger_root}/ext/nginx"
end
puts "Unable to install nginx with passenger support. The passenger"
puts "gem must be installed and passenger-config must be in your path"
puts "in order to continue."
exit
end
def install
args = ["--prefix=#{prefix}",
"--with-http_ssl_module",
"--with-pcre",
"--with-ipv6",
"--sbin-path=#{bin}/nginx",
"--with-cc-opt=-I#{HOMEBREW_PREFIX}/include",
"--with-ld-opt=-L#{HOMEBREW_PREFIX}/lib",
"--conf-path=#{etc}/nginx/nginx.conf",
"--pid-path=#{var}/run/nginx.pid",
"--lock-path=#{var}/run/nginx.lock",
"--http-client-body-temp-path=#{var}/run/nginx/client_body_temp",
"--http-proxy-temp-path=#{var}/run/nginx/proxy_temp",
"--http-fastcgi-temp-path=#{var}/run/nginx/fastcgi_temp",
"--http-uwsgi-temp-path=#{var}/run/nginx/uwsgi_temp",
"--http-scgi-temp-path=#{var}/run/nginx/scgi_temp",
"--http-log-path=#{var}/log/nginx"
]
args << passenger_config_args if build.include? 'with-passenger'
args << "--with-http_dav_module" if build.include? 'with-webdav'
args << "--with-debug" if build.include? 'with-debug'
if build.devel?
args << "--with-http_spdy_module" if build.include? 'with-spdy'
end
system "./configure", *args
system "make"
system "make install"
man8.install "objs/nginx.8"
(var/'run/nginx').mkpath
prefix.cd do
dst = HOMEBREW_PREFIX/"var/www"
if not dst.exist?
mv "html", dst
dst.dirname.mkdir_p
else
rm_rf "html"
dst.mkpath
end
Pathname.new("#{prefix}/html").make_relative_symlink(dst)
end
end
def caveats; <<-EOS.undent
Docroot is: #{HOMEBREW_PREFIX}/var/www
The default port has been set to 8080 so that nginx can run without sudo.
If you want to host pages on your local machine to the wider network you
can change the port to 80 in: #{HOMEBREW_PREFIX}/etc/nginx/nginx.conf
You will then need to run nginx as root: `sudo nginx`.
EOS
end
def plist; <<-EOS.undent
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>#{plist_name}</string>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<false/>
<key>ProgramArguments</key>
<array>
<string>#{opt_prefix}/sbin/nginx</string>
<string>-g</string>
<string>daemon off;</string>
</array>
<key>WorkingDirectory</key>
<string>#{HOMEBREW_PREFIX}</string>
</dict>
</plist>
EOS
end
end
__END__
--- a/conf/nginx.conf
+++ b/conf/nginx.conf
@@ -33,7 +33,7 @@
#gzip on;
server {
- listen 80;
+ listen 8080;
server_name localhost;
#charset koi8-r;