Installare Apache 2 con mod_fcgid e PHP5 su Ubuntu 8.10

Grazie a questo tutorial, vedremo come sia possibile installare senza problemi Apache 2 con “mod_fcgid” e PHP5 su Ubuntu 8.10. Per chi non lo sapesse, mod_fcgid è una alternativa compatibile al vecchio mod_fastcgi. In questo modo potrete eseguire script con i permessi dei rispettivi proprietari piuttosto che con quegli dell’utente Apache.

1. Premessa:
In questa guida si utilizza server1.example.com come hostname e 192.168.0.100 come indirizzo IP.

Diventiamo amministratori da terminale:

sudo su

Adesso lanciamo questo comando:

ln -sf /bin/bash /bin/sh

Questo comando necessita anche questa serie di comandi per disabilitare AppArmor:

/etc/init.d/apparmor stop
update-rc.d -f apparmor remove
apt-get remove apparmor apparmor-utils

2. Installazione vera e propria:

Con questo comando installeremo tutto l’occorrente:

apt-get install apache2 apache2-suexec libapache2-mod-fcgid php5-cgi

Se Apache fosse stato già installato con PHP5 come modulo Apache, disabilitate il modulo tramite questo comando:

a2dismod php5

Abilitate i seguenti moduli:

a2enmod rewrite
a2enmod suexec
a2enmod include
a2enmod fcgid

Aprite il file /etc/php5/cgi/php.ini con il vostro editor preferito, per esempio con gedit:

vi /etc/php5/cgi/php.ini

Una volta apertosi il file, aggiungiamo alla fine la seguente riga:

cgi.fix_pathinfo = 1

Ricaricate Apache con questo comando:

/etc/init.d/apache2 force-reload

3. Creare Vhosts www.example1.com www.example2.com

Gli host che creeremo www.example1.com e www.example2.com avranno come proprietari rispettivamente web1 e web2.

Creiamo utenti e 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

Creiamo le directory necessarie e le assegnamo a web1 e 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/web

Avvieremo PHP usando suExec:

/usr/lib/apache2/suexec -V

Ecco l’output restituito:

root@server1:~# /usr/lib/apache2/suexec -V
-D AP_DOC_ROOT=”/var/www”
-D AP_GID_MIN=100
-D AP_HTTPD_USER=”www-data”
-D AP_LOG_EXEC=”/var/log/apache2/suexec.log”
-D AP_SAFE_PATH=”/usr/local/bin:/usr/bin:/bin”
-D AP_UID_MIN=100
-D AP_USERDIR_SUFFIX=”public_html”
root@server1:~#

Proseguiamo:

mkdir -p /var/www/php-fcgi-scripts/web1
mkdir -p /var/www/php-fcgi-scripts/web2

vi /var/www/php-fcgi-scripts/web1/php-fcgi-starter

#!/bin/shPHPRC=/etc/php5/cgi/export PHPRCexport PHP_FCGI_MAX_REQUESTS=5000export PHP_FCGI_CHILDREN=8exec /usr/lib/cgi-bin/php

vi /var/www/php-fcgi-scripts/web2/php-fcgi-starter

#!/bin/shPHPRC=/etc/php5/cgi/export PHPRCexport PHP_FCGI_MAX_REQUESTS=5000export PHP_FCGI_CHILDREN=8exec /usr/lib/cgi-bin/php

Chmoddiamo le nostre directory:

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/web2

Creiamo i Vhosts per www.example1.com e www.example2.com:

vi /etc/apache2/sites-available/web1

ServerName www.example1.comServerAlias example1.comServerAdmin webmaster@example1.comDocumentRoot /var/www/web1/web/ SuexecUserGroup web1 web1PHP_Fix_Pathinfo_Enable 1 Options +ExecCGI AllowOverride All AddHandler fcgid-script .php FCGIWrapper /var/www/php-fcgi-scripts/web1/php-fcgi-starter .php Order allow,deny Allow from all # ErrorLog /var/log/apache2/error.log# CustomLog /var/log/apache2/access.log combinedServerSignature Off

a2ensite web1

vi /etc/apache2/sites-available/web2

ServerName www.example2.comServerAlias example2.comServerAdmin webmaster@example2.comDocumentRoot /var/www/web2/web/ SuexecUserGroup web2 web2PHP_Fix_Pathinfo_Enable 1 Options +ExecCGI AllowOverride All AddHandler fcgid-script .php FCGIWrapper /var/www/php-fcgi-scripts/web2/php-fcgi-starter .php Order allow,deny Allow from all # ErrorLog /var/log/apache2/error.log# CustomLog /var/log/apache2/access.log combinedServerSignature Off

a2ensite web2

Infine ricaricate Apache:

/etc/init.d/apache2 reload

Abbiamo terminato.

Qualora volesse testare uno script, createlo:

vi /var/www/web1/web/info.php

Copiamo questo all’interno e salviamo:

Prova di Installazione Apache

Adesso apriamo il nostro browser e puntiamolo su www.example1.com/info.php.

Leave a Reply