Upcoming 0.7.53 large patch

Future even today:
http://sysoev.ru/tmp/patch.0.7.52.prefix

There are many changes related to the “-p prefix” switch support
and the start up error logging and I want to test them before release.

*) Change: now a log set by --error-log-path is created from the 

very
start up.

*) Feature: now the start up errors and warnings are outputted to an
   error_log and stderr.

*) Feature: the --prefix=. configure parameter forces nginx to use
   current directory as prefix.

*) Feature: the -p switch.

*) Feature: the -s switch on Unix platforms.

*) Feature: the -? and -h switches.

*) Feature: now switches may be set in condensed form.

*) Bugfix: the "fastcgi_cache_min_uses" directive did not work.

Hi igor,

in order to compile the patch version, I had to modify the patch
because it tried to patch auto/configure. The configure is in the root
directory, not in auto. Or I misunderstood something ?

Then I didn’t understand how the -p option works. I made the following
test:
./configure
/usr/local/nginx/sbin/nginx -p /root/test/nginx

but all file are relative to the default prefix (/usr/local/nginx)
except the root directive which is relative to /root/test/nginx in my
case.

Thx for the answers
++ jerome

2009/4/23 Igor S. [email protected]:

but all file are relative to the default prefix (/usr/local/nginx)
except the root directive which is relative to /root/test/nginx in my
case.

I don’t know what I did but this behaviour is not the one I described
earlier.

The test is the following!
.#/configure
#make && make install

/usr/local/nginx/sbin/nginx -V

nginx version: nginx/0.7.52
configure arguments:

(cd /tmp && /usr/local/nginx/sbin/nginx)

[emerg]: could not open error log file: open() “logs/error.log” failed
(2: )

(cd /path/where/logs/directory/exists && /usr/local/nginx/sbin/nginx)

[emerg]: open() “conf/conf/nginx.conf” failed (2: )

(cd /tmp && strace -e open /usr/local/nginx/sbin/nginx -p

/root/test/nginx/)
[emerg]: could not open error log file: open() “logs/error.log” failed
(2: )

It seems there is a bug with the default error_log and/or the prefix.

++ Jerome

2009/4/24 Igor S. [email protected]:

/usr/local/nginx/sbin/nginx -p /root/test/nginx

/usr/local/nginx/sbin/nginx -V

[emerg]: could not open error log file: open() “logs/error.log” failed (2: )

It seems there is a bug with the default error_log and/or the prefix.

A new version, that fixes startup error log prefix:

http://sysoev.ru/tmp/patch.0.7.52.1.prefix

BTW, what OS do you use ? Recently I saw messages without text
description of error: “open() “logs/error.log” failed (2: )”.
while it should be “(2: No such file or directory)”.

I’m using linux ubuntu 8.04.

On Fri, Apr 24, 2009 at 08:35:58AM +0200, J?r?me Loyet wrote:

description of error: “open() “logs/error.log” failed (2: )”.
while it should be “(2: No such file or directory)”.

I’m using linux ubuntu 8.04.

What does “./configure | grep strerror” show ?

On Fri, Apr 24, 2009 at 12:25:09AM +0200, J?r?me Loyet wrote:

but all file are relative to the default prefix (/usr/local/nginx)
configure arguments:
It seems there is a bug with the default error_log and/or the prefix.
A new version, that fixes startup error log prefix:

http://sysoev.ru/tmp/patch.0.7.52.1.prefix

BTW, what OS do you use ? Recently I saw messages without text
description of error: “open() “logs/error.log” failed (2: )”.
while it should be “(2: No such file or directory)”.

2009/4/24 Igor S. [email protected]:

BTW, what OS do you use ? Recently I saw messages without text
description of error: “open() “logs/error.log” failed (2: )”.
while it should be “(2: No such file or directory)”.

I’m using linux ubuntu 8.04.

What does “./configure | grep strerror” show ?

root@wild:~/nginx-0.7.52# ./configure | grep strerror
checking for strerror_r() … found
checking for gnu style strerror_r() … found but is not working

2009/4/24 Igor S. [email protected]:

A new version, that fixes startup error log prefix:

root@wild:~/nginx-0.7.52# ./configure | grep strerror
checking for strerror_r() … found
checking for gnu style strerror_r() … found but is not working

Could you test the attached patch ? It seems it was broken in 0.7.45.

This patch correct the bug for str_error_r.

On Fri, Apr 24, 2009 at 09:48:52AM +0200, J?r?me Loyet wrote:

http://sysoev.ru/tmp/patch.0.7.52.1.prefix
checking for strerror_r() … found
checking for gnu style strerror_r() … found but is not working

