Apache PHP · 4 min read · Dec 03, 2025
Come Configurare Apache2 Con mod_fcgid E PHP5 Su Mandriva 2009.1
Come Configurare Apache2 Con mod_fcgid E PHP5 Su Mandriva 2009.1
Versione 1.0
Autore: Falko Timme
Seguimi su Twitter
Questo tutorial descrive come puoi installare Apache2 con mod_fcgid e PHP5 su Mandriva 2009.1. mod_fcgid è un’alternativa compatibile al vecchio mod_fastcgi. Ti consente di eseguire script PHP con i permessi dei loro proprietari anziché dell’utente Apache.
Non fornisco alcuna garanzia che questo funzionerà per te!
1 Nota Preliminare
Sto usando un server Mandriva 2009.1 in questo tutorial con il nome host server1.example.com e l’indirizzo IP 192.168.0.100.
Creerò due vhosts Apache in questo tutorial, www.example1.com e www.example2.com, per dimostrare l’uso di mod_fcgid.
2 Installazione di Apache2/mod_fcgi/PHP5
Prima aggiorniamo il nostro database dei pacchetti:
urpmi.update -aPossiamo installare Apache2, mod_fcgid e PHP5 come segue (mod_fcgid richiede apache-mpm-worker invece di apache-mpm-prefork, quindi se apache-mpm-prefork è attualmente installato, i moduli Apache che dipendono da esso verranno rimossi, come apache-mod_php):
urpmi apache-mpm-worker apache-mod_fcgid php-fcgi[root@server1 ~]# urpmi apache-mpm-worker apache-mod_fcgid php-fcgi
I seguenti pacchetti devono essere rimossi affinché altri possano essere aggiornati:
apache-mod_perl-2.0.4-5mdv2009.1.x86_64
(a causa di conflitti con apache-mpm-worker-2.2.11-10.5mdv2009.1.x86_64)
apache-mod_php-5.2.9-1mdv2009.1.x86_64
(a causa di conflitti con apache-mpm-worker[>= 2.2.8]) (y/N) <– y
Per soddisfare le dipendenze, i seguenti pacchetti verranno installati:
Pacchetto Versione Rilascio Arch
(medium “Main Updates”)
apache-base 2.2.11 10.5mdv2009.1 x86_64
apache-mod_ssl 2.2.11 10.5mdv2009.1 x86_64
apache-modules 2.2.11 10.5mdv2009.1 x86_64
apache-mpm-prefork 2.2.11 10.5mdv2009.1 x86_64
apache-mpm-worker 2.2.11 10.5mdv2009.1 x86_64
php-fcgi 5.2.9 6.2mdv2009.1 x86_64
(medium “Contrib”)
apache-mod_fcgid 2.2 6mdv2009.1 x86_64
6MB di spazio su disco verranno liberati.
977KB di pacchetti verranno recuperati.
Procedere con l’installazione dei 7 pacchetti? (Y/n) <– Y
Successivamente apriamo /etc/php.ini…
vi /etc/php.ini… e aggiungiamo la riga cgi.fix_pathinfo = 1 proprio alla fine del file:
| [...] cgi.fix_pathinfo = 1 |
Poi riavviamo Apache:
/etc/init.d/httpd restart3 Creazione di Vhosts per www.example1.com e www.example2.com
Ora creerò due vhosts, www.example1.com (con la root del documento /var/www/web1/web) e www.example2.com (con la root del documento /var/www/web2/web). www.example1.com sarà di proprietà dell’utente e del gruppo web1, e www.example2.com dell’utente e del gruppo web2.
Prima creiamo gli utenti e i gruppi:
groupadd web1
groupadd web2
useradd -s /bin/false -d /var/www/web1 -m -g web1 web1
useradd -s /bin/false -d /var/www/web2 -m -g web2 web2
chmod 755 /var/www/web1
chmod 755 /var/www/web2Poi creiamo le radici dei documenti e le rendiamo di proprietà degli utenti/gruppi web1 rispettivamente web2:
mkdir -p /var/www/web1/web
chown web1:web1 /var/www/web1/web
mkdir -p /var/www/web2/web
chown web2:web2 /var/www/web2/webEseguiremo PHP utilizzando suExec; la root del documento di suExec è /var/www, come mostra il seguente comando:
/usr/sbin/suexec -V[root@server1 ~]# /usr/sbin/suexec -V
-D AP_DOC_ROOT="/var/www"
-D AP_GID_MIN=100
-D AP_HTTPD_USER="apache"
-D AP_LOG_EXEC="/var/log/httpd/suexec_log"
-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
-D AP_SUEXEC_UMASK=077
-D AP_UID_MIN=100
-D AP_USERDIR_SUFFIX="public_html"
[root@server1 ~]#Pertanto non possiamo chiamare il binario PHP ( /usr/bin/php-fcgi) direttamente perché si trova al di fuori della root del documento di suExec. Poiché suExec non consente symlink, l’unico modo per risolvere il problema è creare uno script wrapper per ciascun sito web in una sottodirectory di /var/www; lo script wrapper chiamerà quindi il binario PHP /usr/bin/php-fcgi. Lo script wrapper deve essere di proprietà dell’utente e del gruppo di ciascun sito web, quindi abbiamo bisogno di uno script wrapper per ciascun sito web. Creerò gli script wrapper in sottodirectory di /var/www/php-fcgi-scripts, ad es. /var/www/php-fcgi-scripts/web1 e /var/www/php-fcgi-scripts/web2.
mkdir -p /var/www/php-fcgi-scripts/web1
mkdir -p /var/www/php-fcgi-scripts/web2vi /var/www/php-fcgi-scripts/web1/php-fcgi-starter| #!/bin/sh PHPRC=/etc/ export PHPRC export PHP_FCGI_MAX_REQUESTS=5000 export PHP_FCGI_CHILDREN=8 exec /usr/bin/php-fcgi |
vi /var/www/php-fcgi-scripts/web2/php-fcgi-starter| #!/bin/sh PHPRC=/etc/ export PHPRC export PHP_FCGI_MAX_REQUESTS=5000 export PHP_FCGI_CHILDREN=8 exec /usr/bin/php-fcgi |
La riga PHPRC contiene la directory in cui si trova il file php.ini (cioè, /etc/ si traduce in /etc/php.ini). PHP_FCGI_MAX_REQUESTS è il numero massimo di richieste prima che un processo fcgid venga fermato e ne venga avviato uno nuovo. PHP_FCGI_CHILDREN definisce il numero di figli PHP che verranno avviati.
Gli script php-fcgi-starter devono essere eseguibili e devono essere (e le directory in cui si trovano) di proprietà dell’utente e del gruppo del sito web:
chmod 755 /var/www/php-fcgi-scripts/web1/php-fcgi-starter
chmod 755 /var/www/php-fcgi-scripts/web2/php-fcgi-starter
chown -R web1:web1 /var/www/php-fcgi-scripts/web1
chown -R web2:web2 /var/www/php-fcgi-scripts/web2Ora creiamo i vhosts Apache per www.example1.com e www.example2.com. Aggiungi i seguenti due vhosts alla fine di /etc/httpd/conf/httpd.conf:
vi /etc/httpd/conf/httpd.conf| [...] NameVirtualHost *:80 |
Assicurati di compilare i percorsi corretti (e l’utente e il gruppo corretti nelle righe SuexecUserGroup).
Ricarica Apache successivamente:
/etc/init.d/httpd reloadRicevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.