Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Apache + mod_fastcgi + php-fpm - jak używać?
elektrrrus
post 13.02.2011, 11:02:36
Post #1





Grupa: Zarejestrowani
Postów: 175
Pomógł: 18
Dołączył: 11.06.2007
Skąd: Koszalin/Poznań

Ostrzeżenie: (0%)
-----


Witam

Chciałbym się zapytać bardziej doświadczonych kolegów w jaki sposób używają takiego połączenia. Pierwsza możliwość jaką znalazłem, to użycie dyrektywy FastCgiExternalServer i przekierowanie przez nie wywołań na fpm nasłuchujące na jakimś porcie lub sockecie. Problem w tym, że nie udało mi się zmusić apacha do przekierowania na fpm tylko rządań o pliki .php, i uparcie wysyła wszystko na interpereter php. Nie muszę chyba wspominać że nie o to chodziło. Mimo kombinacji takich jak opisanych na http://devrandom.pl/blog/2009/05/09/apache...cgi-spawn-fcgi/ (nieistniejący w systemie plików handler) nie udało mi się tego zmusić do poprawnej pracy. Druga metoda jest opisana na np: http://www.cyberciti.biz/tips/rhel-centos-...figuration.html Tworzomy tutaj plik z wywołaniem php_fpm jako wykonywalny skrypt basha i skorzystanie z klasycznego przekierowania jako cgi. To działa, ale czy nie tracę na tym wydajości? Wydaje mi się że po to była idea zdemonizowania php i łączenia się do niego przez socket albo port, żeby teraz wracać z powrotem do wykonywalnego pliku.
Niestety musze użyć apache, z nginx działa to bezproblemowo, ale nic na to nie poradzę. Czy macie może jakieś swoje doświadczenia w tej kwestii? Może da się jakoś zmusić apache żeby działał prawidłowo z FastCgiExternalServer ?

EDIT: Wpakowanie FastCgiExternalServer do bolku files wybierającego tylko pliki php skutuje błedem: FastCgiExternalServer not allowed here


Problem dawno rozwiązany, trzeba było skorzystać z "wirtualnego" handlera cgi-bin w postaci nieistniejącego pliku, podeśle linka jak to wygrzebie, w każdym razie zasada działania była troche inna niż to rozwiązanie z http://devrandom.pl

Ten post edytował elektrrrus 13.02.2011, 11:03:33
Go to the top of the page
+Quote Post
pustka
post 19.12.2011, 15:36:24
Post #2





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 5.07.2011

Ostrzeżenie: (0%)
-----


Witam,

Pozwolę sobie odświeżyć temat, gdyż od 2 dni krążę po googlach w poszukiwaniu rozwiązania tego właśnie tematu. A kolejne tutoriale nie sprawdzają się w mojej sytuacji.

Apache 2.2 na debianie 2.6.26-1-amd64. I na tym multisite drupal. Moduły do apache konfigurowane w /etc/apache2/modules-enabled/ a virtual hosty w /etc/apache2/sites-enabled/
I nie mogę dojść jak ma być skonfigurowany moduł mod_FastCGI w /etc/apache2/modules-enagled/fastcgi.conf i fpm w /etc/php5/fpm/php-fpm.conf plus ewentualne wpisy w plikach do virtual host, żeby to działało.

Próbuję takich rzeczy jak:
http://blog.danguer.com/2011/10/10/install...pm-and-apache2/
http://zeldor.biz/2011/03/apache2-and-php5-fpm-combination/
http://alexcabal.com/installing-apache-mod...erver-maverick/

Na oficjalnej stronie fpm dokumentacji brak, piszą coś o integracji z php i że na stronie php powinna być dokumentacja. Na stronie php tylko opis dyrektyw.
Bardzo możliwe że któryś z powyższych linków przedstawia dobre rozwiązanie tylko ja coś po drodze nie tak zrobiłem.
Jeśli ktoś miał do czynienia z taką konfiguracją, to bardzo proszę o pomoc.
Go to the top of the page
+Quote Post
erix
post 19.12.2011, 23:09:44
Post #3





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




