Installare Apache2 su di un sistema Unix-Like

Questo post e’ un tutorial che,partendo dal codice sorgente, descrive come installare Apache 2 su di un sistema Unix-Like come Linux, Open Solaris and FreeBSD.

Step 1 - Verificare i Requisiti

  • Spazio Disco - Per l’installazione di Apache sono necessari almeno 50MB. Una volta installato, pero’, Apache necessita’ solo di circa  10 MB di spazio sul file-system.
  • Compilatore ANSI-C - Sul sistema deve essere installato un compilatore ANSI-C compatibile, quello consigliato e’ GNU C Compiler (GCC).
  • Package e Librerie - Per  procedere con l’installazione di Apache nel sistema devono essere state gia’ installate una serie di package e librerie, le piu’ importanti sono le seguenti: make, autoconf, libtool, OpenSSL.
  • Requisiti Opzionali - Apache puo’ far uso anche di alcuni script scritti in Perl, ad esempio apxs. Questo dipende da come si decide di configurare Apache, per cui e’ possibile che sia necessario installare altri package per procedere con l’installazione di Apache stesso, come appunto l’interprete per il Perl.

Step 2 - Download & Estrazione del Codice Sorgente di Apache

Con pochi semplici comandi e’ possibile scaricare e decomprimere il codice sorgente di Apache. Di seguito sono mostrati i passi eseguiti su di un sistema Open Suse 11.1, in ogni caso si puo’ utilizzare un qualsiasi sistema Unix-Like con nessuna o pochissime differenze(ad esempio i path usati). La prima cosa da fare e’ quindi quella di procurarsi il codice sorgente di Apache2 che puo’ essere trovato sul sito dell’Apache HTTP Project o su uno dei tanti mirror disponibili. Nell’esempio di sotto, ho scelto la versione di apache 2.2.11, che puo’ essere scaricata qui. Sotto lo step relativo al download del codice usando il comando unix/linux wget:

/usr/local/src # wget http://www.apache.org/dist/httpd/httpd-2.2.11.tar.gz
–2009-03-02 11:07:29– http://www.apache.org/dist/httpd/httpd-2.2.11.tar.gz
Resolving www.apache.org… 192.87.106.226
Connecting to www.apache.org|192.87.106.226|:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: 6806786 (6.5M) [application/x-gzip]
Saving to: `httpd-2.2.11.tar.gz.1′
100%[=========================================>] 6,806,786 1.29M/s in 8.1s
2009-03-02 11:07:37 (824 KB/s) - `httpd-2.2.11.tar.gz.1′ saved [6806786/6806786]
/usr/local/src #

Dopo il download dobbiamo estrarre il codice sorgente dall’archivio. In questo caso ho usato il path ‘/usr/local/src’ ma si puo’ usare un qualsiasi altro path, per fare questo si usa il comando unix/linux tar come si vede di seguito:

/usr/local/src # tar xzvf httpd-2.2.11.tar.gz
………………………………………………………………
………………………………………………………………
httpd-2.2.11/modules/debug/README
httpd-2.2.11/README
httpd-2.2.11/apachenw.mcp.zip
httpd-2.2.11/buildconf
httpd-2.2.11/libhttpd.dsp
httpd-2.2.11/LAYOUT
httpd-2.2.11/.deps
usr/local/src #

Step 3 - Configurare Apache

