Come installare apache2, php e proftpd con debian lenny

In questo articolo effettueremo un'installazione passo-passo del web server apache2, integreremo il php come modulo ed infine installeremo proftpd per poter aggiornare il nostro sito via ftp.

-Installazione di apache2 e php

Ecco i primi comandi da eseguire

apt-get update

apt-get install apache2-mpm-prefork libapache2-mod-php5 php-pear php5-imagick php5-curl php5-gd php5-imap php5-mcrypt php5-mysql php5-xmlrpc php5-xsl

Eseguendo "ps ax" vedrete gia' apache in esecuzione:

6163 ?        Ss     0:00 /usr/sbin/apache2 -k start
9227 ?        S      0:00 /usr/sbin/apache2 -k start
9228 ?        S      0:00 /usr/sbin/apache2 -k start
9229 ?        S      0:00 /usr/sbin/apache2 -k start
9230 ?        S      0:00 /usr/sbin/apache2 -k start
9231 ?        S      0:00 /usr/sbin/apache2 -k start

La configurazione di default crea un sito con la document root in

/var/www/

inserire in /etc/apache2/apache2.conf questo prima della riga "# Include the virtual host configurations:" (verso la fine del file)

AddType application/x-httpd-php .php

e riavviate il servizio

/etc/init.d/apache2 restart

Se dobbiamo ospitare un solo dominio, allora il lavoro e' quasi terminato.

Pubblicando questo file

/var/www/info.php

con questo contenuto

<?php
phpinfo();
?>

Avremo modo (accedendo con un browser web all'indirizzo www.tuosito.it/info.php) di visualizzare la configurazione del php installato.
Tutte le modifiche al php dovranno essere effettuate al file /etc/php5/apache2/php.ini e dovrete riavviare il server web (/etc/init.d/apache2 restart)
Potrete passare tranquillamente alla sezione relativa all'installazione di proftpd se questa configurazione e' adatta all'utilizzo che intendete fare del server web. Se invece desiderate ospitare piu' di un sito allora dovrete create dei virtual host. Si possono creare di due tipi, ip based (quando ad ogni sito e' riservato un proprio indirizzo ip) oppure name based (se sullo stesso indirizzo ip sono ospitati piu' siti). In questo articolo vediamo come installare sullo stesso indirizzo ip piu' di un sito. Cancelliamo la configurazione del sito di default

rm -f /etc/apache2/sites-available/*
rm -f /etc/apache2/sites-enabled/*

creiamo le cartelle che dovranno contenere i dati del sito sito (dati web e file di log)

mkdir -p /var/www/virtual_hosts/www.tuosito.it/htdocs
mkdir -p /var/www/virtual_hosts/www.tuosito.it/logs

Generiamo un file index con un messaggio di benvenuto

echo "Il mio primo sito" > /var/www/virtual_hosts/www.tuosito.it/htdocs/index.html

accediamo nella cartella /etc/apache2/sites-available/ (qui sono contenuti i siti ospitati, anche quelli non abilitati)

cd /etc/apache2/sites-available/

creiamo il file associato al sito. chiamiamolo per esempio www.tuosito.it e scriviamo questo al suo interno

<VirtualHost *:80>
ServerName www.tuosito.it
ServerAdmin luca@tuosito.it

DocumentRoot /var/www/virtual_hosts/www.tuosito.it/htdocs

ErrorLog /var/www/virtual_hosts/www.tuosito.it/logs/error.log

LogLevel crit

CustomLog /var/www/virtual_hosts/www.tuosito.it/logs/access.log combined
ServerSignature On
</VirtualHost>

N.B. cambiare il nome del virtualhost e correggere il percorso di riferitmento dei log e della document root adattandola al vostro sito.

Adesso abilitiamolo. I siti abilitati sono quelli presenti nella cartella /etc/apache2/sites-enabled/. Dato che abbiamo gia' creato la nostra configurazione, per abilitare il sito bastera' creare un link simbolito da sites-enabled  verso sites-available. Si fa in questo modo:

cd /etc/apache2/sites-enabled/
ln -s ../sites-available/www.tuosito.it

Riavviare apache

/etc/init.d/apache2 restart

- Procediamo con l'installazione di proftpd

Anche in questo caso utilizzaremo apt per installare il daemon

apt-get install proftpd

Nel menu' "ProFTPD configuration" scegliamo l'opzione "standalone"


Creiamo l'utente del sito

adduser sito1

Eseguiamo l'applicazione

vipw

Cambiamo la home dell'utente facendola puntare alla cartella htdocs del sito (quindi da /home/sito1 a /var/www/virtual_hosts/www.tuosito.it/htdocs/) e disabilitiamo l'accesso via ssh impostando la shell da /bin/bash a /bin/false

Usciamo da vipw (digitando :wq) ed impostiamo /bin/false come shell valida per l'accesso ftp.
Si fa inserendo la riga /bin/false in /etc/shells

echo "/bin/false" >> /etc/shells

Impostiamo il corretto proprietario ai dati

cd /var/www/virtual_hosts/www.tuosito.it/
chown sito1:sito1 htdocs -R

Finito! Adesso il nostro sito e' aggiornabile via ftp.
Ecco la registrazione di una sessione di prova effettuata:

ftp www.tuosito.it
Connected to www.tuosito.it

220 ProFTPD 1.3.1 Server (Debian) [::ffff:XXX.251.36.131]
Name (www.tuosito.it): sito1
331 Password required for sito1
Password:
230 User sito1 logged in
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (XXX,251,36,131,10,87).
150 Opening ASCII mode data connection for file list
-rw-r--r--   1 sito1    sito1          18 Sep 25 10:27 index.html
-rw-r--r--   1 sito1    sito1          20 Sep 25 12:46 info.php
226 Transfer complete
ftp> put dummy.file.gz
local: dummy.file.gz remote: dummy.file.gz
227 Entering Passive Mode (XXX,251,36,131,18,30).
150 Opening BINARY mode data connection for dummy.file.gz
226 Transfer complete
1038 bytes sent in 0.00 secs (3607.4 kB/s)
ftp> ls
227 Entering Passive Mode (XXX,251,36,131,13,95).
150 Opening ASCII mode data connection for file list
-rw-r--r--   1 sito1    sito1        1038 Sep 25 17:50 dummy.file.gz
-rw-r--r--   1 sito1    sito1          18 Sep 25 10:27 index.html
-rw-r--r--   1 sito1    sito1          20 Sep 25 12:46 info.php
226 Transfer complete
ftp> dele dummy.file.gz
250 DELE command successful
ftp> ls
227 Entering Passive Mode (XXX,251,36,131,16,89).
150 Opening ASCII mode data connection for file list
-rw-r--r--   1 sito1    sito1          18 Sep 25 10:27 index.html
-rw-r--r--   1 sito1    sito1          20 Sep 25 12:46 info.php
226 Transfer complete
ftp> quit
221 Goodbye.