Portál AbcLinuxu, 6. května 2024 01:49


Dotaz: Docker php7-fpm a nginx jako samostatne cointainery.

13.8.2017 21:00 usulin
Docker php7-fpm a nginx jako samostatne cointainery.
Přečteno: 482×
Odpovědět | Admin
Mohl by se prosim vas nekdo podivat, co delam spatne, kdyz se snazim propojit php7-fpm a nginx zvlast v containerech, bezici na alpine? Bohuzel zadne info v logu se nanachazi. Prostup na container s php je, to mam odzkousene, navic pokud neni, nginx vypise chybu. Pokud zavolam .php soubor, objevi se jen prazdna stranka. Defaultne by mel php-fpm prijimat spojeni od vsech hostu, pokud nevymezim jinak, pokud tedy chapu spravne.

viz.:
; List of addresses (IPv4/IPv6) of FastCGI clients which are allowed to connect.
; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original
; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address
; must be separated by a comma. If this value is left blank, connections will be
; accepted from any ip address.
; Default Value: any
;listen.allowed_clients = 127.0.0.1
Prikladam dockerfile, nginx configuraci a onelinery, kdyby si to nekdo ze zvedavosti chtel pustit. Diky za rady

https://pastebin.com/NPK8czCL

sudo docker build -t mynginx --no-cache . ; sudo docker build --no-cache -t mynginx . ; sudo docker stop mynginx ; sudo docker rm mynginx ; sudo docker run -d --name mynginx --hostname=mynginx -network=my-bridge -p 8080:80 mynginx

