Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati
  • Differenze per "maegras/Prova1"
Differenze tra le versioni 7 e 8
Versione 7 del 13/01/2012 09.57.17
Dimensione: 17853
Autore: maegras
Commento:
Versione 8 del 13/01/2012 10.11.47
Dimensione: 18162
Autore: maegras
Commento:
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 34: Linea 34:
* `apache2.conf`: è il file di confugurazione globale del server Apache. In esso sono contenute le direttive che saranno applicate globalmente a tutti i siti contenuti nel server;

* `conf.d`: anche questo file si occupa della configurazione globale del server Apache. Altri software che utilizzano il server Apache per fornire contenuti all'utente finale, possono aggiungere files o link simbolici attraverso questo file.

* `envvars`: file where Apache2 environment variables are set.

    httpd.conf: historically the main Apache2 configuration file, named after the httpd daemon. The file can be used for user specific configuration options that globally effect Apache2.

    mods-available: this directory contains configuration files to both load modules and configure them. Not all modules will have specific configuration files, however.

    mods-enabled: holds symlinks to the files in /etc/apache2/mods-available. When a module configuration file is symlinked it will be enabled the next time apache2 is restarted.

    ports.conf: houses the directives that determine which TCP ports Apache2 is listening on.

    sites-available: this directory has configuration files for Apache2 Virtual Hosts. Virtual Hosts allow Apache2 to be configured for multiple sites that have separate configurations.

    sites-enabled: like mods-enabled, sites-enabled contains symlinks to the /etc/apache2/sites-available directory. Similarly when a configuration file in sites-available is symlinked, the site configured by it will be active once Apache2 is restarted.

In addition, other configuration files may be added using the Include directive, and wildcards can be used to include many configuration files. Any directive may be placed in any of these configuration files. Changes to the main configuration files are only recognized by Apache2 when it is started or restarted.

 * `apache2.conf`: è il file di confugurazione globale del server Apache. In esso sono contenute le direttive che saranno applicate globalmente a tutti i siti contenuti nel server;

 * `conf.d`: anche questo file si occupa della configurazione globale del server Apache. Altri software che utilizzano il server Apache per fornire contenuti all'utente finale, possono aggiungere files o link simbolici attraverso questo file.

 * `envvars`: in questo file sono definite e impostate le variabili di ambiente del server Apache.

 * `httpd.conf`: ancora un file di configurazione che inizialmente è vuoto. Può essere utilizzato per specifiche direttive impostate dall'utente che agiscono globalmente sul server Apache.

 * `mods-available`: in questa directory sono contenuti i file di configurazione per avviare i moduli del server Apache e per configurare gli stessi. Non tutti i moduli hanno file di configurazione specifici.

 * `mods-enabled`: in questa directory sono posti dei link simbolici ai moduli presenti nella directory `/etc/apache2/mods-available`. tutti i moduli che hanno un link simbolico in questa directory sono abilitati e avviati all'interno del server Apache.

 * `ports.conf`: contiene le direttive per impostare le porte TCP sulle quali il server Apache resterà in ascolto di richieste dall'utente.

 * `sites-available`: in questa directory sono contenuti i file di configurazione per i Virtual Host del server Apache. I Virtual Hosts consentono avere, all'interno del server Apache, numerosi siti con configurazioni diverse uno dall'altro.

 * `sites-enabled`: così come per `mods-enabled`, questa directory contiene link simbolici a `/etc/apache2/sites-available`. Quando una configurazione presente in `sites-available` è linkata all'interno di questa directory, il sito corrispondente verrà configurato e avviato insieme al server Apache

n addition, other configuration files may be added using the Include directive, and wildcards can be used to include many configuration files. Any directive may be placed in any of these configuration files. Changes to the main configuration files are only recognized by Apache2 when it is started or restarted.


Questa guida è presente anche nella documentazione ufficiale

Introduzione

Prima di cominciare si ritiene necessario chiarire cosa si intende con Server Web:

  • "Un server web è un servizio, e per estensione il computer su cui è in esecuzione, che si occupa di fornire, tramite software dedicato e su richiesta dell'utente, file di qualsiasi tipo, tra cui pagine web (successivamente visualizzabili dal browser sul PC dell'utente). Le informazioni inviate dal server web all'utente viaggiano in rete trasportate dal protocollo HTTP. L'insieme di server web dà vita al World Wide Web, uno dei servizi più utilizzati di Internet." (cit. Wikipedia)

