====== 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 =====
http://www.cyberciti.biz/faq/setting-up-an-network-interfaces-file/
===== 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 [[https://wiki.debian.org/it/LaMp|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//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/
==== 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
SetHandler application/x-httpd-php
SetHandler application/x-httpd-php-source
# Per ri-abilitare php nelle directory utente commentare le righe seguenti
# (da a .) NON lo impostare a On dato che
# impedisce ai file .htaccess di disabilitarlo.
#
#
# php_admin_value engine Off
#
#
=== 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 nano 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 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
AddHandler perl-script .pl
PerlHandler ModPerl::PerlRunPrefork
PerlOptions +ParseHeaders
PerlSendHeader On
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
#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
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
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 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 (**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%%**
==== 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
^Riferimenti^
|[[http://awstats.sourceforge.net/|Sito Ufficiale 1]]|
|[[http://www.awstats.org/|Sito Ufficiale 2]]|
|[[http://awstats.sourceforge.net/docs/awstats_faq.html]]|
|[[http://awstats.sourceforge.net/docs/index.html]]|
|[[http://awstats.sourceforge.net/docs/awstats_setup.html]]|
|[[http://jeromejaglale.com/doc/ubuntu/awstats]]|
|[[http://ubuntu-tutorials.com/2008/01/16/configuring-awstats-on-ubuntu-server/]]|
|[[http://www.mneylon.com/blog/archives/2005/08/03/configuring-awstats-with-apache-2-on-ubuntu/]]|
|[[https://help.ubuntu.com/community/AWStats]]|
|[[http://kastang.com/blog/2010/07/awstats-on-ubuntu-10-04-server/]]|
==== 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)