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
xx. Links