php-fpm jest banalnie prosty w konfiguracji. Jeśli go skompilujesz, jedyną rzeczą, jakiej potrzebujesz, to binarka php-fpm.

Potem konfigurujesz odpowiednio pule i startujesz demona (czyli php-fpm, bo działa on niezależnie). Masz już respondera do FCGI.

W konfiguracji Apache pozostaje już tylko nakierować na respondera (gniazdem, czy adresem IP + portem).

Pokaż, co masz teraz, wtedy coś powiemy.

Aha, i zastanów się, na co Ci taka kobyła jak Apache.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
pustka
post 20.12.2011, 11:24:10
Post #4





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 5.07.2011

Ostrzeżenie: (0%)
-----


To może zacznijmy od początku. Przywróciłem sobie mój testowy vps do stanu zanim zacząłem mieszać, czyli do apache z mpm-prefork (kobylasty apache dlatego że nie ja o tym decyduję smile.gif ).
I teraz powinienem sobie zapodać coś w stylu:

Kod
apt-get install apache2-mpm-worker libapache2-mod-fastcgi php5-fpm


Zgadza się ?
Go to the top of the page
+Quote Post
erix
post 20.12.2011, 14:24:52
Post #5





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Ekhm, może jestem staroświecki, ale ja takie rzeczy kompiluję.

Wolę:
Kod
cd /usr/ports/www/nginx
make config install clean

cd /usr/ports/lang/php5
make config install clean

ale to przecież nie BSD... biggrin.gif


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
pustka
post 20.12.2011, 15:44:24
Post #6





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 5.07.2011

Ostrzeżenie: (0%)
-----


Gdzie tam staroświecki smile.gif Po prostu w tym przypadku instaluję z paczek i tyle ;>

A więc do rzeczy. Po zainstalowaniu powyższych pakietów mam:

mods-enabled/fastcgi.conf
Kod
<IfModule mod_fastcgi.c>
  AddHandler fastcgi-script .fcgi
  #FastCgiWrapper /usr/lib/apache2/suexec
  FastCgiIpcDir /var/lib/apache2/fastcgi
</IfModule>


