<div dir="ltr"><div><div><div>Приветствую.</div><div><br></div><div>1) Закомментируйте в файле fastcgi_params параметр SCRIPT_FILENAME , если еще не сделали этого</div><div>2) <br></div><div>fastcgi_param SCRIPT_FILENAME $document_root/index.php;<br></div>замените  $document_root на <code>$realpath_root<br></code><code>fastcgi_param SCRIPT_FILENAME </code><code><code>$realpath_root</code>/index.php;<br><br></code></div><code>Почитать про переменную можно тут <a href="http://nginx.org/ru/docs/http/ngx_http_core_module.html">http://nginx.org/ru/docs/http/ngx_http_core_module.html</a><br></code></div><code><code><code>И как выше советовали почитайте про php realpath cache чтобы было понимание.<br></code></code></code><div><code><code><code><br>3)</code></code></code></div><div><code><code><code> ></code></code></code> # /var/www/html указывает на  /var/www/stable , переключаемся на current
<p style="margin:0px;text-indent:0px">>rm /var/www/html; ln -s /var/www/current/  /var/www/html</p><code><code><code></code></code></code><div><br></div><div>Я бы переделал чуть по другому.</div><div>ln -s path_to_latest_release /var/www/html_tmp</div><div>mv -Tf /var/www/html_tmp /var/www/html<br></div><div><br><code></code></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">28 ноября 2017 г., 20:34 пользователь Илья Шипицин <span dir="ltr"><<a href="mailto:chipitsine@gmail.com" target="_blank">chipitsine@gmail.com</a>></span> написал:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">28 ноября 2017 г., 20:52 пользователь Иван <span dir="ltr"><<a href="mailto:nginx@kinetiksoft.com" target="_blank">nginx@kinetiksoft.com</a>></span> написал:<span class=""><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><u></u>
<div style="font-family:"Noto Sans";font-size:12pt;font-weight:400;font-style:normal">
<p style="margin:0px;text-indent:0px">Здравствуйте!</p>
<p style="margin:0px;text-indent:0px"> </p>
<p style="margin:0px;text-indent:0px">nginx 1.12.2, debian 8, php-fpm (5.6)</p>
<p style="margin:0px;text-indent:0px"><span style="font-family:"monospace";font-weight:600;color:rgb(255,84,84);background-color:rgb(255,255,255)"># </span><span style="font-family:"monospace";color:rgb(0,0,0);background-color:rgb(255,255,255)">nginx -V </span><span style="font-family:"monospace""><br>nginx version: nginx/1.12.2 <br>built by gcc 4.9.2 (Debian 4.9.2-10)  <br>built with OpenSSL 1.0.1t  3 May 2016 <br>TLS SNI support enabled <br>configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/<wbr>modules --conf-path=/etc/nginx/nginx.c<wbr>onf --error-log-path=/va<br>r/log/nginx/error.log --http-log-path=/var/log/nginx<wbr>/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.loc<wbr>k --http-client-body-temp-path=/<wbr>var/c<br>ache/nginx/client_temp --http-proxy-temp-path=/var/ca<wbr>che/nginx/proxy_temp --http-fastcgi-temp-path=/var/<wbr>cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/ca<wbr>ch<br>e/nginx/uwsgi_temp --http-scgi-temp-path=/var/cac<wbr>he/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_<br>module --with-http_auth_request_modul<wbr>e --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_mod<br>ule --with-http_random_index_modul<wbr>e --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_sta<br>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<br>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,-<br>z,relro -Wl,-z,now -Wl,--as-needed -pie'<br></span></p>
<p style="margin:0px;text-indent:0px"> </p>
<p style="margin:0px;text-indent:0px">Есть самописное приложение на php. У него есть две версии: stable и current. Для быстрой смены используется следующая схема:</p>
<p style="margin:0px;text-indent:0px">/var/www/stable/ - тут лежит stable</p>
<p style="margin:0px;text-indent:0px">/var/www/current/ - тут лежит current</p>
<p style="margin:0px;text-indent:0px">/var/www/html - симлинк на на /var/www/stable или /var/www/current</p>
<p style="margin:0px;text-indent:0px"> </p>
<p style="margin:0px;text-indent:0px">В nginx пыха сконфигурирована как</p>
<p style="margin:0px;text-indent:0px"> </p>
<p style="margin:0px;text-indent:0px">root /var/www/html;</p>
<p style="margin:0px;text-indent:0px">                location / {</p>
<p style="margin:0px;text-indent:0px">                        fastcgi_pass unix:/run/php-fpm.socket;</p></div></blockquote><div><br></div></span><div>сделайте тут проксирование на апстрим (в котором перечислены несколько бекендов)<br>fastcgi_connect_timeout  сделайте минимальным<br></div><span class=""><div><br> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="font-family:"Noto Sans";font-size:12pt;font-weight:400;font-style:normal">
<p style="margin:0px;text-indent:0px">                        include        fastcgi_params;</p>
<p style="margin:0px;text-indent:0px">                        fastcgi_param SCRIPT_FILENAME $document_root/index.php;</p>
<p style="margin:0px;text-indent:0px">                }</p>
<p style="margin:0px;text-indent:0px"> </p>
<p style="margin:0px;text-indent:0px">Проблема в том. что при переключение stable->current (и наоборот), </p></div></blockquote><div><br></div></span><div>достаточно будет запустить тот или иной бекенд <br><br></div><div>(не уверен, что с unix-сокетами получится, в крайнем случае можно на tcp проксировать)<br></div><div><br> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class=""><div style="font-family:"Noto Sans";font-size:12pt;font-weight:400;font-style:normal"><p style="margin:0px;text-indent:0px">которая происходит примерно так:</p>
<p style="margin:0px;text-indent:0px"># /var/www/html указывает на  /var/www/stable , переключаемся на current</p>
<p style="margin:0px;text-indent:0px">rm /var/www/html; ln -s /var/www/current/  /var/www/html</p>
<p style="margin:0px;text-indent:0px"> </p>
<p style="margin:0px;text-indent:0px">до упора используются файлы из старой директории (stable в примере выше). Не помогает ни очистка opcache, ни рестарт пыхи. Только restart (возможно reload, не уверен) nginx. </p>
<p style="margin:0px;text-indent:0px">Хотелось бы</p>
<p style="margin:0px;text-indent:0px">1) понять почему так. nginx где-то как-то кеширует куда указывает симлинк?</p>
<p style="margin:0px;text-indent:0px">2) избежать этого ("троганья" nginx (в идеале и рестарта php-fpm), в принципе готовы поменять воркфлоу, но пока не понимаем как.</p>
<p style="margin:0px;text-indent:0px"> </p>
<p style="margin:0px;text-indent:0px">С уважением, Иван.</p></div><br></span>______________________________<wbr>_________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" rel="noreferrer" target="_blank">http://mailman.nginx.org/mailm<wbr>an/listinfo/nginx-ru</a><br></blockquote></div><br></div></div>
<br>______________________________<wbr>_________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" rel="noreferrer" target="_blank">http://mailman.nginx.org/<wbr>mailman/listinfo/nginx-ru</a><br></blockquote></div><br></div>