Un Server Web viene solitamente utilizzato per due scopi:

  • Personale: per il test e la progettazione di siti web o applicativi;

  • Commerciale: per fornire servizi di Web Hosting da vendere a terzi.

Apache Web Server

Intallazione

Installare il pacchetto apache2.

Verifica del funzionamento

Aprire il proprio browser preferito e puntare all'indirizzo http://127.0.0.1 oppure http://localhost. Se l'installazione del server apache è andata a buon fine sarà possibile leggere il messaggio:

It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.

Configurazione

Per procedere alla configurazione del server Apache è necessario agire sui file contenuti nella cartella /etc/apache2, in particolare si dovrà agire su:

  • apache2.conf: è il file di confugurazione globale del server Apache. In esso sono contenute le direttive che saranno applicate globalmente a tutti i siti contenuti nel server;

  • conf.d: anche questo file si occupa della configurazione globale del server Apache. Altri software che utilizzano il server Apache per fornire contenuti all'utente finale, possono aggiungere files o link simbolici attraverso questo file.

  • envvars: in questo file sono definite e impostate le variabili di ambiente del server Apache.

  • httpd.conf: ancora un file di configurazione che inizialmente è vuoto. Può essere utilizzato per specifiche direttive impostate dall'utente che agiscono globalmente sul server Apache.

  • mods-available: in questa directory sono contenuti i file di configurazione per avviare i moduli del server Apache e per configurare gli stessi. Non tutti i moduli hanno file di configurazione specifici.

  • mods-enabled: in questa directory sono posti dei link simbolici ai moduli presenti nella directory /etc/apache2/mods-available. tutti i moduli che hanno un link simbolico in questa directory sono abilitati e avviati all'interno del server Apache.

  • ports.conf: contiene le direttive per impostare le porte TCP sulle quali il server Apache resterà in ascolto di richieste dall'utente.

  • sites-available: in questa directory sono contenuti i file di configurazione per i Virtual Host del server Apache. I Virtual Hosts consentono avere, all'interno del server Apache, numerosi siti con configurazioni diverse uno dall'altro.

  • sites-enabled: così come per mods-enabled, questa directory contiene link simbolici a /etc/apache2/sites-available. Quando una configurazione presente in sites-available è linkata all'interno di questa directory, il sito corrispondente verrà configurato e avviato insieme al server Apache

n addition, other configuration files may be added using the Include directive, and wildcards can be used to include many configuration files. Any directive may be placed in any of these configuration files. Changes to the main configuration files are only recognized by Apache2 when it is started or restarted.

The server also reads a file containing mime document types; the filename is set by the TypesConfig directive, and is /etc/mime.types by default.

In apache2 le principali opzioni di configurazione sono racchiuse nel file apache2.conf, mentre il file httpd.conf è vuoto (riservato alla personalizzazione della configurazione di apache2) e le porte su cui il server Web sarà in ascolto all'avvio del servizio sono elencate nel file ports.conf; questi file si trovano in /etc/apache2. La directory mods-available contiene tutti i moduli disponibili con apache2 (quelli installati di default) mentre la directory sites-available contiene le direttive di configurazione relative a tutti i siti che questo server Web ospita. I moduli effettivamente caricati all'avvio del servizio apache2 sono elencati nella directory mods-enabled, così come i siti effettivamente pubblicati e visibili agli utenti sono elencati nella directory sites-enabled. I files contenuti in queste due directory sono dei link a quelli contenuti nelle due directory mods-available e sites-available. Questo vuol dire che se dovete supportare l'accesso in modo protetto al vostro sito (usando ssl) dovete creare dei link ai file corrispondenti in mods-available.

Per esempio per supportare ssl occorre immettere comandi:

sudo ln -s /etc/apache2/mods-available/ssl.conf /etc/apache2/mods-enabled/ssl.conf
sudo ln -s /etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled/ssl.load

La directory che contiene i file di log su tutti gli accessi è /var/log/apache2. La directory che contiene il sito predefinito e che dovrebbe contenere i vostri siti è /var/www.

Per modificare l'installazione di default occorre dare un'occhiata alla directory di configurazione di apache2, /etc/apache2.

Eseguire al prompt dei comandi:

cd /etc/apache2

Osserverete come output :

README        envvars     mods-available  sites-available
apache2.conf  httpd.conf  mods-enabled    sites-enabled
conf.d        magic       ports.conf      ssl

Il file /etc/apache2/apache2.conf contiene le principali opzioni di configurazione di apache2:

ServerRoot "/etc/apache2"
LockFile /var/lock/apache2/accept.lock
PidFile /var/run/apache2.pid
TimeOut 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
StartServers         5
MinSpareServers      5
MaxSpareServers     10
MaxClients          20
MaxRequestsPerChild  0
ErrorLog /var/log/apache2/error.log
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf
Include /etc/apache2/httpd.conf
Include /etc/apache2/ports.conf
  • ServerRoot: directory base per configurazione, logs ed errori

  • LockFile: il lock file sul file di log (da modificare solo se il log file di apache2 è montato via NFS)

  • PidFile: il file che contiene il PID del processo padre apache2

  • TimeOut: il tempo dopo il quale apache2 chiude una connessione client in stato idle

  • KeepAlive On: sono permesse connessioni persistenti (ovvero in grado di servire più di una richiesta di uno stesso client)

  • MaxKeepAliveRequests: il massimo numero di richieste che in una singola connessione un client può fare al server (dopo tale numero le richieste verranno scartate)

  • KeepAliveTimeout: numero di secondi da attendere per effettuare un'altra richiesta da parte di uno stesso client su una stessa connessione persistente

  • StartServers: numero di processi server avviati

  • MinSpareServers: numero minimo di processi liberi (ovvero avviati per supplire ad improvvisi picchi di carico)

  • MaxSpareServers: numero massimo di processi liberi (ovvero avviati per supplire ad improvvisi picchi di carico)

  • MaxClients: massimo numero di processi apache2 che possono essere avviati

  • MaxRequestsPerChild: numero massimo di richieste che il server è in grado di processare per ciascun thread

  • Include: sono le direttive di inclusione. Apache2 si serve di tali direttive per dichiarare indirizzo di binding,porta di ascolto ed altri parametri specifici della vostra configurazione in file distinti.

Come vedete la direttiva ErrorLog /var/log/apache2/error.log è relativa al path del log file, mentre la Include /etc/apache2/mods-enabled/*.load e quella successiva dicono di includere tutti i moduli elencati in mods-enabled. Le configurazioni particolari sono in /etc/apache2/httpd.conf e la porta di ascolto in ports.conf.

Per modificare l'utente e il gruppo con cui apache2 è avviato dovete editare i parametri nel file /etc/apache2/apache2.conf-

User www-data

Group www-data

Apache non dovrebbe essere eseguito come root in quanto questo apre numerose falle di sicurezza...

I parametri per la gestione dei carichi di lavoro sono:

StartServers <n° processi figli Web Server all'avvio>

MinSpareServers <n° minimo processi figli liberi avviati per supplire picchi di carico> 
MaxSpareServers <n° max processi figli liberi avviati per supplire picchi di carico>

Gli spare servers consentono al Web Server di rispondere più velocemente in caso di improvvisi picchi di richieste , ma occupano anche preziosa memoria dato che in casi di traffico normale non fanno nulla!

MaxClients <max n° client Web server è in grado di supportare simultaneamente>

I parametri per il nome del server sono :

ServerName <hostname (deve essere raggiungibile da URL>
ServerAdmin <mail_web_administrator>

Personalizzare il proprio sito

I parametri da specificare nel file /etc/apache2/sites-enabled/000-default sono:

DocumentRoot /usr/local/apache/htdocs
UserDir <public_html>
Alias /icons/ /usr/local/apache/icons/
ScriptAlias /cgi-bin/ /usr/local/apache/cgi-bin/
  • DocumentRoot: è la radice dell'albero dei documenti per questo sito

  • Alias e ScriptAlias: sono degli alias names per le directory locali nelle quali si trovano icone e scripts

Esempio:

http://example.com/man.html    viene tradotto in /usr/local/apache/htdocs/man.html
http://example.com/cgi-bin/rpm-query    viene tradotto in /usr/local/apache/cgi-bin/rpm-query

Alcune direttive di tipizzazione dei file:

Type/sub-type  extension1 [extension2...]

Esempio :

Video/mpeg mpeg mpg mpe
Video/quicktime qt mov
Video/x-msvideo avi
'''AddType''' newtype/newsub-type extension1..

Esempio:

AddType text/doc doc

Alcune direttive per la specifica del linguaggio:

AddEncoding x-gzip gz tgz
AddFileType text/html html
AddLanguage en .en 

Le direttive per la gestione dinamica dell'albero dei documenti e la redirezione dei documenti

Redirect [temporary | permanent] /images http://example.com/icons 
RedirectMatch (.*)\.gif$ http://example.com$1.jpg

Il client che richiede file .gif file viene reindirizzato verso file .jpeg.

Le direttive per l'indicizzazione delle cartelle:

DirectoryIndex <index dir predefinito>

Esempio:

DirectoryIndex index.html 

Se un client richiede http://www.example.com/dir1 ottiene come pagina web index.html.

Le direttive per la generazione di indici dinamici di directory:

Option + Indexes

Le direttive per la gestione dell'elenco dei files contenuti in una directory:

IndexIgnore README* *.txt 

Nasconde al client i files README* e tutti i file con estensione .txt.

Altre direttive:

IndexOptions , HeaderName

Scelta icone per rappresentazione file:

AddIcon <icon> <match1> [<match2>
.]

AddIconByType ..
AddIconByEncoding ..
DefaultIcon ..

Esempio scelta di icone:

AddIcon /icons/binary.gif .bin .exe
AddIcon /icons/text.gif .txt
AddIconByType /icons.apache/text.gif text/*
AddAltByType TXT text/*
DefaultIcon /icons/unknown.gif

Configurazione delle opzioni a livello di directory:

Options
All (tutte le opzioni)
ExecCGI  
FollowSymLinks 
MultiViews  
SymLinksIfOwnerMatch 
  • ExecCGI:esecuzione script CGI

  • FollowSymLinks: segue link simbolici

  • MultiViews: seleziona documento che si avvicina di + alla richiesta del client quando il documento richiesto non esiste

  • SymLinksIfOwnerMatch: Segue link se owner di src e dst coincidono

Autorizzazione basata sull'Host

Le direttive da usare sono le seguenti:

Deny <hostname> | a.b.c.d/mask
Allow <hostname> | a.b.c.d/mask
Order allow,deny : Processa le regole nell'ordine indicato

Autorizzazione basata sull'Utente

Per configurare l'autenticazione a livello utente procedere come segue:

  • Creare file per utenti: /usr/local/apache/conf/htuser

  • Creare utenti in /usr/local/apache/conf/htuser con comando:

    htpasswd -c htuser <nomeutente>
  • Creare gruppo htusers nel file /usr/local/apache/conf/htgroup. Il formato del file è il seguente:

    Groupname: user1 user2 user3 ..
  • Direttive per autorizzazione basata sull'utente da inserire nel file /etc/apache2/sites-enabled/000-default:

    AuthUserFile conf/htuser
    AuthGroupFile  conf/htgroup
  • Impostazioni controllo accesso:

    Require user username1 username2  
    Require group groupname1 groupname2 
    Require valid-user 
    • la prima direttiva consente l'accesso a username1 username2..

    • la seconda direttiva consente l'accesso a groupname1 groupname2..

    • la terza direttiva consente l'accesso solo agli utenti definiti in htuser

Hosting virtuale

In generale una singola macchina ospita più di un sito web.

La gestione dei siti allora può essere fatti nei seguenti modi:

  • N siti = N * M processi web server (se M è n° processi per singola istanza sito web,vuol dire che M processi gestiscono ciascun sito)
  • Virtual host = N siti = M processi web server (sempre 1 singola istanza web,ovvero gli M processi gestiscono tutti gli N siti web)

È possibile identificare tre tipi di hosting virtuale :

  • basato sull'IP (VH host based) : da eseguire quando avete più di indirizzo IP
  • basato sul nome (VH name based) : da eseguire quando avete più nomi DNS (alias etc...)
  • basato sulla porta (VH port based)

I metodi per la scelta delle tipologie di hosting sono :

  • N interfacce di rete : VH host based
  • Singola interfaccia di rete : name based VH
  • N nomi per host : VH name based
  • Necessità di separazione web servers per differenti policies protezione : Non scegliete il VH poichè dovete effettuare una separazione delle istanze del vostro web server

Host based VH

Utilizzare la direttiva <VirtualHost> da specificare all'interno di /etc/apache2/sites-enabled/000-default e all'interno delle opzioni di directory come nell'esempio riportato:

BindAddress 0.0.0.0
Port 80
DocumentRoot /usr/local/apache/htdocs
ServerName site1.example.com
<VirtualHost 192.168.1.2>
DocumentRoot /usr/local/apache/htdocs2
ServerName site2.example.com
...
</VirtualHost> 

Qui il sito web di default serve site1.example.com, mentre l'IP 192.168.1.2 serve il sito site2.example.com.

Name based VH

Esempio:

Listen 192.168.1.232
NameVirtualHost 192.168.1.232
<VirtualHost 192.168.1.232>
DocumentRoot /home/httpd/ex1
ServerName www1.example.com
..
</VirtualHost>
..
<VirtualHost 192.168.1.232>
DocumentRoot /var/apache/htdocs2
ServerName www2.example.com
..
</VirtualHost>

Qui come vedete si ha un unico IP ma due nomi server distinti (due nomi nel DNS,di cui uno sarà un alias name) che servono due siti distinti.

Esecuzione di N istanze su singolo host

Creare N files di configurazione per N istanze :

  • Aggiungere righe per start e stop httpd al file /etc/init.d/apache2

  • In /etc/init.d/apache2 definire gli N diversi files di configurazione apache2[i].conf usati dalle N istanze dei web server

  • Usare nei apache2[i].conf le diverse direttive specifiche come mostrato in precedenza

  • Specificare:

    BindAddress
    Port
    Listen 
    ErrorLog

Configurazione di un server Web protetto con OpenSSL

I comandi da specificare sono :

  • Comando da shell:

    apache2-ssl-certificate -days 3650

    sostituite 3650 con la durata del certificato in giorni.

  • Caricare modulo ssl in /etc/apache2/mods-enabled con comando:

    ln -s /etc/apache2/mods-available/ssl.conf /etc/apache2/mods-enabled/ssl.conf
    ln -s /etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled/ssl.load
  • Specificare la direttiva Listen 443 nel file /etcapache2/ports.conf

  • Modificare /etc/apache2/sites-available/default aggiungendo le righe:

    NameVirtualHost *:443
    <VirtualHost *:443>
    #Inserire qui l'indirizzo email dell'amministratore del server
    ServerAdmin webmaster@localhost
    #Inserire qui la DocumentRoot del server virtuale
    #In questa cartella ci sono le pagine che viaggeranno sul canale criptato
    DocumentRoot /var/www
    SSLEngine On
    SSLCertificateFile /etc/apache2/ssl/apache.pem
    </VirtualHost>

Riavviare apache2 eseguendo da shell il comando

/etc/init.d/apache2 restart

Supporto PHP

Prima di procedere è necessario abilitare il componente main dei repository ufficiali.

Installare i seguenti pacchetti:

  • libapache2-mod-php5

  • php5-cli

  • php5-common

  • php5-cgi

Caricare i moduli con i comandi da shell:

sudo ln -s /etc/apache2/mods-available/php.conf /etc/apache2/mods-enabled/php.conf
sudo ln -s /etc/apache2/mods-available/php.load /etc/apache2/mods-enabled/php.load

Riavviare apache digitando in una finestra di terminale:

sudo /etc/init.d/apache2 restart

Controllo dei file di log

Tutti i file di log si trovano nella directory /var/log/apache2 e sono:

  • access.log

  • error.log

Forniscono utili informazioni per il debugging dei problemi che si possono presentare.


CategoryHomepage