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

Илья Шипицин chipitsine на gmail.com
Вт Ноя 28 18:34:02 UTC 2017


28 ноября 2017 г., 20:52 пользователь Иван <nginx на kinetiksoft.com> написал:

> Здравствуйте!
>
>
>
> 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
>
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20171128/58b75dd3/attachment-0001.html>


Подробная информация о списке рассылки nginx-ru