3. Ottenere, compilare e installare Apache con i suoi moduli di base

3.1. Ottenere e ed estrarre i sorgenti di Apache

3.1.3. Patch per siti di larga scala

Se il proprio server web deve rispondere a molte richieste contemporaneamente e la macchina è sufficientemente robusta per fare questo, si può modificare il limite massimo di processi in esecuzione

Si faccia il download della patch da: http://www.delouw.ch/linux/apache-patch_HARD_SERVER_LIMIT.txt

--- httpd.h     Thu Mar 21 18:07:34 2002
+++ httpd.h-new Sun Apr  7 13:34:11 2002
@@ -320,7 +320,7 @@
 #elif defined(NETWARE)
 #define HARD_SERVER_LIMIT 2048
 #else
-#define HARD_SERVER_LIMIT 256
+#define HARD_SERVER_LIMIT 512
 #endif
 #endif

Questa patch aumenta il numero massimo di client concorrenti a 512. Ci si senta liberi di aumentarlo ulteriormente, se si è riusciti a modificare il proprio kernel ed il file /etc/security/limits.conf

CautelaEvitare di esaurire i task
 

Con le impostazioni sbagliate ciò potrebbe portare ad un »self-denial-of-service-attack«. Ci si assicuri di aver lasciato sufficienti processi per root

Si applichi la patch con:

cd /usr/local/apache_1.3.27/src/include

patch -p0 < apache-patch_HARD_SERVER_LIMIT.txt

3.2. mod_ssl

3.2.3. Applicazione della patch ai sorgenti di Apache

cd /usr/local/

tar -xvzf mod_ssl-2.8.12-1.3.27.tar.gz
cd mod_ssl-2.8.12-1.3.27/

./configure --with-apache=../apache_1.3.27 

3.3. mod_perl

3.3.3. Compilazione e installazione

cd /usr/local

tar -xvzf mod_perl-1.27.tar.gz

cd mod_perl-1.27

perl Makefile.PL \
EVERYTHING=1 \
APACHE_SRC=../apache_1.3.27/src \
USE_APACI=1 \
PREP_HTTPD=1 \
DO_HTTPD=1

make
make install

CautelaMod_perl non può essere compilato come DSO
 

Non si compili mod_perl come DSO (Dynamic Shared Object)! Secondo varie fonti, Apache potrebbe bloccarsi (non ho mai provato).

3.4. Configurare e compilare Apache

Ora che i due moduli statici mod_ssl e mod_perl sono configurati ed ai sorgenti di Apache è stata applicata la patch, possiamo procedere con la compilazione di Apache.

3.4.1. Compilazione e installazione

EAPI_MM="/usr/local/mm-1.2.2" SSL_BASE="/usr/local/ssl" \
./configure \
--enable-module=unique_id \
--enable-module=rewrite \
--enable-module=speling \
--enable-module=expires \
--enable-module=info \
--enable-module=log_agent \
--enable-module=log_referer \
--enable-module=usertrack \
--enable-module=proxy \
--enable-module=userdir \
--enable-module=so \
--enable-shared=ssl \
--enable-module=ssl \
--activate-module=src/modules/perl/libperl.a \
--enable-module=perl

make
make install

3.4.2. Creare certificati SSL auto-firmati

cd /usr/local/ssl/bin

./openssl req -new > new.cert.csr
./openssl rsa -in privkey.pem -out new.cert.key
./openssl x509 -in new.cert.csr -out new.cert.cert \
-req -signkey new.cert.key -days 999

cp new.cert.key /usr/local/apache/conf/ssl.key/server.key
cp new.cert.cert /usr/local/apache/conf/ssl.crt/server.crt

SuggerimentoNome comune
 

OpenSSL chiede diverse cose. Un errore comune è quello di inserire un "nome comune" sbagliato. Questo deve essere lo FQHN (Fully Qualified HostName) del proprio Server, ad es. www.foo.org