27.7. Apache HTTP Server
Indietro | Capitolo 27. Server di rete | Avanti

## 27.7. Apache HTTP Server

Grazie al contributo di Murray Stokely.

### 27.7.1. Uno sguardo d'insieme

FreeBSD è usato per far girare alcuni dei siti web più trafficati al mondo. La maggioranza dei web server su Internet usano attualmene Apache HTTP Server. Il pacchetto software di Apache dovrebbe essere incluso nel tuo media di installazione di FreeBSD. Se non hai installato Apache quando hai installato FreeBSD per la prima volta, lo puoi installare dal port `www/apache13` o `www/apache22`.

Una volta che Apache è stato installato con successo, deve essere configurato.

### Nota:

Questa sezione copre la versione 1.3.X di Apache HTTP Server dato che è la versione più usata per FreeBSD. Apache 2.X introduce molte nuove tecnologie ma queste non saranno discusse in questa sede. Per maggiori informazioni su Apache 2.X, per favore consulta httpd://httpd.apache.org/.

### 27.7.2. Configurazione

Il principale file di configurazione di Apache HTTP Server è installato in `/usr/local/etc/apache/httpd.conf` su FreeBSD. Questo file è un tipico file di testo di configurazione di UNIX® con linee di commento che cominciano col carattere `#`. Una descrizione comprensiva di tutte le possibili opzioni di configurazione è al di fuori dello scopo di questo libro, così solo le direttive usate più di frequente saranno descritte di seguito.

`ServerRoot "/usr/local"`

  Questo specifica la gerachia di directory di default per l'installazione di Apache. I binari sono conservati nelle sottodirectory `bin` e `sbin` sotto la server root, ed i file di configurazione sono conservati sotto `etc/apache`.

`ServerAdmin you@your.address`

  L'indirizzo email al quale i problemi riguardanti il server dovrebbero essere inviati. Questo indirizzo appare su alcune pagine generate dal server, come alcuni documenti di errore.

`ServerName www.example.com`

  `ServerName` ti permette di impostare un nome host che viene inviato ai client per il tuo server, se questo è differente da quello per il quale l'host è configurato (ad esempio usi `www` invece del vero nome host).

`DocumentRoot "/usr/local/www/data"`

  `DocumentRoot`: La directory dalla quale servirai documenti. Di default tutte le richieste sono girate a questa directory, ma link simbolici ed alias possono essere usati per puntare ad altre locazioni.

È sempre una buona idea fare copie di backup del tuo file di configurazione di Apache prima di modificarlo. Una volta che sei soddisfatto dalla tua configurazione iniziale sei pronto per iniziare ad eseguire Apache.

### 27.7.3. Eseguire Apache

Apache non viene eseguito dal super server inetd a differenza di molti altri server di rete. È configurato per girare standalone per migliori performance per gestire le richieste HTTP in entrata dai client web browser. Un wrapper shell script è incluso per rendere il più semplice possibile lo start, lo stop ed il restart del server. Per avviare Apache per la prima volta, esegui:

`#` `/usr/local/sbin/apachectl start`

Puoi fermare il server in ogni istante digitando:

`#` `/usr/local/sbin/apachectl stop`

Dopo aver fatto modifiche al file di configurazione per una qualsiasi ragione, avrai bisogno di riavviare il server:

`#` `/usr/local/sbin/apachectl restart`

Per riavviare Apache senza mandare in abort le connessioni correnti, esegui.

`#` `/usr/local/sbin/apachectl graceful`

Informazioni addizionali sono disponibili sulla pagina di manuale di apachectl(8).

Per eseguire Apache all'avvio del sistema, aggiungi la seguente linea ad `/etc/rc.conf`:

apache_enable="YES"

o per Apache 2.2:

apache22_enable="YES"

Se volessi fornire opzioni addizionali di linea di comando al programma Apache `httpd` avviato al boot di sistema, puoi specificarle con una linea addizionale in `rc.conf`:

apache_flags=""

Ora che il web server è in esecuzione puoi navigare il tuo sito web puntando il tuo web browser ad `http://localhost/`. La pagina di default che viene mostrata è `/usr/local/www/data/index.html`.

### 27.7.4. Virtual Hosting

Apache supporta due tipi diversi di Virtual Hosting. Il primo metodo è Virtual Hosting basato sul nome. Il Virtual Hosting basato sul nome usa gli header HTTP/1.1 per scoprire l'hostname. Questo permette a molti domini diversi di condividere lo stesso indirizzo IP.

Per fare sì che Apache usi Virtual Hosting basato sui nomi aggiungi una entry come la seguente al tuo file `httpd.conf`:

NameVirtualHost *

Se il tuo webserver era nominato `www.domain.tld` e tu avessi voluto installare un dominio virtuale per `www.someotherdomain.tld` avresti dovuto aggiungere le seguenti entry a `httpd.conf`:

<VirtualHost *> ServerName www.domain.tld DocumentRoot /www/domain.tld </VirtualHost> <VirtualHost *> ServerName www.someotherdomain.tld DocumentRoot /www/someotherdomain.tld </VirtualHost>

Sostituisci gli indirizzi con gli indirizzi che vuoi usare ed i percorsi dei documenti con quelli che usi.

Per maggiori informazioni sull'impostazione dei virtual host, per favore consulta la documentazione ufficiale a .

### 27.7.5. Moduli Apache

