(pubblicato il 15 ottobre 2006)
Server Apache 2.2.3
Un altro programma servente HTTPD presente sia in ambiente Linux che Windows è rappresentato da Apache HTTP Server (scaricabile dal sito www.apache.org)
Per installarlo occorre fare doppio click sull'icona:
e seguire i passaggi qui descritti
Cliccare sul pulsante "Next" sulla prima videata | Accettare i termini del contratto di licenza |
![]() |
![]() |
click ancora sul pulsante "Next" nella videata successiva | Digitare l'IP del proprio PC (ottenibile con il comando dos IPCONFIG) e una mail di fantasia |
![]() |
![]() |
Lasciare l'impostazione "Typical" e poi click su "Next" | Cliccare su "Next" senza modificare la cartella di installazione (ServerRoot) |
![]() |
![]() |
Click su "Install" | Attendere il completamento del processo di installazione |
![]() |
![]() |
Cliccare sul pulsante "Finish" per concludere l'installazione | Terminata l'installazione nella "barra delle applicazioni" appare l'icona del servizio Apache - Utilizzando il tasto destro (sopra l'icona!) richiamare il menu contestuale |
![]() |
![]() |
Utilizzando il menu "Open Services" apriamo l'elenco dei servizi attivi di windows - Si noti la riga relativa al processo "Apache2.2" | |
![]() |
|
Utilizzando il menu "Open Apache Monitor" si apre il pannello di gestione di Apache - I pulsanti "Stop", "Start" e "Restart" consentono di avviare/arrestare/riavviare il servizio HTTPD - Con il pulsante "Connect" posso gestire il servizio "Apache" installato su un altro computer | |
![]() |
Per verificare che tutto funzioni correttamente mi basta aprire una finestra di Internet Explorer e digitare l'indirizzo http://127.0.0.1 (oppure l'indirizzo IP del vostro computer). Deve apparire la seguente pagina:
Il server Apache ha come file di configurazione il file httpd.conf (generalmente in C:\Programmi\Apache Group\Apache2\conf) - Si tratta di un file di testo editabile mediante il blocco note. La modifica di questo file può essere effettuata utilizzando il menu Avvio, in corrispondenza del menu adoperato per avviare il programma Apache. (vedasi figura sottostante). Affinchè le modifiche apportate vengano recepite dal server httpd è necessario fare il restart del servizio (bottone apposito sull'Apache Monitor)
Tutte le righe che cominciano con # sono viste da Apache come dei commenti e pertanto verranno ignorate. All'interno di questo file si evidenziano le seguenti sezioni:
#
# ServerName
allows
you
to
set a host
name
which
is
sent
back to
clients
for
# your
server if
it's
different
than
the one the program would
get
(i.e.,
use
# "www" instead
of the host's
real
name).
#
# Note: You
cannot
just invent
host
names
and hope
they
work. The name
you
# define
here
must
be
a valid
DNS
name
for
your
host.
If
you
don't
understand
# this,
ask
your
network administrator.
# If
your
host
doesn't
have
a registered
DNS
name,
enter
its
IP address
here.
# You
will
have
to
access it
by
its
address
(e.g.,
http://123.45.67.89/)
# anyway,
and this
will
make
redirections
work in a sensible
way.
#
# 127.0.0.1 is
the TCP/IP
local
loop-back
address,
often
named
localhost.
Your
# machine
always
knows
itself
by
this
address.
If
you
use
Apache strictly
for
# local
testing
and development,
you
may
use
127.0.0.1 as
the server name.
#
ServerName
192.168.1.32
Per vedere l'indirizzo IP del server httpd basta richiamare la finestra dos (vedi figura sottostante)
e digitare ipconfig
#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses (0.0.0.0)
#
#Listen 12.34.56.78:80
Listen 8081
Se la porta definita, come si vede qui sopra, è la 8081 allora per accedere alla home page del mio server WEB devo digitare http://127.0.0.1:8081/ oppure http://192.168.1.32:8081/ (dove 192.168.1.32 rappresenta l'indirizzo IP del computer dove "gira" il server httpd)
La cartella contenente tutti i documenti erogati dal server httpd è definita mediante il parametro documentroot
Supponiamo di voler utilizzare come cartella dei documenti erogati la directory c:\SitoApache. Realizziamo quindi una struttura come indicato in figura:
Creiamo ciascun file html inserendo il seguente testo (oppure clicca qui per scaricare la cartella)
Affinchè Apache utilizzi la nostra cartella è necessario modificare il file di configurazione come segue (vedasi parti evidenziate in verde):
#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "C:/SitoApache"
#
# Each directory to which Apache has access can be configured with respect
# to which services and features are allowed and/or disabled in that
# directory (and its subdirectories).
#
# First, we configure the "default" to be a very restrictive set of
# features.
#
<Directory />
Options
FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Satisfy all
</Directory>
#
# Note that from this point forward you must specifically allow
# particular features to be enabled - so if something's not working as
# you might expect, make sure that you have specifically enabled it
# below.
#
#
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "C:/SitoApache">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride None
#
# Controls who can get stuff from this server.
#
Order allow,deny
Allow from all
</Directory>
Sempre nel file di configurazione è possibile inserire il nome del documento predefinito ovvero il documento html che verrà caricato quando, sulla barra degli indirizzi, digito il percorso di una cartella (presente sul mio web server) senza fornire il nome di uno specifico file. Ad esempio modificando httpd.conf in questo modo:
#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
DirectoryIndex
caio.html, index.html
</IfModule>
otteniamo che digitando http://192.168.1.32/ oppure http://192.168.1.32/caio.html venga visualizzata sempre la stessa pagina
![]() |
![]() |
Lo stesso vale per tutte le sottocartelle del nostro web server:
![]() |
![]() |
Quando nella cartella richiesta non esiste un file corrispondente ad uno dei nomi indicati nel parametro directoryindex allora sul browser verrà visualizzata questa videata:
La visualizzazione dell'elenco delle directory non è una
buona soluzione e va pertanto evitata. Basta apportare al file httpd.conf la
seguente modifica (ho eliminato la dicitura indexes)
#
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "C:/SitoApache">
Options
Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Dopo la modifica appare il seguente messaggio
E possibile, come in IIS, personalizzare anche i messaggi di errore
#
# Customizable error responses come in three flavors:
# 1) plain text 2) local redirects 3) external redirects
#
# Some examples:
#ErrorDocument 500 "The server made a boo boo."
#ErrorDocument 404 /missing.html
#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
#ErrorDocument 402 http:///subscription_info.html
#
ErrorDocument 404 "Utente! Sappi che hai
digitato una pagina inesistente!"
Con questa impostazione se digito l'indirizzo di una pagina inesistente ottengo:
Per vedere gli errori personalizzati impostati sul server è necessario disabilitare (figura sottostante) la gestione dei messaggi di errore di internet explorer.
Per proteggere una cartella (ad esempio c:\sitoApache\riservata) del vostro sito con utente/password occorre aggiungere le seguenti righe al file httpd.conf
<Directory "C:/SitoApache/riservata">
AuthType Basic
AuthName "Digita utente e password"
AuthUserFile c:/password.file
Require valid-user
</Directory>
Inoltre occorre creare un file contenente l'elenco degli utenti con le relative password. Il nome del file in linux è solitamente .htpasswd ma poichè windows non accetta nomi che iniziano con il punto dobbiamo rinominarlo. Nel nostro esempio abbiamo utilizzato il nome password.file. Per ragioni di sicurezza è buona norma salvare il file delle password in una cartella esterna alla documentroot
Per generare il file occorre utilizzare un'utility dos htpasswd (fornita con apache) presente nella cartella: C:\Programmi\Apache Software Foundation\Apache2.2\bin. Qui sotto è presentata la sequenza di comandi necessari per generare due utenti: sechi (password marco) e rossi (password anna).
Il file delle password va registrato nella stessa cartella indicata nel parametro AuthUserFile del file httpd.conf.
Se adesso proviamo ad accedere ad un file contenuto nella cartella protetta otteniamo:
Se Inseriamo un utente e una password non corretta verrà dato il messaggio di errore:
Si poteva ottenere il medesimo risultato utilizzando questo schema:
Modificare il file httpd.conf in corrispondenza dei punti evidenziati in verde (questa modifica è fatta dal nostro provider)
#
# This should be changed to whatever you set DocumentRoot to.
#
AccessFileName HtAccess
<Directory "C:/SitoApache">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride All
#
# Controls who can get stuff from this server.
#
Order allow,deny
Allow from all
</Directory>
Aggiungere nella cartella da proteggere il file
htaccess (è stato rinominato con l'istruzione
AccessFileName HtAccess
per vincoli sulle regole di naming dell'ambiente windows
altrimenti il suo nome di default è .htaccess) contenente queste
istruzioni
Questo metodo è usato quando non si ha accesso al file httpd.conf. E' necessario comunque che il nostro provider di spazio web abbia inserito nel file httpd.conf le due istruzioni: AllowOverride All e AccessFileName HtAccess