Indice

AMPP Server

1. Installazione base

2. Installare il Server SSH

Per installare il server SSH digitate

sudo apt-get install ssh openssh-server

Da questo punto in avanti è possibile usare un client SSH come PuTTY per connettersi al server Ubuntu 8.04 LTS da una qualsiasi workstation e terminare l'installazione comodamente seduti alla propria postazione.

3. Configurare la rete

4. Aggiornare Linux (Opzionale)

Digitare

sudo apt-get update

per aggiornare il database dei package di apt e poi

sudo apt-get upgrade

per installare gli ultimi apgrade (se esistono).

5. Cambiare la Shell di default (Opzionale)

/bin/sh è un link simbolico (symlink) a /bin/dash, io preferisco usare la bash quindi

sudo ln -sf /bin/bash /bin/sh

6. Disabilitare AppArmor

AppArmor è un pacchetto che dovrebbe garantire la sicurezza. In realtà, spesso, causa più problemi di quanti ne previene. Deve essere fermato digitando

sudo /etc/init.d/apparmor stop
sudo update-rc.d -f apparmor remove

e disinstallato digitando

sudo apt-get remove apparmor apparmor-utils

7. Installare il Software di Base

Alcuni dei seguenti pacchetti sono propedeutici al completamento del server, altri servono solo per rendere la vita “piu facile”.

sudo apt-get install binutils cpp fetchmail flex gcc libarchive-zip-perl libc6-dev libcompress-zlib-perl libdb4.3-dev libpcre3 libpopt-dev lynx m4 make ncftp nmap openssl perl perl-modules unzip zip zlib1g-dev autoconf automake1.9 libtool bison autotools-dev g++ build-essential
sudo apt-get install mc imagemagick curl

8. Installare MySQL

Per installare MySQL digitare

sudo apt-get install mysql-server mysql-client libmysqlclient15-dev

Durante l'installazione verrà richiesta la password per l'utente root di MySQL. Tale password è valida sia per l'utente root@localhost che per root@server1.example.com.

A fine installazione MySQL è attivo ma risponde solo per interrogazioni che provengono da localhost quindi necessitano software come phpMyAdmin per lavorarci.
Volendo poterci lavorare anche da altre postazioni è necessario modificare il file /etc/mysql/my.cnf commentantdo la linea bind-address = 127.0.0.1

sudo vi /etc/mysql/my.cnf
[...]
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address  =127.0.0.1
[...]

Riavviare MySQL

sudo /etc/init.d/mysql restart

e verificare tramite il comando

sudo netstat -tap |grep mysql

che la risposta sia come quella riportata di seguito

 root@server1:~# netstat -tap | grep mysql
 tcp        0      0 *:mysql                 *:*                     LISTEN      5869/mysqld
 root@server1:~#

9. Installare e Configurare Apache

Installare Apache digitando

sudo apt-get install apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert
La parte seguente non è un must … è la via che ho trovato io per fare funzionare tutto e per poter uploadare il sito in ftp.