Ci sono molti diversi moduli Apache disponibili per aggiungere funzionalità al server base. La Collezione Port di FreeBSD fornisce un modo semplice di installare Apache assieme ad alcuni dei più popolari moduli aggiuntivi.

#### 27.7.5.1. mod_ssl

Il modulo mod_ssl usa la libreria OpenSSL per fornire una forte crittografia attraverso i protocolli Secure Sockets Layer (SSL v2/v3) e Transport Layer Security (TLS v1). Questo modulo fornisce tutto il necessario per richiedere un certificato firmato da un'autorità fidata che emette certificati, cosicchè puoi eseguire un web server sicuro su FreeBSD.

Se non hai ancora installato Apache, una versione di Apache 1.3.X che includa mod_ssl può essere installata con il port `www/apache13-modssl`. Il supporto ad SSL è anche disponibile per Apache 2.X nel port `www/apache22`, dove viene abilitato di default.

#### 27.7.5.2. Siti web dinamici con Perl & PHP

Negli ultimi anni, molte aziende si sono rivolte a Internet per migliorare i loro ricavi e aumentare la loro esposizione. Questo ha anche aumentato il bisogno di contenuti interattivi web. Mentre alcune società come Microsoft® hanno introdotto soluzioni nei loro prodotti proprietari, la comunità open source ha risposto all'appello. Due opzioni per contenuti web dinamici includono mod_perl & mod_php.

##### 27.7.5.2.1. mod_perl

Il progetto di integrazione Apache/Perl mette assieme la grande potenza del linguaggio di programmazione Perl e l'Apache HTTP Server. Con il modulo mod_perl è possibile scrivere moduli Apache interamente in Perl. In aggiunta l'interprete persistente integrato nel server evita l'overhead di avviare un interprete esterno e la penalizzazione del tempo di caricamento Perl.

mod_perl è disponibile in alcuni modi diversi. Per usare mod_perl ricorda che mod_perl 1.0 funziona solo con Apache 1.3 e mod_perl 2.0 funziona solo con Apache 2.X. mod_perl 1.0 è disponibile in `www/mod_perl` ed una versione compilata staticamente è disponibile in `www/apache13-modperl`. mod_perl 2.0 è disponibile in `www/mod_perl2`.

##### 27.7.5.2.2. mod_php

Scritto da Tom Rhodes.

PHP, anche noto come «Hypertext Prepocessor» è un linguaggio di scripting di scopo generale che è particolarmente adatto per lo sviluppo Web. Adatto ad essere usato all'interno dell'HTML, la sua sintassi deriva dal C, Java™, e Perl con l'intenzione di permettere agli sviluppatori web di scrivere pagine web generate dinamicamente in modo veloce.

Per integrare supporto a PHP5 per il web server Apache, inizia con l'installare il port `lang/php5`.

Se il port `lang/php5` viene installato per la prima volta, le `OPTIONS` disponibili saranno mostrate automaticamente. Se non viene mostrato un menu, ad esempio perché il port `lang/php5` è stato installato qualche volta in passato, è sempre possibile rivedere il menu a dialogo con le opzioni eseguendo:

`#` `make config`

nella directory dei port.

Nel menu a dialogo delle opzioni, flagga l'opzione `APACHE` per compilare mod_php5 come modulo caricabile per il web server Apache.

### Nota:

Molti siti stanno ancora usando PHP4 per varie ragioni (ad esempio questioni di compatibilità o applicativi web già costruiti). Se si necessita del modulo mod_php4 invece che di mod_php5, siete pregati di usare il port `lang/php4`. Il port `lang/php4` supporta molte delle configurazioni e delle opzioni di build-time del port `lang/php5`.

Questo installerà e configurerà i moduli richiesti per supportare applicazioni web dinamiche PHP. Controlla che le seguenti linee siano state aggiunte al file `/usr/local/etc/apache/httpd.conf`:

LoadModule php5_module libexec/apache/libphp5.so AddModule mod_php5.c <IfModule mod_php5.c> DirectoryIndex index.php index.html </IfModule> <IfModule mod_php5.c> AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps </IfModule>

Una volta completato, una semplice chiamata al comando `apachectl` per un tranquillo restart è richiesto per caricare il modulo PHP:

`#` `apachectl graceful`

Per upgrade futuri di PHP, il comando `make config` non sarà richiesto; le `OPTIONS` selezionate sono salvate automaticamente dal sistema dei Ports di FreeBSD.

Il supporto a PHP in FreeBSD è estremamente modulare così l'installazione base è molto limitata. È molto facile aggiungere supporto usando il port `lang/php5-extensions`. Questo port fornisce un interfaccia a menu per l'installazione di estensioni a PHP. Alternativamente le singole estensioni possono essere installate usando il port appropriato.

Ad esempio, per aggiungere supporto al database MySQL a PHP5, semplicemente installa `databases/php5-mysql`.

Dopo aver installato un'estensione, il server Apache deve essere riavviato per caricare i cambiamenti della nuova configurazione:

`#` `apachectl graceful`

Indietro | Risali | Avanti
27.6. Domain Name System (DNS) | Partenza | 27.8. File Transfer Protocol (FTP)

Questo, ed altri documenti, possono essere scaricati da ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/

Per domande su FreeBSD, leggi la documentazione prima di contattare <questions@FreeBSD.org>.
Per domande su questa documentazione, invia una e-mail a <doc@FreeBSD.org>.