====== 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 [[http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html|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''
in
Un'ultima modifica per definire / modificare la posizione della cartella CGI
ScriptAlias /cgi-bin/ /home/webmaster/www/cgi-bin/
Options ExecCGI
AddHandler cgi-script cgi pl
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
* Il Publisher Handler -- Consente di scrivere scripts in puro Python (''.py'') che vengono interpretati
* PSP Handler -- Python Server Pages, consentono di embeddare codice Python nell'HTML come avviene per PHP (''.psp'').
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
AddHandler mod_python .py .psp
PythonHandler mod_python.publisher | .py
PythonHandler mod_python.psp | .psp
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
AddHandler perl-script .pl
PerlHandler ModPerl::PerlRunPrefork
PerlOptions +ParseHeaders
PerlSendHeader On
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
#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
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
Test PHP
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
<% req.write("Hello!") %>
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 (**n**etwork **t**ime **p**rotocol) 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 [[http://www.splitbrain.org/projects/dokuwiki|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 =====
[[http://articles.techrepublic.com.com/2415-7343_11-161368.html|webalizer]] \\
[[http://www.rigacci.org/wiki/doku.php/doc/appunti/linux/sa/dokuwiki|dokuwiki]]
\\
Quella che segue è solo una serie di appunti che serviranno alla stesura della guida.
===== Rendere Accessibile la /var/www =====
mkdir /home/[YOUR USERNAME]/www
mount --bind /var/www /home/[YOUR USERNAME]/www
seguendo [[http://www.zaphu.com/2007/08/21/ubuntu-lamp-server-guide-configure-apache-mysql-and-cgi-bin/|questa guida]]
===== Applicazioni Web =====
WordPress
[[http://www.supriyadisw.net/2006/12/wordpress-installation-on-ubuntu-with-lamp]]
===== Nuovi Appunti: 20091020 =====
#!/bin/bash
sudo cp -r -v tmp2/dokuwiki/* /usr/share/dokuwiki/
sudo cp -r -v tmp2/dokuwiki/conf/* /etc/dokuwiki/
sudo cp -r -v tmp2/dokuwiki/data/* /var/lib/dokuwiki/data
sudo cp -v tmp2/dokuwiki/conf/users.auth.php /var/lib/dokuwiki/acl/
sudo cp -v tmp2/dokuwiki/conf/acl.auth.php /var/lib/dokuwiki/acl/
sudo chown -R root:root /var/lib/dokuwiki
sudo chown -R root:root /etc/dokuwiki/
sudo chown -R www-data:root /var/lib/dokuwiki
===== Nuovi Appunti: 20100120 =====
[[http://tuxtweaks.com/2009/10/install-lamp-on-ubuntu-9-10-karmic-koala/]]
\\ (Installazione in un colpo di tutto il software)
[[http://wiki.vpslink.com/HOWTO:_CentOS_5_setup_for_LAMP_and_ISPconfig]]
\\ (Utile per vedere alcune configurazioni)
[[http://ubuntuforums.org/showthread.php?t=952746]]
\\ (Potenziale soluzione riguaro i permessi)