Re: nginx и смена симлинков

2017-11-28 Пенетрантность Иван
Здравствуйте!

В письме от вторник, 28 ноября 2017 г. 21:34:02 MSK пользователь Илья Шипицин 
написал:
> 
> сделайте тут проксирование на апстрим (в котором перечислены несколько
> бекендов)
> fastcgi_connect_timeout  сделайте минимальным
> 
> 
> достаточно будет запустить тот или иной бекенд
> 
> (не уверен, что с unix-сокетами получится, в крайнем случае можно на tcp
> проксировать)
> 

Мне в итоге помог предложенный чуть ранее и дополненный тут: https://
stackoverflow.com/questions/23737627/php-opcache-reset-symlink-style-deployment/
23904770#23904770 

совет сделать

fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;

Меня теперь волнует не выполняет ли nginx тот самый "тяжелый" 
(как описано, например, https://habrahabr.ru/post/266909/) realpath 
при использовании $realpath_root.

По непосредственно вашему способу вопрос только один, учитывая исторически
багнутый reload в php-fpm не понятно как запускать\останавливать один пул php,
не трогая другие.

С уважением, Иван.
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: nginx и смена симлинков

2017-11-28 Пенетрантность Sargas
Приветствую.

1) Закомментируйте в файле fastcgi_params параметр SCRIPT_FILENAME , если
еще не сделали этого
2)
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
замените $document_root на $realpath_root
fastcgi_param SCRIPT_FILENAME $realpath_root/index.php;

Почитать про переменную можно тут
http://nginx.org/ru/docs/http/ngx_http_core_module.html
И как выше советовали почитайте про php realpath cache чтобы было понимание.

3)
> # /var/www/html указывает на /var/www/stable , переключаемся на current

>rm /var/www/html; ln -s /var/www/current/ /var/www/html

Я бы переделал чуть по другому.
ln -s path_to_latest_release /var/www/html_tmp
mv -Tf /var/www/html_tmp /var/www/html


28 ноября 2017 г., 20:34 пользователь Илья Шипицин 
написал:

