GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Configura Apache 2.4 e Php FPM con mod proxy fcgi su Ubuntu 13.10

mod_proxy_fcgi

Il modulo mod_proxy_fcgi è nuovo e consente ad Apache di connettersi/inoltrare richieste a un gestore di processi fastcgi esterno come php fpm. Ciò consente una separazione completa tra l'esecuzione di script php e Apache.

In precedenza dovevamo usare moduli come mod_fcgid e mod_fastcgi che avevano tutti alcune limitazioni. Mod_fcgid, ad esempio, non utilizzava correttamente la capacità di gestione dei processi di php-cgi mentre mod_fastcgi è un modulo di terze parti.

Con l'arrivo di mod_proxy_fcgi Apache ottiene finalmente la possibilità di parlare in modo ordinato con gestori di processi fastcgi esterni, rendendolo più efficiente nell'attività.

La delega di richieste php a server fpm esterni riduce notevolmente il carico sui server Web come Apache, determinando un utilizzo efficiente delle risorse della macchina e un'elaborazione più rapida.

request page.php --> Apache --> Php FPM service --> Php process executes page.php

Insieme a tutto ciò, php fpm può eseguire motori di caching del codice operativo come apc in modo molto stabile.

Quindi, in questo post, il nostro compito è configurare apache + php-fpm usando il connettore mod_proxy_fcgi.

1. Installa e configura Apache

Ubuntu 13.10 viene già fornito con apache 2.4, quindi tutti i file installabili sono nel repository stesso.

Installa Apache se non l'hai già fatto

$ sudo apt-get install apache2

Abilita mod_proxy_fcgi

$ sudo a2enmod proxy_fcgi
Considering dependency proxy for proxy_fcgi:
Enabling module proxy.
Enabling module proxy_fcgi.
To activate the new configuration, you need to run:
  service apache2 restart

Riavvia Apache

$ sudo service apache2 restart

Configura host virtuali

L'attività successiva è configurare un vhost per utilizzare il proxy fcgi mod per comunicare con fpm. I file di configurazione di vhost sono archiviati nella seguente posizione

/etc/apache2/sites-available

Entra lì e crea il tuo nuovo file di configurazione vhost copiando il file 000-default.conf che viene fornito con Apache.

$ cd /etc/apache2/sites-available
$ sudo cp 000-default.conf mysite.conf
$ sudo nano mysite.conf

Ora è il momento di configurare l'host virtuale. Ecco come ho configurato il file

<VirtualHost *:80>
.....
	ServerName fpm.localhost

	ServerAdmin [email protected]
	DocumentRoot /var/www/mysite

.....
	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined

.....
	#Include conf-available/serve-cgi-bin.conf

	ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/mysite/$1
	
	<Directory "/var/www/mysite">
		Order allow,deny
		Allow from all
		AllowOverride FileInfo All
		# New directive needed in Apache 2.4.3:
		Require all granted
	</Directory>

</VirtualHost>

Le cose importanti da notare sono:

1. Nomeserver - Questo è il dominio o il sottodominio del tuo vhost. In questo esempio ho usato fpm.localhost in modo che quando si utilizza quel sottodominio su localhost, venga utilizzato php fpm.

2. DocumentRoot - Questa è la radice di questo host virtuale da cui verranno serviti i file Web.

3. ProxyPassMatch - Questa è la direttiva che inoltra tutte le richieste di file ".php" al server fcgi a 127.0.0.1:9000. Qui è dove sarebbe in esecuzione il nostro process manager php fpm. Maggiori informazioni su questo nella prossima sezione.
L'url fcgi deve contenere il percorso esatto della radice del documento. Altrimenti direbbe "File non trovato" durante la richiesta di file.

ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/mysite/$1

Il primo parametro è il modello da abbinare. Quindi tutti gli URL che contengono un ".php" seguito da una barra di opzione e qualsiasi altra cosa vengono abbinati e la parte corrispondente viene inoltrata al server fcgi in esecuzione a 127.0.0.1:9000.

4. Richiedi tutto concesso - Dopo la riga ProxyPassMatch abbiamo aggiunto una sezione con le direttive Require e AllowOverride. È necessario a partire da Apache 2.4

Salva il file e abilitalo utilizzando il comando a2ensite che risparmia lo sforzo per creare il collegamento simbolico nella directory abilitati ai siti.

$ sudo a2ensite mysite
Enabling site mysite.
To activate the new configuration, you need to run:
  service apache2 reload

Ora ricarica la configurazione di Apache

$ sudo service apache2 reload
 * Reloading web server apache2

