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

  • 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

<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

webalizer
dokuwiki


Spoiler
Spoiler
linux/webserver/ampp_server.txt · Ultima modifica: 2019/08/14 16:37 da apressato
Torna su
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0