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/sh
PHPRC=/etc/php5/cgi/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/lib/cgi-bin/php

 

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

 

#!/bin/sh
PHPRC=/etc/php5/cgi/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /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.com
ServerAlias example1.com
ServerAdmin webmaster@example1.com
DocumentRoot /var/www/web1/web/

SuexecUserGroup web1 web1
PHP_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 combined
ServerSignature Off

 

a2ensite web1

 

 

vi /etc/apache2/sites-available/web2

 

ServerName www.example2.com
ServerAlias example2.com
ServerAdmin webmaster@example2.com
DocumentRoot /var/www/web2/web/

SuexecUserGroup web2 web2
PHP_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 combined
ServerSignature 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.

Articoli della stessa categoria:

    Nessuno trovato