большой патч в предверии 0.7.53

Igor Sysoev is at rambler-co.ru
Fri Apr 24 18:58:57 MSD 2009


On Fri, Apr 24, 2009 at 02:23:52PM +0400, Maxim Dounin wrote:

> Hello!
> 
> On Fri, Apr 24, 2009 at 01:29:12PM +0400, Igor Sysoev wrote:
> 
> > On Fri, Apr 24, 2009 at 12:09:41PM +0400, Maxim Dounin wrote:
> > 
> > > Hello!
> > > 
> > > On Fri, Apr 24, 2009 at 10:15:30AM +0400, Igor Sysoev wrote:
> > > 
> > > > On Fri, Apr 24, 2009 at 08:30:18AM +0400, Igor Sysoev wrote:
> > > > 
> > > > > On Fri, Apr 24, 2009 at 01:27:08AM +0400, Maxim Dounin wrote:
> > > > > 
> > > > > > Hello!
> > > > > > 
> > > > > > On Thu, Apr 23, 2009 at 11:14:59PM +0400, Igor Sysoev wrote:
> > > > > > 
> > > > > > > Будущее уже сегодня:
> > > > > > > http://sysoev.ru/tmp/patch.0.7.52.prefix
> > > > > > > 
> > > > > > > В патче много изменений, связанных с ключём -p prefix и выводом ошибок
> > > > > > > на старте и я хочу протестировать его до релиза.
> > > > > > 
> > > > > > Патч чисто не накладывается, ибо у простых смертных нет файла 
> > > > > > auto/configure.  При указании руками что патчить надо configure - 
> > > > > > наложился чисто.
> > > > > > 
> > > > > > >     *) Изменение: теперь лог, указанный в --error-log-path, создаётся с 
> > > > > > >        самого начала работы.
> > > > > > 
> > > > > > $ ./configure --prefix="/usr/home/mdounin/work/nginx-generic/debug-nginx-install" 
> > > > > > ...
> > > > > > 
> > > > > > $ make
> > > > > > ...
> > > > > > 
> > > > > > $ objs/nginx -h
> > > > > > nginx version: nginx/0.7.52
> > > > > > ...
> > > > > >   -p prefix     : set prefix path (default: /usr/home/mdounin/work/nginx-generic/debug-nginx-install/)
> > > > > > ...
> > > > > > 
> > > > > > $ ktrace objs/nginx
> > > > > > [emerg]: could not open error log file: open() "logs/error.log" failed (2: No such file or directory)
> > > > > > 
> > > > > > $ kdump
> > > > > > ...
> > > > > >  36042 nginx    NAMI  "logs/error.log"
> > > > > >  36042 nginx    RET   open -1 errno 2 No such file or directory
> > > > > > ...
> > > > > > 
> > > > > > Но даже если оно будет работать - IMHO это не очень хорошая идея.  
> > > > > > Как минимум test suite оно мне сломает, ибо будет пытаться писать 
> > > > > > в дефоултные места - куда у него прав обычно нет.  Ну и вообще 
> > > > > > имеется шанс сломать много ранее работавших конфигураций.
> > > > > > 
> > > > > > При этом насколько я понимаю никакими средствами кроме -p это не 
> > > > > > лечится, даже -g не поможет.  А через -p всего не сделаешь - путь 
> > > > > > относительно префикса и имя файла не поменяешь.
> > > > > 
> > > > > Буду смотреть, но не понял, что ты имел в виду под не очень хорошей идей. 
> > > 
> > > Я имел ввиду что вне зависимости от опций сборки должна быть 
> > > возможность запустить nginx без каких-либо попыток что-то писать в 
> > > какие-либо файлы, пути которых прилетели из сборки.
> > > 
> > > Сейчас я это делаю через -c и конфиг в котором явно указываются 
> > > error_log и pid_file (ну и для http всякого).
> > > 
> > > Как я это буду делать после вышеозначенного изменения - не 
> > > представляю.
> > 
> > Открытие error_log с самого старта нужно, как минимум, для логирования
> > ошибок запуска при загрузке сервера.
> > 
> > А для отладки я всегда использовал
> >     --prefix=$(PWD)
> >     --error-log-path=stderr
> > 
> > Для тестов сейчас можно делать так:
> >     --prefix=.
> >     --error-log-path=stderr
> 
> Я понимаю что собрать можно так как хочется.  Вопрос что делать 
> если оно *уже* собрано неизвестно как, и надо запустить тест и/или 
> другую копию - не трогая при этом системные пути вообще.
> 
> Реньше это можно было сделать, после патча - нельзя.
> 
> > > > Новая версия, в которой исправлен перфикс для на старте:
> > > > http://sysoev.ru/tmp/patch.0.7.52.1.prefix
> > > 
> > > $ make test
> > > ...
> > > 2009/04/24 11:48:09 [notice] 42427#0: exit
> > > 2009/04/24 11:48:09 [debug] 42427#0: run cleanup: 080EBCB4
> > > 2009/04/24 11:48:09 [debug] 42427#0: cleanup resolver
> > > 2009/04/24 11:48:09 [debug] 42427#0: free: 080DB000, unused: 0
> > > 2009/04/24 11:48:09 [debug] 42427#0: free: 080E4000, unused: 0
> > > 2009/04/24 11:48:09 [debug] 42427#0: free: 080EB000, unused: 3767
> > > ngx_http_upstream_keepalive/t/memcached-keepalive....ok
> > > All tests successful.
> > > Files=22, Tests=193, 52 wallclock secs ( 0.73 usr  3.34 sys +  
> > > 2.30 cusr  8.95 csys = 15.32 CPU)
> > > Result: PASS
> > > 
> > > В том смысле что работать оно работает, но в stderr пишет - мало 
> > > не покажется. :)
> > 
> > Это при каких настройках ?
> 
> $ nginx/objs/nginx -V
> nginx version: nginx/0.7.52
> built by gcc 3.4.6 [FreeBSD] 20060305
> configure arguments: --with-debug --with-cc-opt=-D NGX_DEBUG_MALLOC --with-http_flv_module --with-mail --with-mail_ssl_module --with-ipv6 --add-module=/usr/home/mdounin/work/nginx-generic/ngx_http_upstream_keepalive --add-module=/usr/home/mdounin/work/nginx-generic/ngx_http_bytes_filter_module --prefix=/usr/home/mdounin/work/nginx-generic/debug-nginx-install
> 
> $ cat /usr/home/mdounin/work/nginx-generic/t.conf
> error_log /tmp/error.log debug;
> events { }
> 
> $ nginx/objs/nginx -c /usr/home/mdounin/work/nginx-generic/t.conf
> ... (debug log тут)
> 
> $ ls -la /tmp/error.log
> ls: /tmp/error.log: No such file or directory

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


-- 
Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list