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

Sargas sargaskn на gmail.com
Вт Ноя 28 19:46:48 UTC 2017


Приветствую.

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 пользователь Илья Шипицин <chipitsine на gmail.com>
написал:

>
>
> 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
>>
>
>
> _______________________________________________
> 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/e0248d7e/attachment.html>


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