>
>
> 28 ноября 2017 г., 20:52 пользователь Иван 
> написал:
>
>> Здравствуйте!
>>
>>
>>
>> nginx 1.12.2, debian 8, php-fpm (5.6)
>>
>> # nginx -V
>> nginx version: nginx/1.12.2
>> built by gcc 4.9.2 (Debian 4.9.2-10)
>> built with OpenSSL 1.0.1t  3 May 2016
>> TLS SNI support enabled
>> configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx
>> --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf
>> --error-log-path=/va
>> r/log/nginx/error.log --http-log-path=/var/log/nginx/access.log
>> --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock
>> --http-client-body-temp-path=/var/c
>> ache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp
>> --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp
>> --http-uwsgi-temp-path=/var/cach
>> e/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp
>> --user=nginx --group=nginx --with-compat --with-file-aio --with-threads
>> --with-http_addition_
>> module --with-http_auth_request_module --with-http_dav_module
>> --with-http_flv_module --with-http_gunzip_module
>> --with-http_gzip_static_module --with-http_mp4_mod
>> ule --with-http_random_index_module --with-http_realip_module
>> --with-http_secure_link_module --with-http_slice_module
>> --with-http_ssl_module --with-http_stub_sta
>> tus_module --with-http_sub_module --with-http_v2_module --with-mail
>> --with-mail_ssl_module --with-stream --with-stream_realip_module
>> --with-stream_ssl_module --w
>> ith-stream_ssl_preread_module --with-cc-opt='-g -O2
>> -fstack-protector-strong -Wformat -Werror=format-security
>> -Wp,-D_FORTIFY_SOURCE=2 -fPIC' --with-ld-opt='-Wl,-
>> z,relro -Wl,-z,now -Wl,--as-needed -pie'
>>
>>
>>
>> Есть самописное приложение на php. У него есть две версии: stable и
>> current. Для быстрой смены используется следующая схема:
>>
>> /var/www/stable/ - тут лежит stable
>>
>> /var/www/current/ - тут лежит current
>>
>> /var/www/html - симлинк на на /var/www/stable или /var/www/current
>>
>>
>>
>> В nginx пыха сконфигурирована как
>>
>>
>>
>> root /var/www/html;
>>
>> location / {
>>
>> fastcgi_pass unix:/run/php-fpm.socket;
>>
>
> сделайте тут проксирование на апстрим (в котором перечислены несколько
> бекендов)
> fastcgi_connect_timeout  сделайте минимальным
>
>
>
>> include fastcgi_params;
>>
>> fastcgi_param SCRIPT_FILENAME $document_root/index.php;
>>
>> }
>>
>>
>>
>> Проблема в том. что при переключение stable->current (и наоборот),
>>
>
> достаточно будет запустить тот или иной бекенд
>
> (не уверен, что с unix-сокетами получится, в крайнем случае можно на tcp
> проксировать)
>
>
>
>> которая происходит примерно так:
>>
>> # /var/www/html указывает на /var/www/stable , переключаемся на current
>>
>> rm /var/www/html; ln -s /var/www/current/ /var/www/html
>>
>>
>>
>> до упора используются файлы из старой директории (stable в примере выше).
>> Не помогает ни очистка opcache, ни рестарт пыхи. Только restart (возможно
>> reload, не уверен) nginx.
>>
>> Хотелось бы
>>
>> 1) понять почему так. nginx где-то как-то кеширует куда указывает симлинк?
>>
>> 2) избежать этого ("троганья" nginx (в идеале и рестарта php-fpm), в
>> принципе готовы поменять воркфлоу, но пока не понимаем как.
>>
>>
>>
>> С уважением, Иван.
>>
>> ___
>> nginx-ru mailing list
>> nginx-ru@nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>>
>
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: nginx и смена симлинков

2017-11-28 Пенетрантность Илья Шипицин
28 ноября 2017 г., 20:52 пользователь Иван  написал:

> Здравствуйте!
>
>
>
> nginx 1.12.2, debian 8, php-fpm (5.6)
>
> # nginx -V
> nginx version: nginx/1.12.2
> built by gcc 4.9.2 (Debian 4.9.2-10)
> built with OpenSSL 1.0.1t  3 May 2016
> TLS SNI support enabled
> configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx
> --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf
> --error-log-path=/va
> r/log/nginx/error.log --http-log-path=/var/log/nginx/access.log
> --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock
> --http-client-body-temp-path=/var/c
> ache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp
> --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp
> --http-uwsgi-temp-path=/var/cach
> e/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp
> --user=nginx --group=nginx --with-compat --with-file-aio --with-threads
> --with-http_addition_
> module --with-http_auth_request_module --with-http_dav_module
> --with-http_flv_module --with-http_gunzip_module
> --with-http_gzip_static_module --with-http_mp4_mod
> ule --with-http_random_index_module --with-http_realip_module
> --with-http_secure_link_module --with-http_slice_module
> --with-http_ssl_module --with-http_stub_sta
> tus_module --with-http_sub_module --with-http_v2_module --with-mail
> --with-mail_ssl_module --with-stream --with-stream_realip_module
> --with-stream_ssl_module --w
> ith-stream_ssl_preread_module --with-cc-opt='-g -O2
> -fstack-protector-strong -Wformat -Werror=format-security
> -Wp,-D_FORTIFY_SOURCE=2 -fPIC' --with-ld-opt='-Wl,-
> z,relro -Wl,-z,now -Wl,--as-needed -pie'
>
>
>
> Есть самописное приложение на php. У него есть две версии: stable и
> current. Для быстрой смены используется следующая схема:
>
> /var/www/stable/ - тут лежит stable
>
> /var/www/current/ - тут лежит current
>
> /var/www/html - симлинк на на /var/www/stable или /var/www/current
>
>
>
> В nginx пыха сконфигурирована как
>
>
>
> root /var/www/html;
>
> location / {
>
> fastcgi_pass unix:/run/php-fpm.socket;
>

сделайте тут проксирование на апстрим (в котором перечислены несколько
бекендов)
fastcgi_connect_timeout  сделайте минимальным



> include fastcgi_params;
>
> fastcgi_param SCRIPT_FILENAME $document_root/index.php;
>
> }
>
>
>
> Проблема в том. что при переключение stable->current (и наоборот),
>

достаточно будет запустить тот или иной бекенд

(не уверен, что с unix-сокетами получится, в крайнем случае можно на tcp
проксировать)



> которая происходит примерно так:
>
> # /var/www/html указывает на /var/www/stable , переключаемся на current
>
> rm /var/www/html; ln -s /var/www/current/ /var/www/html
>
>
>
> до упора используются файлы из старой директории (stable в примере выше).
> Не помогает ни очистка opcache, ни рестарт пыхи. Только restart (возможно
> reload, не уверен) nginx.
>
> Хотелось бы
>
> 1) понять почему так. nginx где-то как-то кеширует куда указывает симлинк?
>
> 2) избежать этого ("троганья" nginx (в идеале и рестарта php-fpm), в
> принципе готовы поменять воркфлоу, но пока не понимаем как.
>
>
>
> С уважением, Иван.
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: nginx и смена симлинков

2017-11-28 Пенетрантность Aleksandr Sytar
28 ноября 2017 г., 18:52 пользователь Иван  написал:

> Здравствуйте!
>
>
>
> nginx 1.12.2, debian 8, php-fpm (5.6)
>
>
> /var/www/html - симлинк на на /var/www/stable или /var/www/current
>
>
>
...

> Хотелось бы
>
> 1) понять почему так. nginx где-то как-то кеширует куда указывает симлинк?
>
> 2) избежать этого ("троганья" nginx (в идеале и рестарта php-fpm), в
> принципе готовы поменять воркфлоу, но пока не понимаем как.
>

>

Nginx тут не причем. Смотрите в сторону настроек вашего php-бекенда, в
частности кеша realpath.
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

nginx и смена симлинков

2017-11-28 Пенетрантность Иван
Здравствуйте!

nginx 1.12.2, debian 8, php-fpm (5.6)
*# *nginx -V 


Есть самописное приложение на php. У него есть две версии: stable и current. 
Для 
быстрой смены используется следующая схема:
/var/www/stable/ - тут лежит stable
/var/www/current/ - тут лежит current
/var/www/html - симлинк на на /var/www/stable или /var/www/current

В nginx пыха сконфигурирована как

root /var/www/html;
location / {
fastcgi_pass unix:/run/php-fpm.socket;
includefastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
}

Проблема в том. что при переключение stable->current (и наоборот), которая 
происходит примерно так:
# /var/www/html указывает на  /var/www/stable , переключаемся на current
rm /var/www/html; ln -s /var/www/current/  /var/www/html

до упора используются файлы из старой директории (stable в примере выше). Не 
помогает ни очистка opcache, ни рестарт пыхи. Только restart (возможно reload, 
не 
уверен) nginx. 
Хотелось бы
1) понять почему так. nginx где-то как-то кеширует куда указывает симлинк?
2) избежать этого ("троганья" nginx (в идеале и рестарта php-fpm), в принципе 
готовы 
поменять воркфлоу, но пока не понимаем как.

С уважением, Иван.
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru