Inserisci Infobox

Principi di configurazione di Apache

Prima analisi di httpd.conf, settaggio dei parametri base. Tool grafici per la configurazione.

Configurazione di Apache: Introduzione
Autore: al - Ultimo Aggiornamento: 2005-06-09 12:45:11 - Data di creazione: 2005-06-08 19:28:30
Tipo Infobox: SLIDE - Skill: 2- JUNIOR

Il file di configurazione di Apache è httpd.conf.
A seconda delle distribuzioni questo file può essere in posizioni diverse e includere altri file di configurazione tramite la direttiva Include.
Il file di configurazione prevede:
Direttive - Tipicamente in forma parametro valore. Possono essere globali, relative a tutto il sistema, o locali limitate ad un ambito definito da un container.
Container - Definisce un ambito (directory dove stanno i documenti, file, location nell'url ...) per il quale si applicano direttive specifiche.

La maggior parte delle configurazioni sono valide sia per Apache 1.3 che per Apache 2.
Alcune direttive fondamentali:
ServerRoot - La directory di base del sistema Apache rispetto alla quale si applicano tutti i path relativi usati in configurazione
DocumentRoot - La directory che contiene i documenti (pagine html, immagini ecc) da esportare via web.
ServerName - Il nome del server
Listen - Indica su quale indirizzo e porta mettere il server in ascolto (Su Apache 1.3 BindAddress e Port)
LoadModule - Carica il modulo indicato (Su Apache 1.3 è necessario, per ogni modulo, specificare anche AddModule).

Introduzione alla configurazione di Apache
Autore: al - Ultimo Aggiornamento: 2003-02-07 19:08:04 - Data di creazione: 2003-02-07 19:08:04
Tipo Infobox: DESCRIPTION - Skill: 2- JUNIOR

Tutta la configurazione di Apache può essere fatta operando con un editor di testi sul file httpd.conf che di trova in /usr/local/apache/conf/ oppure in /etc/httpd/conf/ o dove è stato specificato in fase di compilazione (provare un locate httpd.conf per trovarlo).
Alternativamente o in parallelo alla modifica manuale del file di configurazione si possono usare diversi strumenti di configurazione grafici, sia dedicati come Comanche o Apache Configuration di RedHat, che parte di più ampi strumenti grafici di configurazione del sistema come Linuxconf o Webmin.

Ogni riga nel file di configurazione di Apache può contenere o un # per indicare che segue un commento che non viene processato o una direttiva con cui definire le varie configurazioni.
Alcune direttive (Limit, LimitExcpet, Directory, DirectoryMatch, Files, FilesMatch, Location, LocationMatch, VirtualHost)  definiscono un container, individuano cioè una directory, un dato tipo di file o, genericamente, un insieme di file  per i quali si possono definire specifiche direttive.
Per esempio, per indicare che l'accesso a tutti i file nella directory /home/www/private è possibile solo da certi indirizzi si scrive:
<Directory /home/www/private> # Direttiva container Directory, con la quale si definisce una directory e tutto quello che vi è contenuto
order deny,allow # All'interno della directory definita si limita l'accesso secondo l'ordine indicato
deny from all # Viene negato l'accesso a tutti gli indirizzo
allow from 10.0.0 # Viene permesso l'accesso agli indirizzi della rete 10.0.0.0/24
</Directory> # Il container Directory viene chiuso, le direttive che seguono non si applicano più a questa directory


Le direttive si dividono in diverse categorie, a seconda di dove possono essere usate nel file di configurazione:
- Server-Level - Possono essere usate solo nella parte della configurazione che riguarda l'intero server, quindi non all'interno di container.
- Globali e locali - Possono essere usare sia a livello dell'intero server, definendo i comportamenti di default, che valgono per tutti i documenti, che all'interno di container, per gestire casi specifici e sostituire quanto definito al server-level.
- Solo locali - Possono essere usate solo all'interno di un container, in quanto non avrebbero senso nella configurazione generale.

Per impostare una configurazione di base servono alcune informazioni, che l'amministratore deve fornire:
- Nome del server (può essere il nome effettivo della macchina o un nome arbitrario), si definisce con la direttiva ServerName
- La porta a cui mettere in listening il web server. Per il protocollo http la porta di default è l'80, ma volendo se ne può definire una alternativa. Si può inoltre definire a quale IP locale appoggiarsi (nel caso si stia usando una macchina con più IP). La direttiva raccomandata è Listen. Nella versione 1.3 di Apache vengono usate anche le direttive BindAddress e Port che però sono deprecate.
- L'utente e il gruppo con cui gira il processo httpd. E' meglio che siano utenti comuni non privilegiati (di solito "nobody" o "apache"). Per definirli si usano le direttive User e Group
- La directory che contiene i file HTML che fanno parte del sito che si vuole rendere pubblico con Apache. Si definisce con la direttiva DocumentRoot. Notare che questa è diversa dalla direttiva ServerRoot che definisce la directory di base di Apache, partendo dalla quale il programma cerca file di configurazione, log ecc.
- Se si usa un Apache con supporto dei moduli è probabile che solo il modulo di core mod_so sia effettivamente incluso nel binario httpd, per cui per poter funzionare Apache richiede il caricamento, tramite file di configurazione, degli altri moduli. Con Apache 2.0 basta la direttiva LoadModule, con Apache 1.3 ci vuole ANCHE la direttiva AddModule.
- Non è obbligatorio ma è prassi comune indicare l'indirizzo e-mail dell'amministratore del sistema, che può venir visualizzato in pagine di errore o altri casi. Lo si imposta con la direttiva ServerAdmin.

Un esempio di un file di configurazione minimale, senza caricamento di moduli, è quindi:
ServerName pippo
Listen 80
User apache
Group apache
DocumentRoot /home/httpd/html

Analisi di httpd.conf e settaggio parametri base
Autore: Eberk - ( Revisione: al ) - Ultimo Aggiornamento: 2003-02-03 22:50:25 - Data di creazione: 2003-02-03 22:50:25
Tipo Infobox: DESCRIPTION - Skill: 2- JUNIOR

Il file httpd.conf è il file di configurazione principale di Apache. Ci sono veramente tante opzioni possibili da settare, ed è per questo che è importante fare spesso riferimento al manuale ufficiale, che offre una documentazione completa su Apache. Il seguente esempio di configurazione riporta una configurazione minima di Apache con commenti su ogni direttiva usata.

### Section 1: Global Environment
ServerType standalone
La direttiva ServerType specifica come Apache deve girare sul sistema. E' possibile farlo girare tramite il super daemon inetd (che invoca Apache quando riceve connessioni sulla porta 80) o come tramite server standalone, costantemente in esecuzione sul sistema. E' altamente raccomandabile questa seconda alternativa, per ridurre i tempi di latenza ed evitare i potenziali problemi che si possono avere invocando Apache da inetd.

ServerRoot "/etc/httpd"
Specifica la directory di base di Apache dove si trovano i file di configurazione e altri file importanti. Eventuali PATH di ulteriori directory, se non altrimenti specificato, sono relativi a questa directory.

PidFile /var/run/httpd.pid
Specifica dove viene scritto il PID di httpd quando si avvia. Questa opzione è richiesta solo quando Apache gira in standalone mode.

ResourceConfig /dev/null
Specifica la locazione del file srm.conf che Apache legge quando finisce di leggere il file di configurazione httpd.conf. Nelle versioni più recenti di Apache, viene tutto scritto in httpd.conf e non si usa più usare un file srm.conf separato. /dev/null, in questo caso indica che NON esiste un srm.conf separato.

AccessConfig /dev/null
L'opzione AccessConfig specifica la locazione del file access.conf, che Apache legge quando finisce di leggere il file di configurazione httpd.conf. Come sopra, impostando come argomento /dev/null non si specifica alcun file esterno per questa parte di configurazione (relativa ai permessi di accesso al web.

Timeout 300
Specifica il tempo di attesa massimo di Apache per le richieste (GET, POST, PUT). Su server a traffico normale si puo tranquillamente mantenere l'opzione di default, altrimenti può aver senso ridurla per liberare risorse più rapidamente.

KeepAlive On
L'opzione KeepAlive, se settata On, permette di usare, come da specifiche HTTP/1.1, la stessa connessione TCP per inviare più file. Per migliori performance è consigliato settarla On evitando che venga aperta una connessione TCP per ogni richiesta HTTP.

MaxKeepAliveRequests 100
Specifica il numero di richieste permesse per connessione (sempre che l'opzione KeepAlive venga settata On). Se questa opzione è settata a 0, una connessione rimane attiva e file continuano ad essere scambiati fino a quando non va in timeout.

KeepAliveTimeout 15
Specifica quanto tempo, in secondi, Apache deve attendere per una successiva richiesta prima di chiudere la connessione. Un valore di 15 secondi è molto buono (parlando sempre di performance di Apache).

MinSpareServers 16
Specifica il numero minimo di processi figli in attesa di ricevere una richiesta. Apache, fa uno spawn di nuovi figli, mano a mano che quelli esistenti vengono occupati da nuove richieste. Dal momento che l'operazione di spawning non è rapidissima, questa opzione è molto importante per quanto riquarda le performance di Apache. Per un server che deve gestire un numero medio alto di accessi, 16 è il valore piu usato.

MaxSpareServers 64
Specifica il numero massimo di processi figli in attesa di ricevere una richiesta, un valore alto permette ad Apache di rispondere più rapidamente a picchi di traffico, ma occupa maggiormente le risorse del sistema. Per un server che deve gestire un numero medio alto di accessi, 64 è il valore piu usato.

StartServers 16
Specifica il numero di processi figli che devono essere creati da Apache in start-up. Anche questo è un parametro importante per quanto riguarda le performance di Apache. Per un server che deve gestire un numero medio alto di accessi ha senso aumentare questo valore.

MaxClients 256
Specifica il numero massimo di richieste simultanee che Apache può supportare. Anche questo parametro è fondamentale per il discorso performance. Considerare che nella compilazione di default di Apache, questo parametro non può superare 256.

MaxRequestsPerChild 100000
Specifica il numero di richieste che un singolo processo figlio può gestire. Con 0 si indica un numero infinito, ma per evitare un potenziale degradamento del sistema è utile mettere un numero alto ma finito.

### Section 2: 'Main' server configuration
Port 80
Indica la porta TCP su cui Apache deve ascolare. 80 è la porta di default per un server http. Questa direttiva, insieme a BindAddress, che indica l'IP su cui ascoltare, è destinata ad essere soppiantata dalla più flessibile Listen

Listen *:80
Indica di ascoltare su tutti gli IP locali sulla porta 80. Si possono specificare anche singoli indirizzi e più righe con diversi IP e porte in Listen  

User nobody
Lo user con cui Apache gira. E' importante creare un nuovo utente con i minimi permessi usati allo scopo di far girare il servizio. Notare che Apache avrà, nell'accesso al file system locale, i privilegi dell'utente qui specificato.

Group nobody
Il gruppo con cui Apache gira.

DirectoryIndex index.htm index.html index.php index.php3 default.html index.cgi
Specifica i nomi di file che Apache considera come home page. In altre parole, se viene fatta una GET che non specifica il nome di un file specifico ma solo la directory (quello che succede abitualmente, quando su un browser si indica un indirizzo tipo http://www.yahoo.com) Apache cerca, nell'ordine indicato, i file sopra citati e se non ne trova alcuni visualizza, se questo è permesso nel resto della configurazione, l'elenco dei file contenuti della directory

Include conf/virtual-domains.conf
Specifica la posizione di altri files che si possono includere insieme al file di configurazione httpd.conf. In questo caso è stato incluso il file virtual-domains.conf, contenuto nella directory /etc/httpd/conf.

HostnameLookups Off
Questa opzione, se settata off, specifica di disabilitare il DNS reverse lookup degli IP dei client in fase di logging. Per evitare tempi di latenza eccessivi, è consigliabile lasciare Off la risoluzione degli IP, che potrà essere fatta successivamente e autonomamente da strumenti di analisi dei log.

ServerAdmin [email protected]
L'indirizzo email di chi amministra il server. Può essere indicato in alcune pagine di errore

ServerName www.domain.com
Il nome del server web

DocumentRoot "/home/httpd/folder"
La directory dove sono contenuti i file html che costituiscono il sito offerto dal server

<Directory "/home/httpd/folder">
      Options None
      AllowOverride None
      Order allow,deny
      Allow from all
      </Directory>
Si definisce un container Directory, al cui interno si impostano delle direttive limitate agli oggetti ivi contenuti

      <Files .pl>
      Options None
      AllowOverride None
      Order deny,allow
      Deny from all
      </Files>
Altro esempio di container. Qui si impedisce la lettura di tutti i file .pl

      <IfModule mod_mime.c>
      TypesConfig /etc/httpd/conf/mime.types
      </IfModule>
Indica di caricare il file specificato con l'elenco dei MIME file type, se è presente il modulo mod_mime, in grado di gestirli.

DefaultType text/plain
Indica con quale MIME type il server web fornisce i suoi file

ErrorLog /var/log/httpd/error_log
LogLevel warn
La posizione del file di log per quanto riguarda gli errori, e il livello di debugging

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog /var/log/httpd/access_log combined
Si definisce il formato di un file di log (per quanto riguarda le richieste HTTP), lo si chiama "combined" e, con la direttiva CustomLog si definisce dove scriverlo.

      <IfModule mod_alias.c>
      ScriptAlias /cgi-bin/  "/home/httpd/cgi-bin/"
      <Directory "/home/httpd/cgi-bin">
      AllowOverride None
      Options None
      Order allow,deny
      Allow from all
      </Directory>
      </IfModule>
Se è presente il modulo mod_alias si definisce un alias per una directory che contiene script CGI e si impostano direttive specifiche per quella directory

      ErrorDocument 500 "The server made a boo boo.
      ErrorDocument 404 http://192.168.1.1/error.htm
      ErrorDocument 403 "Access Forbidden -- Go away.
Definisce come reagire in caso di errore, a seconda del codice di errore. Si può visualizzare una scritta, aprire un file html locale o puntare ad un URL remoto

      <IfModule mod_setenvif.c>
      BrowserMatch "Mozilla/2" nokeepalive
      BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
      BrowserMatch "RealPlayer 4\.0" force-response-1.0
      BrowserMatch "Java/1\.0" force-response-1.0
      BrowserMatch "JDK/1\.0" force-response-1.0
      </IfModule>
Se è presente il modulo mod_setenvif, si impostano specifici header di risposta per richieste effettuati da specifici Browser

Configurare Apache con Webmin
Autore: Eberk - Ultimo Aggiornamento: 2003-02-03 19:45:41 - Data di creazione: 2003-02-03 19:45:41
Tipo Infobox: DESCRIPTION - Skill: 2- JUNIOR

Webmin è un potente strumento di configurazione web-based che permette, attraverso un interfaccia web user-friendly ed una struttura a moduli espandibile, di poter amministrare praticamente l'intero sistema, quindi anche la configurazione di Apache.

Permette la configurazione del file httpd.conf, dando la possibilità di settare tutti i parametri presenti nel file di configurazione di Apache (virtual hosts, indirizzi, max request, file di log ecc...).
Anche a livello didattico può essere molto utile, in quanto l'interfaccia grafica è molto ben fatta ed assai intuitiva, permettendo perciò anche ai meno esperti di poter configurare Apache senza incappare in grossi dilemmi.

Compilare Apache 2.x + Php 4.x + Mysql
Autore: texilee - ( Revisione: al ) - Ultimo Aggiornamento: 2004-05-15 14:49:05 - Data di creazione: 2004-05-15 14:49:05
Tipo Infobox: DESCRIPTION - Skill: 3- INTERMEDIATE

Questo articolo cerca di spiegare come compilare e installare Apache 2 + Php + Mysql su sistemi Linux partendo dai sorgenti.

Questa configurazione (Apache2 + PHP) è ancora in fase sperimentale quindi potrà subire modifiche nel corso del tempo.
Le vie conosciute fino alla versione 1.3.xx di Apache sono due:
-shared module
-static module
Utilizzeremo la prima strada: php viene caricato come modulo dal web server e non direttamente integrato in Apache. Sicuramente il sistema sarà leggermente più lento nel processare codice php ma la grande comodità rimarrà la possibilità di aggiornare php senza dover necessariamente ricompilare Apache.

Requisiti
- Una linux box
- Sorgenti di PHP disponibili presso http://www.php.net/
- Sorgenti di Apache 2 src disponibili presso http://www.apache.org
- Compliatore Ansi C (Gnu C) e altri tool necessari come make, bison ecc. Di solito sono inclusi nelle varie distribuzioni. Potete verificare la presenza lanciando da shell make o gcc. Se nn verrà trovato alcun file visitate http://www.gnu.org.
- Un programma come TAR per estrarre il contenuto dei src ;)

Le versioni utilizzate sono al momento (maggio 2004):
- httpd-2.0.48.tar.gz
- php-4.3.6.tar.gz
- mysql-standard-4.0.18-pc-linux-i686.tar.gz

Compilare e installare mysql
E' sicuramente la parte più semplice che affronteremo: estrarre il pacchetto e spostarlo su /usr/local dopodichè seguire i semplici comandi che si possono trovare sul file INSTALL (da distro a distro può variare qualcosa)
# groupadd mysql
# useradd -g mysql mysql
# cd /usr/local
# gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
# ln -s full-path-to-mysql-VERSION-OS mysql
# cd mysql
# scripts/mysql_install_db
# chown -R root
# chown -R mysql data
# chgrp -R mysql
# bin/mysqld_safe --user=mysql &

Se non si è ricevuto alcun messaggio di errore verificare che il servizio sia attivo con netstat -nat controllando che la porta 3306 tcp sia in ascolto.

Compilare Apache
Come accennato, si sceglie di compilare php come modulo dinamico (o condiviso = shared).
Il codice oggetto php non verrà incluso nel binario httpd e si potrà, modificando una riga, abilitarlo o meno nella configurazione finale.
# cd /usr/src
# tar zxvf httpd-2.0.48.tar.gz
# cd /usr/src/httpd-2.0.48

Ora si può configurare Apache per la compilazione. Quasi ogni software che necessita una compilazione contiene uno script "configure" che controlla la presenza dei compilatori necessari per l'installazione, le librerie, permette di passare dei parametri quali la dir di destinazione, se abilitare o meno determinate opzioni, ecc.
# ./configure --help offrirà la lista completa delle opzioni che si possono specificare, normalmente iniziano con "--with-***" o "--enable-***"
# ./configure --prefix=/www --enable-so
La prima opzione specifica la directory di destinazione nella quale verrà installato il web server, se omessa la dir di default è /usr/local/apache2.
Quando una nuova versione di php o apache viene rilasciata basterà rinominare /www in /www_old e installare la nuova versione nuovamente su /www. Se l'installazione non presenta problemi basterà copiare i file di configurazione dalla dir /www_old alla solita /www.
Altro motivo è la possibilità di disinstallare completamente php e Apache con un semplice

#rm -rf /www
La seconda opzione --enable-so abilita il modulo so, permettendo ad Apache di caricare i moduli dinamici. Si abilita questa opzione poichè php verrà compilato come modulo dinamico.
Ora si può compilare con il comando make. Make legge il contenuto del file Makefile (target) ed esegue le istruzioni in esso contenute. Dopodichè tiene traccia delle modifiche apportate e delle dipendenze fra i vari file, ricompilando il codice soltanto quanto necessario. Risulta utilissimo in fase di sviluppo e testing.
# make
# make install
Per avviare il server:
# /www/bin/apachectl start
Se non ci sono errori è possibile collegarsi col browser e visualizzare la pagina di documentazione di default:
# lynx http://localhost
Per stoppare il server web:
# /www/bin/apachectl stop

Installazione php
# cd /usr/src
# tar -zxvf php-4.3.6.tar.gz
# cd php-4.3.6
Anche per php le opzioni che si possono utilizzare sono molte: permettono di abilitare l'utilizzo di specifici database, di particolari estensioni, ecc. Per un elenco:
# ./configure --help
Le estensioni non sono tutte integrate nel core php ma vanno abilitate a mano.
Ad esempio per la creazione di immagini si può compilare php con l'opzione --with-gd, per funzionare le librerie gd devono essere installate. Se i parametri inseriti il sistema risponderà con un messaggio di errore. Soprattuto le prime volte non è consigliabile utilizzare estensioni non indispensabili.
Per compilare php come modulo condiviso si deve fornire il percorso dell'utility apxs, contenuta su /www/bin:
# ./configure --prefix=/www/php --with-apxs2=/www/bin/apxs --with-config-file-path=/www/php --with-mysql
La prima opzione specifica la dir di destinazione di php, se omessa quella di default è /usr/local, la seconda opzione --with-apxs2 specifica che vogliamo installare php come modulo condiviso di apache, la terza opzione --with-config-file-path specifica che php dovrà andare a recuperare il file php.ini nella dir /www/php.
Il file php.ini contiene numerosi parametri relativi al funzionamemto di php.
La quarta opzione --with-mysql abilita il supporto all'accesso a database mysql, se la dir di mysql non è /usr/local/mysql potete inserire il percorso dopo l'opzione --with-mysql=/dir/mysql
A questo punto è possubili compilare e installare php:
# make
# make install
Quest'ultimo comando installa nella dir /www/modules il modulo php che di dovrà richiamare da Apache e inserire nel file di configurazione (/www/conf/httpd.conf) con questa linea:
LoadModule php4_module modules/libphp4.so
E' inoltre necessario inserire un'altra linea nel file di configurazione in modo che Apache, ogni volta che viene richiesta una pagina con suffisso php, la processi con il modulo php prima di inviarla al client:
AddType application/x-httpd-php .php
E' infine necessario creare il file di configurazione php.ini che può essere copiato dalla dir dei sorgenti:
# cp /usr/src/php-4.3.6/php.ini-dist /www/php/php.ini.
A questo punto si può riavviare Apache per lanciarlo con il supporto PHP, compilato a sua volta per usare come database
di backend MySQL.
Per testare se tutto funziona correttamente e verificare le opzioni con cui php è stato compilato, creare un file d'esempio (info.php) con questo contenuto:
<? phpinfo(); ?>
inserirlo nella document root di Apache (/www/htdocs/html) e provare a vederlo con un browser puntando a http://localhost/info.php

Apache2 Vs Apache1.3
Autore: neo - ( Revisione: al ) - Ultimo Aggiornamento: 2003-06-23 21:01:48 - Data di creazione: 2003-06-23 21:01:48
Tipo Infobox: DESCRIPTION - Skill: 2- JUNIOR

Attualmente il gruppo di sviluppo di Apache mantiene due tree differenti del progetto HTTP server:
- Apache1.3:  La release più vecchia, anagraficamente e concezionalmente parlando ma inevitabilmente più testata rispetto alla nuova release.
- Apache2.0: Il nuovo tree comprendente nuove features e nuova logica nella gestione delle richieste http e della configurazione del servizio.

Di seguito sono riportate le principali features della nuova release:

Configurazione
Sono state apportate alcune modifiche a livello di file di configurazione e delle direttive da utilizzare per semplificare parti come il caricamento dei moduli e il binding di indirizzi ip e porte.
Inoltre vengono utilizzate di default direttive come ServerTokens per modificare i vari header contenenti informazioni sul server e la direttiva Include per gestire il servizio con più file di configurazione.
E' garantita la compatibilità della vecchia versione, di cui mantiene gran parte delle direttive.

Miglior supporto per piattorme non Unix e supporto unicode nativo di WIN NT
Molta attenzione è stata destinata nel migliorare le stabilità e le performance in sistemi non unix come BeOS, OS/2 e Windows ove si è utilizzato anche utf-8 per l'encoding per i file name. Tale soluzione funziona solo con sistemi basati su tecnologia NT (Win NT, 2000 e XP) poichè gli altri sistemi operativi come win 98, ME utilizzano le codepage locali.

RegEx
Apache 2 supporta le regular expression in formato perl5 grazie al nuovo motore PCRE conforme allo standard POSIX.2

Gestione del Multilanguage
Attulamente si ha la possibilità di gestire risorse web multilanguage tramite le preferenze dell'utente (ovvero tramite  i vari header inviati dal client contenente i settaggi del browser) oltre che per la scelta del set dei caratteri.
Questa localizzazione del contenuto è stata introdotto anche per la gestione degli errori.

Nuovi Moduli
Alcuni moduli come il modulo proxy sono stati riscritti ed altri aggiunti nel pool di moduli che vengono installati di default come mod_dav per gestire il protocollo webdav.
Inoltre la nuova API permette di unire le funzionalità di più moduli e quidi di utilizzare moduli come se fossero dei filtri per la gestione delle risorse web.

Thread
La struttura di Apache 1.3 prevedeva che le rischieste http venissero gestite da un pool di processi che aumentavano o dimuniavano a seconda del carico.
Con Apache2 le richieste http possono essere gestire dai thread, assimilabili come dei canali all'interno di un  processo, questo in termini di performance e gestione delle richieste risulta essere un passo avanti.
La gestione dei fork dei processi e dei thread viene gestito dai moduli MPM (Multi Process Modules).

MPM
Ecco i moduli MPM  base disponibili per linux e sono attivabili con la compilazione dei sorgenti:

- Prefork
Metodo utilizzato anche nella vecchia release (Apache1.3) di fatto i thread sono disabilitati.
Quando apache viene attivato un pool di processi (definiti tramite la direttiva StartServer) vengono inizializzati e tale pool di processi crescerà a seconda del carico che dovranno gestire, il numero minimo e massimo dei processi vengono settati tramite la direttive: MinSpareServers e MaxSpareServers.

- Worker
Soluzione ibrida implementa sia la funzionalità dei multiprocessi che dei multithread.
Ovvero viene generato un pool di processi di cui ogni singolo processo a sua volta genera un numero fisso di thread,  l'adeguamento al carico avviene con la creazione di nuovi processi.

- Perchild
All'avvio del servizio vengono generati un numero fisso  di processi i quali generano un numero variabili di thread a seconda del carico. Il vantaggio nell'adottare questa soluzione, rispetto a quella denominata Worker, risiede nel fatto che ogni processo figlio gli si può assegnare un UID e privilegi diversi e vincolare tale processo ad un singolo virtualhost.
Ipoteticamente parlando sarà possibile creare e dedicare dei processi a un virtualhost specifico, con owner e permessi sulle directory differenti.

La soluzione più idonea per un server pubblico che deve offrire un servizio h24 rimane ancora la prefork, per motivi di affidabilità e nel caso in cui si voglia installare nuovi moduli MPM occorrerà patchare e ricompilare i sorgenti.
Inoltre bisogna tenere in considerazione della possibilità che dei moduli sviluppati da terze parti (ovvero da gruppi esterni ad Apache) possono essere incongruenti con la nuova struttura API di apache 2.0 .

Gestione in aula delle esercitazioni con doppia configurazione
Autore: al - Ultimo Aggiornamento: 2003-02-04 11:25:19 - Data di creazione: 2003-02-04 11:25:19
Tipo Infobox: TEACHER'S NOTES - Skill: 1- NOVICE

Con questo TOPIC si entra nel vivo delle attività pratiche del corso.
Si è deciso di scegliere un approccio "da zero" per dare ai partecipanti l'esatta percezione di cosa serve in un file di configurazione di Apache.
Questo approccio però, rispetto ad uno basato sul file di configurazione di default, è più insidioso e difficile, sia per la necessità di far convivere due diversi ambienti Apache (quello di default, gestito con WebMin e quello "da zero" costruito mano a mano) sia per la necessità di dover aggiungere una serie di direttive base prima di rendere funzionale di file di conf da zero.

E' importante che fin dall'inizio il docente faccia usare ai partecipanti delle tecniche di gestione delle configurazione e di test dei risultati che permettano una interazione rapida e veloci passaggi fra configurazione del file, gestione del servizio e visualizzazione delle attività fatte.
Si consiglia di far aprire ai partecipanti almeno le seguenti finestre:
- shell di root principale con cui editare il file di configurazione e avviare/ristartare il servizio
- una o più shell di root con cui lasciare visualizzato un tail -f dell'error log ed eventuali altri log
- una shell per dare comandi di diagnostica come netstat, lsof, ps -adef (può essere anche la shell principale)
- browser (eventualmente in un altro workspace) per visualizzare cosa si vede sul proprio web server.

Abituare i partecipanti ad usare i tasti FRECCIA SU e FRECCIA GIU' per richiamare la history di comandi già inseriti e usare le diverse finestre in modo funzionale e rapido.

Questo approccio oltre a rendere più rapide le fasi pratiche è fondamentale come "modus operandi" di un sistemista, per cui le sue finalità vanno oltre la semplice configurazione di Apache: se un sistemista si abitua a gestire diverse finestre e shell in diversi modi (finestra di "comando", finestra con i log in continua visualizzazione, finestra di monitoraggio ecc.) la sua attività tenderà ad essere molto più efficente.

Configurare Apache con Comanche
Autore: Eberk - Ultimo Aggiornamento: 2003-02-03 19:41:47 - Data di creazione: 2003-02-03 19:41:47
Tipo Infobox: DESCRIPTION - Skill: 2- JUNIOR

Comanche è un tool grafico open-source per la configurazione di Apache.

E' multi piattaforma, ossia gira su molti dei sistemi operativi Unix-based (compreso Linux) e anche su Windows. Permette tramite interfaccia grafica la configurazione del file httpd.conf, dando la possibilità di settare tutti i parametri presenti nel file di configurazione di Apache. A differenza del tool di Red Hat, Comanche permette di editare manualmente il file httpd.conf senza dare problemi (in automatico rileva le modifiche apportate e si aggiorna) e da la possibilità di aggiungere a piacimento moduli per Apache. Per l'installazione basta downloadare il .tar.gz, che contiene il binario e tutto quello che serve per farlo funzionare. Una volta lanciato bisogna giusto specificargli dove può trovare i files di Apache. Altra cosa potenzialmente utile è il supporto multilingue.

Configurare Apache con Linuxconf
Autore: Eberk - Ultimo Aggiornamento: 2003-02-03 19:47:12 - Data di creazione: 2003-02-03 19:47:12
Tipo Infobox: DESCRIPTION - Skill: 2- JUNIOR

Linuxconf è un tool che permette di amministrare il proprio sistema Linux in maniera abbastanza semplice ed intuitiva, e di conseguenza, poter configurare con facilità il web server Apache.

Per configurare Apache aprire linuxconf ed andare sotto Config => Networking => Server Tasks => Apache Web Server.
Si troveranno 3 opzioni disponibili:
Defaults: sotto questo menu ci sono 4 sotto categorie.
Administrator e-mail, che non è altro che la mail dell'amministratore del server, server name che è il nome del server, document root che è la cartella che contiene tutti i files che dovranno essere processati da Apache (praticamente le  pagine web), features che permetterà di settare altri parametri "minori" (possibilita' di leggere files .shtml ecc...).
Virtual Domains: Sotto questo menu è possibile configurare una delle features piu importanti di Apache, ossia configurare su la stessa macchina più domini virtuali, ognuno con il suo nome ed, eventualmente, IP.
Sub-directory specs: Da qui è possibile settare alcuni parametri limitatamente a determinate directory.

Apache configuration tool (Red Hat)
Autore: Eberk - ( Revisione: al ) - Ultimo Aggiornamento: 2003-02-03 19:39:47 - Data di creazione: 2003-02-03 19:39:47
Tipo Infobox: DESCRIPTION - Skill: 2- JUNIOR

Per la configurazione facile di Apache, Red Hat Linux ha un tool che permette tramite interfaccia grafica la configurazione del file /etc/httpd/conf/httpd.conf, dando la possibilita di settare parametri come virtual hosts, numero massimo di connessioni, filtri di logging ecc...

Per utilizzarlo serve l'ambiente di lavoro grafico X Windows ed i permessi di root. E' suddiviso in svariate sezioni:
Main: da qui è possibile inserire il nome del dominio, l'e-mail del webmaster, la porta dalla quale "ascoltare" e gli indirizzi accettati (disponibile l'opzione "listen to all adress").
Virtual hosts: da qui è possibile aggiungere virtual host, ossia aggiungere piu domini, server per diversi IP e porte sulla stessa macchina.
Server: da qui è possibile settare i parametri del server web quali lock file, PID file, directory root, user e gruppo di Apache.
Performance tuning: da qui è possibile settare alcuni parametri come numero massimo di connessioni, tempo di timeout, richieste massime per connessioni ecc...
Altra sezione importante è Default settings, dalla quale è possibile settare homepage, pagine dove deviare gli utenti in funzione dell'errore (page not found, bad request ecc...),  file di log per processi, errori ecc...
Attenzione: se si usa questo tool per configurare Apache non editare manualmente il file /etc/httpd/conf/httpd.conf. Se si aggiungono nuovi moduli ad Apache, non saranno supportati da questo tool, e non si potrà più configurare Apache in questo modo.

Per avviare Apache configuration tool:
Su desktop GNOME main menu=>Programs=>System=>Apache configuration;
Su desktop KDE main menu=>System=>Apache configuration;
Oppure da shell lanciando il comando apacheconf.

Privacy Policy