/etc/php5/fpm/php-fpm.conf
Kod
[global]
pid = /var/run/php5-fpm.pid
error_log = /var/log/php5-fpm.log
include=/etc/php5/fpm/pool.d/*.conf


/etc/php5/fpm/pool.d/www.conf
Kod
[www]
listen = 127.0.0.1:9000
user = www-data
group = www-data
pm = dynamic
pm.max_children = 10
pm.start_servers = 4
pm.min_spare_servers = 2
pm.max_spare_servers = 6
chdir = /
Go to the top of the page
+Quote Post
erix
post 20.12.2011, 19:02:20
Post #7





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




No ok, ale gdzie podajesz w konfiguracji Apache lokalizację repondera?

Demon FPM wystartowany?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
pustka
post 21.12.2011, 11:45:21
Post #8





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 5.07.2011

Ostrzeżenie: (0%)
-----


demonik sobie pomyka:
Kod
8060 ?        00:00:13 php5-fpm
8061 ?        00:00:00 php5-fpm
8064 ?        00:00:00 php5-fpm
8067 ?        00:00:00 php5-fpm
8071 ?        00:00:00 php5-fpm


No a "lokalizacje respondera" dopiero muszę ustawić.

Na początek może coś takiego, ale to pewnie jeszcze nie wszystko, bo nie działa ;>
Tylko czy w ogóle w dobrym kierunku idę ?
Kod
<IfModule mod_fastcgi.c>
  #AddHandler fastcgi-script .fcgi
  AddHandler fcgi:/var/run/php-fpm.socket .php .php5
  #FastCgiWrapper /usr/lib/apache2/suexec
  FastCgiIpcDir /var/lib/apache2/fastcgi
</IfModule>


i w
zmieniłem /etc/php5/fpm/pool.d/www.conf z portu na socketa
Kod
listen = /var/run/php-fpm.socket
Go to the top of the page
+Quote Post
erix
post 21.12.2011, 20:08:09
Post #9





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Tylko czy w ogóle w dobrym kierunku idę ?

Nie trać swojego i naszego czasu. Oberwałbyś od klawiatury, gdybyś to już przetestował? To Tobie ma zależeć na rozwiązaniu problemu i to Ty masz być najbardziej zaangażowanym.

Apache już od dawna nie używam na produkcji, więc musisz sam przetestować; co do FPM, to no problem, ale z Apache musisz trochę samodzielnie podziałać.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
pustka
post 22.12.2011, 00:09:32
Post #10





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 5.07.2011

Ostrzeżenie: (0%)
-----


Cytat(erix @ 21.12.2011, 20:08:09 ) *
Nie trać swojego i naszego czasu. Oberwałbyś od klawiatury, gdybyś to już przetestował? To Tobie ma zależeć na rozwiązaniu problemu i to Ty masz być najbardziej zaangażowanym.

Apache już od dawna nie używam na produkcji, więc musisz sam przetestować; co do FPM, to no problem, ale z Apache musisz trochę samodzielnie podziałać.


Może nie dotycztałeś jak wpierwszym poście napisałem że testowałem różne konfiguracje. I wszystko co piszę jest testowane.
Jeżeli nie potrafisz pomóc z apachem to szkoda, bo problem jest właśnie w skierowaniu apacha/fastcgi na fpm a nie z samym fpm.
Go to the top of the page
+Quote Post
erix
post 22.12.2011, 01:00:57
Post #11





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Może nie dotycztałeś jak wpierwszym poście napisałem że testowałem różne konfiguracje.

To pokaż je. To, że testowałeś, to nie znaczy, że czegoś nie przeoczyłeś. A FastCGI dla Apache jest upierdliwe; kiedyś to postawiłem, "nigdy więcej". Skopiowałbym swoją konfigurację, ale na tamtym serwerze już jest coś innego, poza tym - wówczas nie było PHP-FPM.



--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
pustka
post 22.12.2011, 11:01:17
Post #12





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 5.07.2011

Ostrzeżenie: (0%)
-----


Wygląda na to że przy kolejnym podejściu udało mi się uzyskać działające rozwiązanie łącząc zawartość dwóch stron:

http://personal.x-istence.com/post/2010/11...and-php-php-fpm
Stąd wziąłem konfigurację fastcgi:
Kod
<IfModule mod_fastcgi.c>
        Alias /php5.fcgi /var/www/fastcgi/php5.fcgi
        FastCGIExternalServer /var/www/fastcgi/php5.fcgi -flush -host 127.0.0.1:9000
        AddType application/x-httpd-fastphp5 .php
        Action application/x-httpd-fastphp5 /php5.fcgi

        <Directory "/var/www/fastcgi/">
                Order deny,allow
                Deny from all
                <Files "php5.fcgi">
                        Order allow,deny
                        Allow from all
                </Files>
        </Directory>
</IfModule>


http://blog.danguer.com/2011/10/10/install...pm-and-apache2/
A stąd poradę o rewrite rule (z racji że używam drupala, bez tego miałem pętle):

Kod
RewriteRule ^fastcgi/php5.fcgi - [L,NC]


Teraz czeka mnie sprawdzenie czy na serwerze produkcyjnym gdzie do konfiguracji dochodzą virtual hosty będzie to śmigać.
Dam znać jakie będą tego efekty, ale to pewnie po nowym roku dopiero.

A jeśli chodzi o fpm, to czy faktycznie warto używać unixowego socketa ? (listen = /var/run/php-fpm.socket) Na, jednej ze stron spotkałem się ze stwierdzeniem że jest to szybsze rozwiązanie.
Go to the top of the page
+Quote Post
erix
post 22.12.2011, 11:38:13
Post #13





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Pewnie, że szybsze, bo ustanowienie połączenia TCP jest "trochę" zasobożerne. Ale dlaczego, to zapraszam do lektury podstaw sieci komputerowych. [;

Tylko że sockety mają jedną wadę - responder musi być na tej samej maszynie, co usługa kliencka. W Twoim przypadku jest to jednak bez znaczenia. [;


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 26.04.2025 - 00:54