just run this command on your mac:
brew install https://gist.github.com/raw/1007028/66c1911132a2970b9df9723bd8063ac13e926993/nginx.rb
require 'formula' | |
class Nginx < Formula | |
homepage 'http://nginx.org/' | |
url 'http://nginx.org/download/nginx-1.0.2.tar.gz' | |
md5 '8a528ccaab3ddba84e72443fa40b19e7' | |
depends_on 'pcre' | |
skip_clean 'logs' | |
def patches | |
# Changes default port to 8080 | |
# Set configure to look in homebrew prefix for pcre | |
[ | |
DATA, | |
'https://github.com/yaoweibin/nginx_tcp_proxy_module/raw/master/tcp.patch' | |
] | |
end | |
def options | |
[ | |
['--with-passenger', "Compile with support for Phusion Passenger module"], | |
['--with-webdav', "Compile with support for WebDAV module"] | |
] | |
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", | |
"--conf-path=#{etc}/nginx/nginx.conf", | |
"--pid-path=#{var}/run/nginx.pid", | |
"--add-module=./nginx_tcp_proxy_module", | |
"--lock-path=#{var}/nginx/nginx.lock"] | |
args << passenger_config_args if ARGV.include? '--with-passenger' | |
args << "--with-http_dav_module" if ARGV.include? '--with-webdav' | |
system "git clone git://github.com/yaoweibin/nginx_tcp_proxy_module" | |
system "./configure", *args | |
system "make install" | |
(prefix+'org.nginx.nginx.plist').write startup_plist | |
end | |
def caveats | |
<<-CAVEATS | |
In the interest of allowing you to run `nginx` without `sudo`, the default | |
port is set to localhost:8080. | |
If you want to host pages on your local machine to the public, you should | |
change that to localhost:80, and run `sudo nginx`. You'll need to turn off | |
any other web servers running port 80, of course. | |
You can start nginx automatically on login with: | |
mkdir -p ~/Library/LaunchAgents | |
cp #{prefix}/org.nginx.nginx.plist ~/Library/LaunchAgents/ | |
launchctl load -w ~/Library/LaunchAgents/org.nginx.nginx.plist | |
CAVEATS | |
end | |
def startup_plist | |
return <<-EOPLIST | |
<?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>org.nginx.nginx</string> | |
<key>RunAtLoad</key> | |
<true/> | |
<key>KeepAlive</key> | |
<true/> | |
<key>UserName</key> | |
<string>#{`whoami`.chomp}</string> | |
<key>ProgramArguments</key> | |
<array> | |
<string>#{sbin}/nginx</string> | |
<string>-g</string> | |
<string>daemon off;</string> | |
</array> | |
<key>WorkingDirectory</key> | |
<string>#{HOMEBREW_PREFIX}</string> | |
</dict> | |
</plist> | |
EOPLIST | |
end | |
end | |
__END__ | |
--- a/auto/lib/pcre/conf | |
+++ b/auto/lib/pcre/conf | |
@@ -155,6 +155,22 @@ else | |
. auto/feature | |
fi | |
+ if [ $ngx_found = no ]; then | |
+ | |
+ # Homebrew | |
+ HOMEBREW_PREFIX=${NGX_PREFIX%Cellar*} | |
+ ngx_feature="PCRE library in ${HOMEBREW_PREFIX}" | |
+ ngx_feature_path="${HOMEBREW_PREFIX}/include" | |
+ | |
+ if [ $NGX_RPATH = YES ]; then | |
+ ngx_feature_libs="-R${HOMEBREW_PREFIX}/lib -L${HOMEBREW_PREFIX}/lib -lpcre" | |
+ else | |
+ ngx_feature_libs="-L${HOMEBREW_PREFIX}/lib -lpcre" | |
+ fi | |
+ | |
+ . auto/feature | |
+ fi | |
+ | |
if [ $ngx_found = yes ]; then | |
CORE_DEPS="$CORE_DEPS $REGEX_DEPS" | |
CORE_SRCS="$CORE_SRCS $REGEX_SRCS" | |
--- 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; |