Prima di iniziare ad installare Apache dobbiamo configurarlo. Questo e’ un passo molto importante perché ci permette di personalizzare e adattare Apache al sistema che stiamo utilizzando e anche alle nostre necessita’. Come si può vedere più sotto ho usato alcune opzioni per personalizzare la mia installazione. Di seguito c’è una breve descrizione ed alcuni riferimenti per avere maggiori dettagli.

  • –with-included-apr - Questa opzione permette di usare le librerie apr e apr-util 1.2 che sono presenti in bundled con la distribuzione di apache semplificando di fatto  la sua installazione ed evitando eventuali problemi nel caso in cui il proprio sistema abbia delle librerie apr e apr-util piu’ vecchie della versione 1.2.
  • –prefix=/usr/local/myapache2 - Questa opzione permette di definire la directory dove installare Apache. Il valore di default e’ /usr/local/apache2.
  • –enable-maintainer-mode - Questa invece permette di abilitare debug e warnings durante la fase di installazione. Un opzione sicuramente utile nel caso in cui si verifichino eventuali problemi in fase di installazione.
  • –enable-dav- Con questa opzione e’ possibile abilitare il protocollo WebDAV. Vedere qui per avere piu’ dettagli.
  • –enable-dav-fs - Vedere qui per avere piu’ dettagli.
  • –enable-dav-lock - Vedere qui per avere piu’ dettagli.
  • –enable-auth-digest - Permette di abilitare il modulo apache mod_auth_digest per l’autenticazione degli user mediante l’uso “MD5 Digest Authentication”.
  • –enable-rewrite - Abilita il modulo apache mod_rewrite per permettere il rewrite delle URL. Questa opzione e’ molto utile ed usata in molti casi, basti pensare, ad esempio, all’uso dei permalink in WordPress. AskApache e’ un ottimo sito su Apache ed e’ possibile trovare informazioni etips and tricks sul modulo apache mod_rewrite, chi vuole approfondire puo’ vedere il seguente link.
  • –enable-ssl=/usr/ssl - Con questa opzione, infine, e’ possibile utilizzare i protocolli SSL/TLS abilitando il modulo apache mod_ssl.

E’, ovviamente, possibile usare una configurazione di default per l’installazione di Apache. In questo caso, e’ sufficiente eseguire il comando ./configure senza alcun parametro. Se volete conoscere maggiori dettagli sulle varie opzioni di configurazione potete trovarle qui. Ricordarsi di usare lo user di root per poter eseguire la fase di configurazione di apache. Sotto potete osservare l’esecuizione della fase di configurazione sul mio sistema.

/usr/local/src/httpd-2.2.11 # ./configure –with-included-apr –prefix=/usr/local/myapache2 –enable-mods-shared=”all ssl dav_lock” –enable-maintainer-mode –enable-dav –enable-dav-fs –enable-dav-lock –enable-deflate –enable-auth-digest –enable-rewrite –enable-actions –enable-so –enable-ssl=/usr/ssl
checking for chosen layout… Apache
checking for working mkdir -p… yes
checking build system type… i686-pc-linux-gnu
checking host system type… i686-pc-linux-gnu
checking target system type… i686-pc-linux-gnu
Configuring Apache Portable Runtime library …
configuring package in srclib/apr now
……………………………………………………………………
…………………………………………………………………..
config.status: creating include/ap_config_layout.h
config.status: creating support/apxs
config.status: creating support/apachectl
config.status: creating support/dbmmanage
config.status: creating support/envvars-std
config.status: creating support/log_server_status
config.status: creating support/logresolve.pl
config.status: creating support/phf_abuse_log.cgi
config.status: creating support/split-logfile
config.status: creating build/rules.mk
config.status: creating build/pkg/pkginfo
config.status: creating build/config_vars.sh
config.status: creating include/ap_config_auto.h
config.status: executing default commands
/usr/local/src/httpd-2.2.11 #

Step 4 - Build & Install Apache

Finalmente siamo giunti alla fase di build e installazione del nostro Apache HTTP Server. Questo step e’ molto semplice e facile da ricordare e per fortuna non necessita’ di molti commenti. Iniziamo quindi con la fase di build, dove si deve esegurie un semplice command make, come segue:

/usr/local/src/httpd-2.2.11 # make
Making all in srclib
make[1]: Entering directory `/usr/local/src/httpd-2.2.11/srclib’
Making all in apr
make[2]: Entering directory `/usr/local/src/httpd-2.2.11/srclib/apr’
make[3]: Entering directory `/usr/local/src/httpd-2.2.11/srclib/apr’
/bin/sh /usr/local/src/httpd-2.2.11/srclib/apr/libtool –silent –mode=compile gcc -g -O2 -Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -pthread -DHAVE_CONFIG_H -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -I./include -I/usr/local/src/httpd-2.2.11/srclib/apr/include/arch/unix -I./include/arch/unix -I/usr/local/src/httpd-2.2.11/srclib/apr/include/arch/unix -I/usr/local/src/httpd-2.2.11/srclib/apr/include -o passwd/apr_getpass.lo -c passwd/apr_getpass.c && touch passwd/apr_getpass.lo
/bin/sh /usr/local/src/httpd-2.2.11/srclib/apr/libtool –silent –mode=compile gcc -g -O2 -Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -pthread -DHAVE_CONFIG_H -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -I./include -I/usr/local/src/httpd-2.2.11/srclib/apr/include/arch/unix -I./include/arch/unix -I/usr/local/src/httpd-2.2.11/srclib/apr/include/arch/unix -I/usr/local/src/httpd-2.2.11/srclib/apr/include -o strings/apr_fnmatch.lo -c strings/apr_fnmatch.c && touch strings/apr_fnmatch.lo
/bin/sh /usr/local/src/httpd-2.2.11/srclib/apr/libtool –silent –mode=compile gcc -g -O2 -Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -pthread -DHAVE_CONFIG_H -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -I./include -I/usr/local/src/httpd-2.2.11/srclib/apr/include/arch/unix -I./include/arch/unix -I/usr/local/src/httpd-2.2.11/srclib/apr/include/arch/unix -I/usr/local/src/httpd-2.2.11/srclib/apr/include -o strings/apr_strnatcmp.lo -c strings/apr_strnatcmp.c && touch strings/apr_strnatcmp.lo
/bin/sh /usr/local/src/httpd-2.2.11/srclib/apr/libtool –silent –mode=compile gcc -g -O2 -Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -pthread -DHAVE_CONFIG_H -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -I./include -I/usr/local/src/httpd-2.2.11/srclib/apr/include/arch/unix -I./include/arch/unix -I/usr/local/src/httpd-2.2.11/srclib/apr/include/arch/unix -I/usr/local/src/httpd-2.2.11/srclib/apr/include -o strings/apr_snprintf.lo -c strings/apr_snprintf.c && touch strings/apr_snprintf.lo
^Cmake[3]: *** [strings/apr_snprintf.lo] Interrupt
make[2]: *** [all-recursive] Interrupt
make[1]: *** [all-recursive] Interrupt
make: *** [all-recursive] Interrupt
/usr/local/src/httpd-2.2.11 #

Fatto questo possiamo procedere con la fase di installazione vera e propria. Anche in questo caso molto semplice e’ sufficiente infatti eseguire il comando make install, aspettare qualche istante e godersi la propria installazione di Apache Web Server :-) . Di seguito si possono vedere l’esecuzione dell’installazione e parte dei log che vengono visualizzati.

usr/local/src/httpd-2.2.11 # make install
Making install in srclib
make[1]: Entering directory `/usr/local/src/httpd-2.2.11/srclib’
Making install in apr
make[2]: Entering directory `/usr/local/src/httpd-2.2.11/srclib/apr’
/bin/sh /usr/local/src/httpd-2.2.11/srclib/apr/libtool –silent –mode=compile gcc -g -O2 -Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -pthread -DHAVE_CONFIG_H -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -I./include -I/usr/local/src/httpd-2.2.11/srclib/apr/include/arch/unix -I./include/arch/unix -I/usr/local/src/httpd-2.2.11/srclib/apr/include/arch/unix -I/usr/local/src/httpd-2.2.11/srclib/apr/include -o strings/apr_snprintf.lo -c strings/apr_snprintf.c && touch strings/apr_snprintf.lo
/bin/sh /usr/local/src/httpd-2.2.11/srclib/apr/libtool –silent –mode=compile gcc -g -O2 -Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -pthread -DHAVE_CONFIG_H -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -I./include -I/usr/local/src/httpd-2.2.11/srclib/apr/include/arch/unix -I./include/arch/unix -I/usr/local/src/httpd-2.2.11/srclib/apr/include/arch/unix -I/usr/local/src/httpd-2.2.11/srclib/apr/include -o strings/apr_strings.lo -c strings/apr_strings.c && touch strings/apr_strings.lo
………………………………………………………………………….
………………………………………………………………………….
Installing configuration files
mkdir /usr/local/myapache2/conf
mkdir /usr/local/myapache2/conf/extra
mkdir /usr/local/myapache2/conf/original
mkdir /usr/local/myapache2/conf/original/extra
Installing HTML documents
mkdir /usr/local/myapache2/htdocs
Installing error documents
mkdir /usr/local/myapache2/error
Installing icons
mkdir /usr/local/myapache2/icons
mkdir /usr/local/myapache2/logs
Installing CGIs
mkdir /usr/local/myapache2/cgi-bin
Installing header files
Installing build system files
Installing man pages and online manual
mkdir /usr/local/myapache2/man
mkdir /usr/local/myapache2/man/man1
mkdir /usr/local/myapache2/man/man8
mkdir /usr/local/myapache2/manual
make[1]: Leaving directory `/usr/local/src/httpd-2.2.11′
usr/local/src/httpd-2.2.11 #

Step 5 -Customize & Start/Stop Command

Siamo al termine del nostro tutorial. Possiamo personalizzare il nostro web server e verificare se il tutto e’ perfettamente funzionante. Per personalizzare Apache dobbiamo modificare il suo file di configurazione httpd.conf. Questo file e’ situato nella directory PREFIX/conf/ dove PREFIX e’ la directory scelta per l’installazione, nel mio caso ho scelto la directory/usr/local/myapache2. Se si volgliono conoscere maggiori dettagli potete dare un occhiata a questo link. Per verificarne, invece, il corretto funzionamento possiamo eseguire i comandi di start e stop. A questo punto possiamo procedere con il test della nostra installazione. Per startare il server bisogna usare il seguente comando PREFIX/bin/apachectl -k start. Sotto si possono vedere i risultati della mia installazione.

/usr/local/src/httpd-2.2.11 # cd /usr/local/myapache2/bin
/usr/local/myapache2/bin # ./apachectl -k start
/usr/local/myapache2/bin #

Per Verificare se il server e’ startato correttamente potete usare un browser e verificare l’url http://your_host_name/ se e’ tutto OK si vedra’ l’home page di Apache come si vede nella immagine sottostante:

Apache HTTP Server Screenshot

Apache HTTP Server Screenshot

Per finire possiamo stoppare il web server. Farlo e’ molto semplice vedere sotto :-) .

/usr/local/myapache2/bin # ./apachectl -k stop
/usr/local/myapache2/bin #

In questo caso non vedrete piu’ l’home page del server ma il browser vi restituira’ un errore. Per finire si puo’ verificare il funzionamento del server facendo tutto da linea di comando, oltr ad usare i comandi di start e stop come fatto sopra si puo usare anche il comando wget e verificare la risposta del server, come mostrato sotto:

/usr/local/myapache2/bin # ./apachectl -k start
/usr/local/myapache2/bin # wget http://localhost

–2009-03-04 10:26:55– http://localhost/
Resolving localhost… 127.0.0.1
Connecting to localhost|127.0.0.1|:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: 44
Saving to: `index.html.1′
100%[===========================================>] 44 –.-K/s in 0s
2009-03-04 10:26:55 (1.25 MB/s) - `index.html.1′ saved [44/44]
/usr/local/myapache2/bin # ./apachectl -k stop
/usr/local/myapache2/bin # wget http://localhost

–2009-03-04 10:27:06– http://localhost/
Resolving localhost… 127.0.0.1
Connecting to localhost|127.0.0.1|:80… failed: Connection refused.
/usr/local/myapache2/bin #

E’ tutto. Potete adesso godervi la vostra installazione di Apache :-)

1 comment so far ↓

#1 Ahmed on 06.19.09 at %H:%M

Bingo!!!
It was a perfect smooth ride following ur steps.
Thanks!!

Leave a Comment