Could you test the attached patch ? It seems it was broken in 0.7.45.

On Fri, Apr 24, 2009 at 02:43:43PM +0200, J?r?me Loyet wrote:

open() “/root/test/nginx/docs/sdfsdfsdfs” failed (2: No such file or
directory), client: 160.92.7.69, server: localhost, request: “GET
/sdfsdfsdfs HTTP/1.0”, host: “wild.xxxxxxxx.com

The file /root/test/nginx/logs/error.log is created but stays empty.
And for information it’s owned by user root.

Hope this help

http://sysoev.ru/tmp/patch.0.7.52.2.prefix

2009/4/24 Igor S. [email protected]:

/usr/local/nginx/sbin/nginx -p /root/test/nginx

/usr/local/nginx/sbin/nginx -V

[emerg]: could not open error log file: open() “logs/error.log” failed (2: )

It seems there is a bug with the default error_log and/or the prefix.

A new version, that fixes startup error log prefix:

http://sysoev.ru/tmp/patch.0.7.52.1.prefix

here the test I made:
#tar -xzvf nginx-0.7.52.tar.gz

cd nginx-0.7.52

patch -p0 < …/patch.0.7.52.1.prefix

patch -p0 < …/patch.gnu_strerror_r

#./configure
#make && make install

(cd /tmp && /usr/local/nginx/sbin/nginx)

[emerg]: could not open error log file: open() “/logs/error.log”
failed (2: No such file or directory)

it should be /usr/local/nginx/logs/error.log

(cd /tmp && /usr/local/nginx/sbin/nginx -p /root/test/nginx)

2009/04/24 14:38:57 [notice] 27082#0: using the “epoll” event method
2009/04/24 14:38:57 [notice] 27082#0: nginx/0.7.52
2009/04/24 14:38:57 [notice] 27082#0: OS: Linux
2.6.25.4dedibox-r9-smp-x32
2009/04/24 14:38:57 [notice] 27082#0: getrlimit(RLIMIT_NOFILE):
1024:1024
2009/04/24 14:38:57 [notice] 27083#0: start worker processes
2009/04/24 14:38:57 [notice] 27083#0: start worker process 27084
root@wild:~/nginx-0.7.52# 2009/04/24 14:39:04 [error] 27084#0: *1
open() “/root/test/nginx/docs/sdfsdfsdfs” failed (2: No such file or
directory), client: 160.92.7.69, server: localhost, request: “GET
/sdfsdfsdfs HTTP/1.0”, host: “wild.xxxxxxxx.com

The file /root/test/nginx/logs/error.log is created but stays empty.
And for information it’s owned by user root.

Hope this help

2009/4/24 Igor S. [email protected]:

[emerg]: could not open error log file: open() “/logs/error.log”
2009/04/24 14:38:57 [notice] 27083#0: start worker process 27084
http://sysoev.ru/tmp/patch.0.7.52.2.prefix
Still the same problem:

root@wild:~/nginx-0.7.52# (cd /tmp && /usr/local/nginx/sbin/nginx)
[emerg]: could not open error log file: open() “/logs/error.log”
failed (2: No such file or directory)

Why does NGX_PREFIX is set to / ?
#ifndef NGX_PREFIX
#define NGX_PREFIX “/”
#endif

On Fri, Apr 24, 2009 at 05:58:43PM +0200, J?r?me Loyet wrote:

#define NGX_PREFIX “/”
#endif

Could you show ./configure options ?

no options:

./configure
make
make install

2009/4/24 Igor S. [email protected]:

On Fri, Apr 24, 2009 at 06:43:25PM +0200, J?r?me Loyet wrote:

Could you show ./configure options ?

This patch fixes the bug:
http://sysoev.ru/tmp/patch.0.7.52.3.prefix

Now

./configure # prefix is /usr/local/nginx

./configure --prefix= # no prefix at all, “make install” has no
sense
# nginx will use directory where it was run as
prefix

./configure --prefix=XXXX # prefix is XXXX

2009/4/24 Igor S. [email protected]:

#define NGX_PREFIX “/”

./configure --prefix= # no prefix at all, “make install” has no sense
# nginx will use directory where it was run as prefix

./configure --prefix=XXXX # prefix is XXXX

it seems to be much better. I’ll make some tests later.

++ Jerome

On Fri, Apr 24, 2009 at 05:58:43PM +0200, J?r?me Loyet wrote:

(cd /tmp && /usr/local/nginx/sbin/nginx)

2009/04/24 14:38:57 [notice] 27083#0: start worker processes

#define NGX_PREFIX “/”
#endif

It seems you used ./configure --prefix= ?