sudo docker build -t myphp --no-cache . ; sudo docker stop myphp ; sudo docker rm myphp ;sudo docker run -d --hostname=myphp --name myphp --volumes-from=mynginx --network=my-bridge myphp
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Josef Kufner avatar 13.8.2017 22:36 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Docker php7-fpm a nginx jako samostatne cointainery.
Odpovědět | | Sbalit | Link | Blokovat | Admin
V první řadě se ujisti, že FPM vůbec poslouchá na síťovém socketu. Defaultně používá jen unixový.
Hello world ! Segmentation fault (core dumped)
14.8.2017 08:33 usulin
Rozbalit Rozbalit vše Re: Docker php7-fpm a nginx jako samostatne cointainery.
Kontroloval jsem netstatem, teda respektive ss -tl a na vsech adresach posloucha (::9000)
Josef Kufner avatar 14.8.2017 11:44 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Docker php7-fpm a nginx jako samostatne cointainery.
Ok. A z druhé strany: Kam se připojuje nginx (fastcgi_pass)? A jaké chyby jsou v jeho logu?
Hello world ! Segmentation fault (core dumped)
14.8.2017 12:44 usulin
Rozbalit Rozbalit vše Re: Docker php7-fpm a nginx jako samostatne cointainery.
Pripojuje se na upstream server, jde to videt v tom pastebinu, v example.conf. Hostname php containeru je myphp, jsou na stejnem bridge spolu s mynginx, takze na sebe vidi. Dokonce i telnet z mynginx containeru na myphp:9000 projde. V opacnem pripade stejne napise do logu, ze se nemuze pripojit na upstream server. Takze predpokladam, ze konektivita je. v myphp containeru je namapovany volume z mynginx, kde se php scripty nachazi. Tahle reference tam je potreba udajne. Dokonce i sudo -H -u nobody bash -c 'php -f /var/www/localhost/htdocs/phpinfo.php' projde v phpcontaineru, takze na pravech to nepada. Kazdopadne problem je, ze v logu nginxu nejsou zadne chyby, vraci 200 pri pristupu na .php. Tezko se to debaguje, ale kdyby nekdo moc chtel, muze si to rozjet u sebe, za pomoci prilozenych souboru. Diky
Josef Kufner avatar 14.8.2017 13:38 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Docker php7-fpm a nginx jako samostatne cointainery.
Takže pokud připojení projde až k PHP-FPM, tak bude problém tam. Co na to /var/log/php*.log?
Hello world ! Segmentation fault (core dumped)
14.8.2017 14:13 usulin
Rozbalit Rozbalit vše Re: Docker php7-fpm a nginx jako samostatne cointainery.
Nic, pouze: ready to serve connections, / muzu zvednout log level na debug, ale to mi asi nepomuze. Kazdopadne zkusim zapnout logovani toho poolu./ jakoby zadny request ani neprisel, mozna je chyba v nastaveni example.conf v nginx, kde se nginx spoji s php, ovsem nevi, ze ma poslat .php soubor zpracovat na php container.
14.8.2017 22:09 usulin
Rozbalit Rozbalit vše Re: Docker php7-fpm a nginx jako samostatne cointainery.
Dokonce se pripojim z mynginx na myphp. Pravdepodobne tedy bude spatne nakonfigurovany nginx.
root@56ae29f385a0:/# cgi-fcgi -bind -connect myphp:9000
X-Powered-By: PHP/7.1.7
Content-type: text/html; charset=UTF-8
14.8.2017 23:04 usulin
Rozbalit Rozbalit vše Re: Docker php7-fpm a nginx jako samostatne cointainery.
Tak to vypada, ze je problem s radkou nginx konfigurace: include fastcgi_params; tahkle to nefunguje, co funguje je include fastcgi.conf;
bash-4.3# ls -lha /etc/nginx/
total 40
drwxr-xr-x    4 root     root        4.0K Aug 14 20:57 .
drwxr-xr-x   18 root     root        4.0K Aug 14 20:58 ..
drwxr-xr-x    2 root     root        4.0K Aug 14 20:57 conf.d
-rw-r--r--    1 root     root        1.1K Aug  5 20:37 fastcgi.conf
-rw-r--r--    1 root     root        1007 Aug  5 20:37 fastcgi_params
-rw-r--r--    1 root     root        3.9K Aug  5 20:37 mime.types
drwxr-xr-x    2 root     root        4.0K Aug 14 20:57 modules
-rw-r--r--    1 root     root        2.6K Aug  5 20:37 nginx.conf
-rw-r--r--    1 root     root         636 Aug  5 20:37 scgi_params
-rw-r--r--    1 root     root         664 Aug  5 20:37 uwsgi_params
bash-4.3# diff  fastcgi.conf fastcgi_params 
--- fastcgi.conf
+++ fastcgi_params
@@ -1,5 +1,4 @@
 
-fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
 fastcgi_param  QUERY_STRING       $query_string;
 fastcgi_param  REQUEST_METHOD     $request_method;
 fastcgi_param  CONTENT_TYPE       $content_type;
14.8.2017 23:07 usulin
Rozbalit Rozbalit vše Re: Docker php7-fpm a nginx jako samostatne cointainery.
Kdyby se nekdo zajimal: https://blog.martinfjordvald.com/2013/04/nginx-config-history-fastcgi_params-versus-fastcgi-conf/
14.8.2017 08:34 usulin
Rozbalit Rozbalit vše Re: Docker php7-fpm a nginx jako samostatne cointainery.
A v alpinu ma php7-fpm v defaultni konfiguraci prave sitovy socket
21.8.2017 20:54 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Docker php7-fpm a nginx jako samostatne cointainery.
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nginx předává FatsCGI aplikaci cestu ke skriptu, který se má spustit. Standardně ji vytváří z root adresáře webu a cesty požadované v HTTP dotazu. Vy ale potřebujete jako SCRIPT_FILENAME předat cestu tak, jak platí v tom PHP kontejneru. Pokud používáte standardní php71-fpm kontejner, mělo by fungovat tohle:
location ~      \.php$          {
    include                 fastcgi.conf;
    fastcgi_intercept_errors        on;
    fastcgi_param           SCRIPT_FILENAME         /var/www/html$fastcgi_script_name;
    fastcgi_pass            php;
}

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.