2015-06-10 9 views
5

Dobrze, szalejesz, próbując to zrozumieć. (Czytałem setki pytań/odpowiedzi i artykułów google, ale nikt nie odebrał)Podaj plik ini PHP na vhost, z konfiguracją FastCGI/PHP-fpm

właśnie zmieniona z użyciem mod_php do PHP poprzez FastCGI i FPM, stosując metodę opisaną w this question, czysto, bo byłem pod wrażeniem "łatwe" było określenie plików php.ini dla poszczególnych vhostów przy użyciu tego zestawu.

Co wyrywam sobie za włosy, to jak mogę określić niestandardowy plik ini PHP, którego używa każdy z vhostów?

Na szczęście, to tylko na moim stanowisku badawczym tak daleko ... Ale mam nadzieję zrobić to samo na moim serwerze produkcyjnym czy mogę kiedykolwiek to zorientować się

+0

Jeśli chodzi o moje doświadczenie: możesz zdefiniować konfiguracje wirtualnego hosta na vhost (na serwerze o nazwie 'vhost.conf'), chociaż mamy 1 php.ini dla całego serwera. – tvgemert

Odpowiedz

4

Myślałem, abym jak-dobrze pisać cały proces wziąłem skonfigurować FPM z basenami, jak wspomniano @ChristianM, bo nie zostały jeszcze znaleźć pełne wyjaśnienie, w jaki sposób to zrobić.

Pierwsza część to głównie kopia postu AskUbuntu: https://askubuntu.com/questions/378734/how-to-configure-apache-to-run-php-as-fastcgi-on-ubuntu-12-04-via-terminal/527227#comment905702_527227

Ostatnia część jest jak skonfigurować baseny i uzyskać vhosta użyć ustawień basen dowiemy się z

o to idzie :

Instalacja Apache MPM pracownika (Objaśnienie prefork/wroker i imprezy w http://www.vps.net/blog/2013/04/08/apache-mpms-prefork-worker-and-event/):

sudo apt-get install apache2-mpm-worker 

zainstalować FastCGI i PHP5-FPM:

sudo apt-get install libapache2-mod-fastcgi php5-fpm 

teraz włączyć modów trzeba, i wyłączyć te, które nie:

sudo a2dismod php5 mpm_prefork 
sudo a2enmod actions fastcgi alias mpm_worker 

Utwórz plik php5.fcgi i dać tego serwera pozwolenie na używanie to.

sudo touch /usr/lib/cgi-bin/php5.fcgi 
sudo chown -R www-data:www-data /usr/lib/cgi-bin 

Tworzenie globalnej config dla PHP5-FPM

sudo nano /etc/apache2/conf-available/php5-fpm.conf 

pasta w następującym (użyjemy gniazdo zamiast adresu IP)

<IfModule mod_fastcgi.c> 
  AddHandler php5.fcgi .php 
  Action php5.fcgi /php5.fcgi 
  Alias /php5.fcgi /usr/lib/cgi-bin/php5.fcgi 
  FastCgiExternalServer /usr/lib/cgi-bin/php5.fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization -idle-timeout 3600 
  <Directory /usr/lib/cgi-bin> 
  Require all granted 
    </Directory> 
</IfModule> 

Uwaga: Upewnij się wszystkie pliki konfiguracyjne zastosuj tę samą nową składnię "Wymagaj wszystkich przyznanych"/"Wymagaj odmowy" ... W przeciwnym razie poczujesz ból po ponownym uruchomieniu ...

Włącz php5-fpm conf

sudo a2enconf php5-fpm 

restart apache i FPM

sudo service apache2 restart && sudo service php5-fpm restart 

Taka konfiguracja zasadniczo tworzy globalną konfigurację fastcgi dla PHP, który używa pliku/etc/php5/FPM/plik php.ini.

Jeśli masz wiele vhosty, że będą potrzebować różnych konfiguracji PHP, nadal z poniższym przykładzie

pierwsze, w /etc/php5/fpm/pool.d dir, znajdziesz domyślny www plik .conf. Skopiuj ten, nazywając to coś, dowiemy się z:

sudo cp /etc/php5/fpm/pool.d/www.conf /etc/php5/fpm/pool.d/domain2.conf 

Edytuj plik, zmieniając nazwę basenu:

[...] 

[domain2] 

[...] 

I zmień nazwę gniazda posłuchać czegoś dowiemy się z:

[...] 

listen = /var/run/php5-fpm-domain2.sock 

[...] 

Następnie skopiuj plik /usr/lib/cgi-bin/php5.fcgi, ponownie określając go jako coś odpowiedniego:

cp /usr/lib/cgi-bin/php5.fcgi /usr/lib/cgi-bin/php5-domain2.fcgi 

Teraz jesteś gotowy, aby dodać moduł mod_fastcgi do domeny vhost. To prawie taki sam, jak ten opisany powyżej, ale zauważyć zmiany w 'Alias', 'FastCgiServer' i '-Socket'

<VirtualHost *:80> 
     ServerName domain2.com 

     [...] 

     <IfModule mod_fastcgi.c> 
     AddHandler php5.fcgi .php 
    Action php5.fcgi /php5.fcgi 
     Alias /php5.fcgi /usr/lib/cgi-bin/php5-domain2.fcgi 
     FastCgiExternalServer /usr/lib/cgi-bin/php5-domain2.fcgi -socket /var/run/php5-fpm-domain2.sock -pass-header Authorization -idle-timeout 3600 
    <Directory /usr/lib/cgi-bin> 
     Require all granted 
    </Directory> 
    </IfModule> 

    [...] 

</VirtualHost> 

Restart apache i FPM

sudo service apache2 restart && sudo service php5-fpm restart 

teraz przetestować zmiany.

W nowym pliku /etc/php5/fpm/pool.d/domain2.conf, dodać zmianę wartości php (wybrałem wartość session.name):

[...] 

php_admin_value[session.name] = 'DOMAIN2' 

[...] 

teraz przetestować konfiguracja przed ponownym FPM:

sudo php5-fpm -t 

poinformuje Cię, jeśli konfiguracja nie powiedzie się, ale co ważniejsze, powie ci, czy konfiguracja jest w porządku. Wtedy można iść do przodu i ponownie FPM:

sudo service php5-fpm restart 

I wreszcie, jeśli chcesz być bardzo pewny wartość php został ustawiony, tworzyć info.php w witrynie, a tylko dodać:

<?php 
 phpinfo(); 
?> 
4

Niestety nie jest to możliwe, aby ustawić php. plik ini na vhost. Możesz skonfigurować różne pule php-fpm i podać każdemu zestaw wartości konfiguracyjnych php, które ustawiają/zastępują coś z (współdzielonej) domyślnej konfiguracji. Zobacz, jak to zrobić: fpm configuration.

Example config with different pools

+0

Wygląda na to, że jest to właściwa odpowiedź. Nie, nie możesz. Możesz obejść to, umieszczając je w ustawieniach fpm, jak opisuje to zaakceptowana odpowiedź, ale nie możesz w ogóle określić pliku php.ini. – DM8

Powiązane problemy