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 libio-compress-perl libdb5.1-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
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 di 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 nano /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 il frontend Web
9.1. Installare Apache
Installare Apache digitando
sudo apt-get install apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert
9.2. Installare 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 e per la grafica
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
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
Ruby
Non ho fatto test su Ruby perché non lo conosco, per installarlo
sudo apt-get install libapache2-mod-ruby
10. Configurare il frontend Web
10.1. Configurare di Apache
La parte seguente non è un must … è la via che ho trovato io per fare funzionare tutto e per poter uploadare il sito in ftp.
In parte è presa dalla
documentazione di Debian
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 public_html
mkdir public_html/cgi-bin
mkdir backup
Queste cartelle serviranno ad ospitare il sito ed il suo backup.
Tornare all'utente precedente
exit
cambiare il gruppo sulla cartella appena creata e riavviare il webserver
chgrp www-data /home/<nome_utente>/public_html
service apache2 restart
Se si ottiene un errore Forbidden quando si accede alla cartella home da Apache, controllare che /home/nome_utente abbia i permessi impostati a drwxr-xr-x. Se i permessi sono sbagliati, correggerli usando:
chmod 755 /home/<nome_utente>
10.2. Configurazione dei linguaggi per il funzionamento con Apache
PHP
Per poter usare PHP controllare che /etc/apache2/mods-available/php5.conf sia corretto:
sudo nano /etc/apache2/mods-available/php5.conf
<IfModule mod_php5.c>
<FilesMatch "\.ph(p3?|tml)$">
SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch "\.phps$">
SetHandler application/x-httpd-php-source
</FilesMatch>
# Per ri-abilitare php nelle directory utente commentare le righe seguenti
# (da <IfModule ...> a </IfModule>.) NON lo impostare a On dato che
# impedisce ai file .htaccess di disabilitarlo.
#<IfModule mod_userdir.c>
# <Directory /home/*/public_html>
# php_admin_value engine Off
# </Directory>
#</IfModule>
</IfModule>
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 nano 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 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
Per cercarne altri
sudo apt-cache search python
Perl
Analogamente a quanto visto per Python è necessario creare il file perl.conf in /etc/apache2/mods-available/
sudo nano /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
10.3. Ultimi Ritocchi
Perché tutto funzioni correttamente è necessario editare il file /etc/apache2/mods-available/dir.conf
sudo nano /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
o più velocemente
sudo service 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 nano /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 con SMTP-AUTH e TLS
14. Sincronizzare l'orologio di sistema
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
AWStats
Questo software è un analizzatore del file access.log di Apache.
Genera grafici sulla fruizione delle pagine.
Per installarlo basta digitare
sudo apt-get install awstats
Se si vuole avere anche la geolocalizzazione dei visitatori installare anche
sudo apt-get install libnet-ip-perl
sudo apt-get install libgeo-ipfree-perl
Il file di configurazione di AWStats si trova in /etc/awstats.
Viene fornito un template chiamato “awstats.conf”.
E' necessario creare una copia di awstats.conf per ogni dominio di cui si desidera avere le statistiche:
sudo cp /etc/awstats/awstats.conf /etc/awstats/awstats.yourdomain.ext.conf
Successivamente modificare il nuovo file
sudo nano /etc/awstats/awstats.yourdomain.ext.conf
e renderlo come segue:
# apache2
LogFile="/var/log/apache2/access.log"
# domain name
SiteDomain="yourdomain.ext"
HostAliases="localhost 127.0.0.1 yourdomain.ext"
LogFormat=1
Potete anche aggiungere le seguenti righe per attivare i plugins della geolocalizzazione
LoadPlugin="tooltips"
LoadPlugin="geoipfree"
Generare le prime statistiche (basate sul file var/log/apache2/access.log già esistente
/usr/lib/cgi-bin/awstats.pl -config=yourdomain.ext -update
Dovreste ottenere un output simile a questo
Create/Update database for config "/etc/awstats/awstats.toto.com.conf" by AWStats version 6.7 (build 1.892)
From data in log file "/var/log/apache2/access.log"...
Phase 1 : First bypass old records, searching new record...
Searching new records from beginning of log file...
Phase 2 : Now process new records (Flush history on disk after 20000 hosts)...
Jumped lines in file: 0
Parsed lines in file: 191338
Found 0 dropped records,
Found 24 corrupted records,
Found 0 old records,
Found 191314 new qualified records.
Creare il file /etc/apache2/conf.d/statistics
nano /etc/apache2/conf.d/statistics
e copiarvi le seguenti linee
Alias /awstatsclasses "/usr/share/awstats/lib/"
Alias /awstats-icon/ "/usr/share/awstats/icon/"
Alias /awstatscss "/usr/share/doc/awstats/examples/css"
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
ScriptAlias /statistics/ /usr/lib/cgi-bin/
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Riavviare Apache
sudo /etc/init.d/apache2 restart
e verificare se tutto ha funzionato puntando il vostro browser su
http://yourdomain.ext/awstats/awstats.pl
o
http://yourdomain.ext/awstats/awstats.pl?config=yourdomain.ext
se avere più files di configurazione.
Per rendere la generazione delle statistiche automatica è necessario mettere la chiamata per l'aggiornamento in contab
crontab -e
ed aggiungere queste righe
# update every 10 min
*/10 * * * * root /usr/lib/cgi-bin/awstats.pl -config=toto.com -update > /dev/null
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
Torna su