Creare un nuovo utente (potrebbe essere fatto anche sull'utente corrente ma esso è “sudoers” quindi potenzialmente pericoloso). Io lo chiamerò webmaster.

sudo adduser webmaster

Dopo averne impostato la password aggiungerlo al gruppo www-data

sudo usermod -g www-data webmaster

Loggarsi con il nuovo utente

su webmaster

e creare la seguente struttura di cartelle nella sua /home

mkdir www
mkdir www/htdocs
mkdir www/cgi-bin
mkdir backup

Queste cartelle serviranno ad ospitare il sito ed il suo backup.

Tornare all'utente precedente

exit

e dare i diritti sulle cartelle appena create

sudo chown -R www-data:www-data /home/webmaster/www
sudo chmod -R 775 /home/webmaster/www
sudo chown -R www-data:www-data /home/webmaster/backup
sudo chmod -R 775 /home/webmaster/backup

In questo modo gli script PHP potranno scrivere in locale ed il sito potrà essere uploadato tramite ftp.

Creare il Nuovo Sito

Ora bisogna spiegare ad Apache cosa deve fare copiare il template del sito di default in quello nel nostro nuovo sito

sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/[VOSTRO_SITO]

Editare il nuovo file di configurazione

sudo vi /etc/apache2/sites-available/[VOSTRO_SITO]

Cambiare il valore della direttiva DocumentRoot e farlo puntare alla cartella precedentemente creata

DocumentRoot /home/webmaster/www/htdocs

Ed in modo analogo modificare la direttiva Directory

<Directory /var/www/> 

in

<Directory /home/webmaster/www/htdocs> 

Un'ultima modifica per definire / modificare la posizione della cartella CGI

ScriptAlias /cgi-bin/ /home/webmaster/www/cgi-bin/
<Directory /home/webmaster/www/cgi-bin>
          Options ExecCGI
          AddHandler cgi-script cgi pl
</Directory> 

Salvare ed uscire. Ora è necessario disabilitare il sito di default

sudo a2dissite default

ed abilitare il nuovo

sudo a2ensite [VOSTRO_SITO]

Perchè le modifiche vengano recepite è necessario riavviare Apache

sudo /etc/init.d/apache2 restart

10. Installare e Configurare PHP5 / Python / Perl / Ruby

PHP5

Per installare PHP e gran parte delle sue librerie digitare

sudo apt-get install libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-mysql php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php-pear

Consiglio di aggiungere anche i seguenti moduli per i collegamenti con DB diversi da MySQL

sudo apt-get install php5-odbc php5-pgsql php5-sybase php5-ldap php5-sqlite3 php5-interbase libphp-jpgraph

Python

Per installare il modulo Python di Apache digitare

sudo apt-get install libapache2-mod-python

Esistono due modi per gestire il codice Python con Apache

Perché Apache comprenda queste estensioni e le utilizzi in modo corretto è necessario editare il file mod_python.conf in /etc/apache2/mods-available/

cd /etc/apache2/mods-available/
sudo vi mod_python.conf

e valorizzarlo come segue

<IfModule mod_python.c>
        AddHandler mod_python .py .psp
        PythonHandler mod_python.publisher | .py
        PythonHandler mod_python.psp | .psp
</IfModule>

A questo punto è necessario attivare il modulo Python

sudo a2enmod mod_python

Se dovesse risultare già attivo è necessario disattivarlo prima di procedere ad una nuova attivazione

sudo a2dismod mod_python

o creare un link simbolico a mod_python.conf in /etc/apache2/mods-enabled/

Potrebbe essere utile installare anche questi moduli

sudo apt-get install python-mysqldb python-xml

Per cercarne altri

sudo apt-cache search python

Perl

Per installare il modulo Perl di Apache digitare

sudo apt-get install libapache2-mod-perl2

Analogamente a quanto visto per Python è necessario creare il file perl.conf in /etc/apache2/mods-available/

sudo vi /etc/apache2/mods-available/perl.conf

e valorizzarlo come segue

<IfModule mod_perl.c>
        AddHandler perl-script .pl
        PerlHandler ModPerl::PerlRunPrefork
	PerlOptions +ParseHeaders
	PerlSendHeader On
</IfModule>

Anche in questo caso il modulo deve essere attivato

sudo a2enmod perl

Ruby

Non ho fatto test su Ruby perché non lo conosco, per installarlo

sudo apt-get install libapache2-mod-ruby

Ultimi Ritocchi

Perché tutto funzioni correttamente è necessario editare il file /etc/apache2/mods-available/dir.conf

sudo vi /etc/apache2/mods-available/dir.conf

e modificare la direttiva DirectoryIndex come segue

<IfModule mod_dir.c>
   #DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
  DirectoryIndex index.html index.htm index.shtml index.cgi index.php index.php3 index.pl index.xhtml
 </IfModule>

Ora è necessario abilitare alcuni moduli di Apache ( SSL , rewrite , suexec , e include )

sudo a2enmod ssl
sudo a2enmod rewrite
sudo a2enmod suexec
sudo a2enmod include
sudo a2enmod userdir

ed, in fine, è necessario riavviare Apache affinchè tutte le modifiche diventino effettive

sudo /etc/init.d/apache2 restart

11. Primi Test

Per verificare il corretto funzionamento di Apache è sufficiente spostarsi in /home/webmaster/www/htdocs e creare i seguenti files come utente webmaster.

su webmaster

info.php

Questo file verifica il corretto funzionamento di PHP mostrando la pagina informativa.

vi info.php
<HTML>
    <HEAD>
        <TITLE>Test PHP</TITLE> 
    </HEAD>
    <BODY>
        <?php phpinfo(); ?>
    </BODY>
</HTML>

Per testare aprire un bowser e puntare a http://[your_site]/info.php.

test.py

Questo file verifica il corretto funzionamento di Python in modalità Publisher Handler.

vi test.py
def index(req):
  return "Test successful";

Per testare aprire un bowser e puntare a http://[your_site]/test.py.

test.psp

Questo file verifica il corretto funzionamento di Python in modalità Python Server Pages.

vi test.psp
<html>
    <body>
        <h1><% req.write("Hello!") %></h1>
    </body>
</html>

Per testare aprire un bowser e puntare a http://[your_site]/test.psp.

printenv.pl

Questo file verifica il corretto funzionamento di Perl come CGI e contrariamente agli altri deve essere posizionato in /home/webmaster/www/cgi-bin.

vi printenv.pl
#!c:/perl/bin/perl.exe
##
##  printenv -- demo CGI program which just prints its environment
##

print "Content-type: text/plain; charset=iso-8859-1\n\n";
foreach $var (sort(keys(%ENV))) {
    $val = $ENV{$var};
    $val =~ s|\n|\\n|g;
    $val =~ s|"|\\"|g;
    print "${var}=\"${val}\"\n";
}

Per testare aprire un bowser e puntare a http://[your_site]/cgi-bin/printenv.pl.

12. ProFTPD

Per installare ProFTPD digitare

sudo apt-get install proftpd ucf

Il programma di installazione chiede di selezionare la modalità di funzionamento.
Selezionare standalone.

Editare il file proftpd.conf ed aggiungere le righe riportate di seguito

sudo vi /etc/proftpd/proftpd.conf
[...]
DefaultRoot ~
IdentLookups off
ServerIdent on "FTP Server ready."
[...]

Riavviare il servizio per rendere attive le modifiche

sudo /etc/init.d/proftpd restart

xx. Postfix With SMTP-AUTH And TLS

14. Synchronize the System Clock

Poiché tutti i log e molte operazioni sono legate all'orario di sistema, è una buona idea tenere aggiornato l'orologio di sistema con un NTP (network time protocol) server su internet.
Per fare questo digitare

sudo apt-get install ntp ntpdate

Ora l'orologio di sistema verrà costantemente aggiornato

15. Applicazioni Web

phpMyAdmin

phpMyAdmin è un database manager indispensabile per gestire MySQL (verranno fatti riferimenti ad esso nel corso della guida).
Per installarlo digitare

sudo apt-get install phpmyadmin

Il programma di installazione effettuerà la configurazione automatica del webserver.

Selezionare Apache2 (usando la barra spaziatrice e non l'invio :!:)

Per testarne il funzionamento è sufficiente aprire un borwser e farlo puntare a http://[vostro sito]/phpmyadmin

Webalizer

Questo software è un analizzatore del file access.log di Apache. Genera grafici sulla fruizione delle pagine. Per installarlo basta digitare

sudo apt-get install webalizer

Di default la cartella di webalizer viene posta in /var/www/webalizer. E' necessario spostarla dove il veb server possa trovarla.

Creare la nuova cartella dove verranno messi i report

su webmaster
mkdir /home/webmaster/www/htdocs/webalizer
exit

Modificare il file di configurazione

sudo vi /etc/webalizer/webalizer.conf

e modificare la riga

OutputDir /var/www/webalizer

in

OutputDir /home/webmaster/www/htdocs/webalizer

Potrebbere rendersi anche necessario modificare la linea

LogFile /var/log/apache2/access.log.1

in

LogFile /var/log/apache2/access.log

Webalizer viene schedulato in automatico ma per testarne il funzionamento sarà necessario lanciarlo a mano

sudo webalizer

Per verificare il risultato sul webserver aprire un browser e puntare a http://[vostro sito]/webalizer

Dokuwiki

In fase di definizione

Esiste un package contenente dokuwiki ma non riesco a farlo funzionare correttamente e poi preferisco averne il controllo.
Quindi, impersonando webmaster, spostarsi nella sua /home e scaricare l'ultima versione del tgz che si trova qui.

su - webmaster
wget http://www.splitbrain.org/_media/projects/dokuwiki/dokuwiki-xxxx-xx-xx.tgz
tar -xvf ./dokuwiki-xxxx-xx-xx.tgz -C /home/webmaster/www/htdocs
mv /home/webmaster/www/htdocs/dokuwiki-xxxx-xx-xx /home/webmaster/www/htdocs/dokuwiki
 
exit
 
cd /home/webmaster/www/htdocs
 
sudo chown -R www-data dokuwiki/data
 
sudo chgrp www-data dokuwiki/conf/
sudo chmod 775      dokuwiki/conf/
 
sudo chgrp www-data dokuwiki/lib/plugins/
sudo chmod 775      dokuwiki/lib/plugins/

Puntare il browser su http://[vostro_sito]/doluwiki e terminare l'installazione.

WordPress

phpBB3

xx. Backups

webalizer
dokuwiki


Spoiler
Spoiler