Questo completa la configurazione di Apache. L'altra metà del compito è configurare php fpm in modo che possa finalmente funzionare.

2. Imposta Php-FPM (Gestione processi FastCGI)

La prossima cosa è configurare php fpm. Installalo tramite synaptic, se non l'hai già fatto.

$ sudo apt-get install php5-fpm

I file di configurazione per fpm si trovano in

/etc/php5/fpm
/etc/php5/fpm$ ls
conf.d  php-fpm.conf  php.ini  pool.d

La directory pool.d contiene il file di configurazione per ogni pool di fpm e php-fpm.conf è il file di configurazione principale. Il nostro unico lavoro è configurare un pool di fpm da utilizzare con apache o l'host virtuale specifico.

Il file di configurazione per un pool è abbastanza grande e ci sono molti parametri che possono essere configurati. Ma in questo post parleremo solo dei campi importanti che devono essere impostati per far funzionare fpm

; Start a new pool named 'www'.
; the variable $pool can we used in any directive and will be replaced by the
; pool name ('www' here)
[www]

; Per pool prefix
; It only applies on the following directives:
; - 'slowlog'
; - 'listen' (unixsocket)
; - 'chroot'
; - 'chdir'
; - 'php_values'
; - 'php_admin_values'
; When not set, the global prefix (or /usr) applies instead.
; Note: This directive can also be relative to the global prefix.
; Default Value: none
;prefix = /path/to/pools/$pool

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
user = enlightened
group = enlightened

; The address on which to accept FastCGI requests.
; Valid syntaxes are:
;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific address on
;                            a specific port;
;   'port'                 - to listen on a TCP socket to all addresses on a
;                            specific port;
;   '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = 127.0.0.1:9000

; Set listen(2) backlog.
; Default Value: 128 (-1 on FreeBSD and OpenBSD)
;listen.backlog = 128

Creare un nuovo file di configurazione copiando il file www.conf. E modifica i campi come spiegato di seguito.

1. La prima opzione è il nome della piscina. L'abbiamo chiamato 'www' qui. Assegna un nome a qualsiasi cosa ti piaccia o dopo il nome di dominio con cui verrà utilizzato. 'il tuo sito' per esempio. In questo modo sarebbe più facile da ricordare.

2. Configurare l'utente e il gruppo con cui verrà eseguito questo pool. Quando si configurano più siti/domini/host virtuali su un server, si desidera sempre configurare account utente separati e un pool corrispondente per ciascuno di essi. Questa è una misura di sicurezza essenziale, in modo che ogni pool abbia i privilegi solo del proprio utente.

3. Configurare la presa di ascolto. Questo è il socket su cui il processo fpm master ascolterà le richieste in arrivo. Può essere un socket unix o un socket TCP. Tuttavia mod_proxy_fcgi non supporta ancora i socket unix, quindi siamo limitati ai socket TCP.
Qui il suo numero di porta 9000 su localhost.

Ora riavvia fpm

$ sudo service php5-fpm restart

Ora il nuovo pool di fpm dovrebbe avere effetto. Ad esempio, puoi vedere il nuovo processo del pool in htop.

3. Prova la configurazione

Ora che sia apache che php fpm sono configurati e impostati, è tempo di testare. Entra nella directory principale del documento e crea un file php contenente una chiamata alla funzione phpinfo() e aprilo nel tuo browser.
L'"API del server" dovrebbe essere segnalata come "FPM/FastCGI".

Ora che Apache e php sono impostati, potresti voler installare altre cose come APC, database mariadb, phpmyadmin ecc. Spostati in questo sito per trovare guide pratiche su quelli.

Risorse

Dai un'occhiata ai seguenti link per saperne di più
https://wiki.apache.org/httpd/PHP-FPM


Ubuntu
  1. Come abilitare e disabilitare il modulo PHP curl con Apache su Ubuntu Linux

  2. Come configurare Opencart con LAMP (PHP, Apache, Mariadb) su Ubuntu 20.04

  3. Installa e configura Apache e PHP con cgi su Ubuntu o Debian

  4. Configura Apache e Php con mod_fcgid su Ubuntu/Debian

  5. Installa e configura Apache e php con mod fastcgi su Ubuntu/Debian

Come configurare il cluster Apache Tomcat con 3 nodi su Ubuntu

Ansible Playbook per installare e configurare Apache su Ubuntu

Come configurare WordPress su Ubuntu Server con Apache

Come installare e configurare Apache Spark su Ubuntu 21.04

Come installare Lighttpd con PHP e MariaDB su Ubuntu 15.04

Come installare e configurare Apache Spark su Ubuntu/Debian