Installing nginx 0.7.61 on Mac OS X 10.6 Snow Leopard
$ curl -O ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.9.tar.bz2 $ tar xjvf pcre-7.9.tar.bz2 $ cd pcre-7.9 $ ./configure $ make $ make check $ sudo make install
Installing nginx with the nginx upload module
$ curl -O http://www.grid.net.ru/nginx/download/nginx_upload_module-2.0.10.tar.gz $ tar xzvf nginx_upload_module-2.0.10.tar.gz $ curl -O http://sysoev.ru/nginx/nginx-0.7.61.tar.gz $ tar xzvf nginx-0.7.61.tar.gz $ cd nginx-0.7.61 $ ./configure --prefix=/usr/local/nginx --with-http_ssl_module --add-module=../nginx_upload_module-2.0.10 $ make $ sudo make install
Note that the first time I built using the nginx upload module I ran into problems related to temporary directories (see "Updating to nginx 0.6.36 with the nginx upload module 2.0.9").
$ script/nginx nginx not running: starting [alert]: could not open error log file: open() "/usr/local/nginx/logs/error.log" failed (13: Permission denied) 2009/08/31 12:24:11 [emerg] 12691#0: open() "/usr/local/nginx/tmp/nginx-local.conf" failed (2: No such file or directory)
The first error is a permissions error and is expected because we are running nginx as a normal, unprivileged user. Fix it and retry:
$ sudo chown wincent /usr/local/nginx/logs $ script/nginx nginx not running: starting [emerg]: open() "/usr/local/nginx/tmp/nginx-local.conf" failed (2: No such file or directory)
So the second error remains: it is looking for the config file at
/usr/local/nginx/tmp/nginx-local.conf when it should be looking in
RAILS_ROOT/tmp/nginx-local.conf. We fix that by modifying the
script/nginx script to pass in absolute rather than relative paths. Now retry:
$ script/nginx nginx not running: starting [emerg]: open() "/Users/wincent/trabajo/unversioned/wincent.com/src/tmp/mime.types" failed (2: No such file or directory) in /Users/wincent/trabajo/unversioned/wincent.com/src/tmp/nginx-local.conf:11
More relative path glitches. The config file has a
include mime.types; line in it. Eliminate that error and retry:
$ cp /usr/local/nginx/conf/mime.types tmp/mime.types $ script/nginx nginx not running: starting [warn]: duplicate MIME type "text/html" in /Users/wincent/trabajo/unversioned/wincent.com/src/tmp/nginx-local.conf:25 [warn]: 1024 worker_connections are more than open file resource limit: 256
So it now works, but with two warnings.
Looking a little deeper, the reason why things were broken is found here in the documentation for the
include directive (emphasis added):
Note that until version 0.6.7, paths are relative to what was specified to configure via the --prefix=<PATH> directive, which by default is /usr/local/nginx. If you didn't set this when you compiled Nginx, then use absolute paths.
Since version 0.6.7, paths are relative to directory of nginx configuration file nginx.conf, but not to nginx prefix directory.
Now let's look at the remaining warnings. The message for the first one isn't very helpful, seeing as line 25 corresponds to this part of the configuration file, where there are no obvious defects:
So start by fixing the first one and retrying:
$ script/nginx nginx not running: starting [warn]: duplicate MIME type "text/html" in /Users/wincent/trabajo/unversioned/wincent.com/src/tmp/nginx-local.conf:25
As for the second one, commenting out the
text/html in the
gzip_types directive makes it go away. Looks like this is expected: