Compilazione e installazione di Apache HTTPD dal codice sorgente
La maggior parte delle distribuzioni Linux fornisce una versione specifica dei pacchetti binari Apache HTTPD dai loro repository principali. Il rovescio della medaglia è che questa versione spesso non viene aggiornata fino alla versione principale della prossima distribuzione.
Per sfruttare le funzionalità disponibili solo da una versione più recente o per creare binari personalizzati, la compilazione e l’installazione di Apache HTTPD dal codice sorgente è semplice.
Questo tutorial descrive le fasi di compilazione e installazione di Apache HTTPD nelle distribuzioni Linux basate su RPM (Fedora, CentOS, …) e Deb (Debian, Ubuntu, Linux). L’ultima versione disponibile (2.4.x) è usato.
Apache HTTPD codice sorgente
La directory /usr/local/src/ viene generalmente utilizzata per le attività relative alla compilazione (richiede i privilegi di root). Viene utilizzato in questo tutorial come directory di compilazione.
Il codice sorgente di Apache HTTPD è disponibile come file tar da: http://httpd.apache.org/download.cgi.
di seguito sono I passaggi per scaricare ed estrarre il codice sorgente nella directory di compilazione (I numeri di versione può essere modificato secondo le necessità):
cd /usr/local/src/wget https://downloads.apache.org//httpd/httpd-2.4.43.tar.gztar -xzf httpd-2.4.43.tar.gzls -lcd httpd-2.4.43pwdls
l’Installazione delle dipendenze
La compilazione di Apache HTTPD richiede l’installazione di strumenti di sviluppo (C compilatore, linker, …) e alcune librerie aggiuntive.
Le librerie necessarie sono:
- apr
- apr-util
- openssl
- expat
- aumenta
la Maggior parte delle distribuzioni Linux forniscono queste librerie dal repository principali. Se il sistema include una vecchia versione di una libreria, il suo codice sorgente può essere scaricato e compilato separatamente. Una sezione successiva presenta come scaricare e costruire il codice sorgente delle librerie apr e apr-util come parte del processo di compilazione Apache HTTPD.
Sulle distribuzioni Linux basate su RPM (Fedora, Centos,…), i pacchetti di sviluppo delle librerie possono essere installati usando i seguenti comandi:
yum group install developmentyum install openssl-devel expat-devel pcre-devel apr-devel apr-util-devel
Sulle distribuzioni Linux basate su Deb (Debian, Ubuntu,…), i pacchetti di sviluppo delle librerie possono essere installati usando il seguente comando:
apt install build-essential libssl-dev libexpat-dev libpcre2-dev libapr1-dev libaprutil1-dev
Opzioni di configurazione di compilazione
Dopo il download del codice sorgente Apache HTTPD e l’installazione delle dipendenze di compilazione, è possibile impostare le opzioni di configurazione di compilazione (opzioni del compilatore, directory di installazione, abilita/disabilita moduli, …).
Poiché Apache HTTPD utilizza il sistema di compilazione Autoconf, fornisce uno script chiamato configure per impostare le opzioni di configurazione di compilazione e generare i file Makefile.
A meno che non siano necessarie alcune modifiche, i valori predefiniti possono essere mantenuti. L’impostazione predefinita è compilare la maggior parte dei moduli e impostare la directory di installazione su /usr/local/apache2/.
Per utilizzare i valori predefiniti, lo script configure viene chiamato senza argomenti:
cd /usr/local/src/httpd-2.4.43./configure
Per elencare tutte le opzioni possibili, lo script configure viene chiamato con l’argomento-help:
cd /usr/local/src/httpd-2.4.43./configure --help
Le sezioni seguenti presentano alcune utili opzioni di configurazione della build.
Directory di installazione: –opzione prefisso
La directory di installazione è diversa dalla directory di compilazione. È dove i binari e i file di configurazione risultanti verranno posizionati una volta che la compilazione ha esito positivo e viene eseguito il comando make install (presentato nella sezione installazione).
L’opzione –prefix viene utilizzata per selezionare un percorso di installazione diverso. Questa opzione è utile se abbiamo bisogno di costruire e installare diverse versioni di Apache HTTPD.
Il seguente esempio presenta come impostare la directory di installazione su/opt / apache-2.4.43/:
cd /usr/local/src/httpd-2.4.43./configure --prefix=/opt/apache-2.4.43/
Come abilitare / disabilitare un modulo: – enable-MODULE / -disable-MODULE
La maggior parte dei moduli Apache HTTPD sono costruiti di default come librerie dinamiche. L’opzione-enable-MODULE può essere utilizzata per abilitare un modulo o cambiare il suo tipo di build da dinamico a statico. L’opzione-disable-MODULE viene utilizzata per disabilitare la costruzione di un modulo. Il MODULO viene sostituito dal nome effettivo del modulo.
Il seguente esempio mostra di creare la riscrittura del modulo come libreria statica:
cd /usr/local/src/httpd-2.4.43./configure --enable-rewrite=static
Opzioni del compilatore
Quando necessario, le opzioni del compilatore vengono passate allo script di configurazione come variabili di ambiente.
Le variabili sono riassunte nella seguente tabella:
CC | Utilizzato per selezionare il comando del compilatore C. L’impostazione di default è di cc (GNU compiler), ma clang è un’opzione troppo |
CFLAGS | Utilizzato per passare compilatore C bandiere |
LDFLAGS | Utilizzato per passare linker bandiere |
LIBS | Utilizzato per il passaggio di librerie per il linker |
CPPFLAGS | Utilizzato per passare (Obiettivo) C/C++ per il preprocessore bandiere |
CPP | Utilizzato per passare il preprocessore C parametri |
Il seguente esempio mostra come il passaggio di un flag di ottimizzazione del compilatore C:
cd /usr/local/src/httpd-2.4.43export CFLAGS=-o2./configure
Compilazione e installazione
Dopo l’esecuzione dello script configure per impostare le opzioni di configurazione build e generare i file Makefile, il processo di compilazione viene avviato con il comando make.
Il seguente esempio presenta come avviare il processo di compilazione:
cd /usr/local/src/httpd-2.4.43./configuremake
Dopo che la compilazione ha avuto esito positivo, l’installazione nella directory di installazione può essere avviata con il seguente comando:
make install
L’installazione inserisce tutti i file binari e di configurazione necessari nella directory di installazione /usr/local/apache2. I file eseguibili sono collocati in / usr / local / apache2 / bin/. I file di configurazione vengono inseriti in / usr / local / apache2/conf/.
Come elencare i moduli compilati
I moduli compilati possono essere elencati mediante il seguente comando:
/usr/local/apache2/bin/httpd -M
Avviare e arrestare il servizio
La nuova build di Apache HTTPD può essere avviato utilizzando il comando /usr/local/apache2/bin/apachectl.
Per avviare il servizio:
/usr/local/apache2/bin/apachectl start
Per interrompere il servizio:
/usr/local/apache2/bin/apachectl stop
Edificio apr e apr-util dal codice sorgente
Le librerie necessarie per la compilazione di Apache HTTPD può essere installato da una distribuzione di Linux repository principali, ma in alcune situazioni, Apache HTTPD richiede una versione più recente di una libreria che non è disponibile da questi archivi. In questo caso, il codice sorgente della libreria può anche essere scaricato e compilato insieme ad Apache HTTPD.
Le librerie apr e apr-util sono due delle librerie principali su cui Apache HTTPD si basa per il suo lavoro interno per garantire la portabilità su molti sistemi operativi.
Il codice sorgente HTTPD di Apache include una sottodirectory chiamata srclib. Viene utilizzato per contenere le librerie che possono essere costruite e utilizzate dal server invece di utilizzare le librerie di sistema.
Per integrare il codice sorgente delle librerie apr e apr-util come parte del processo di compilazione di Apache HTTPD, il loro codice sorgente viene scaricato ed estratto all’interno della sottodirectory srclib.
Il seguente esempio presenta come scaricare ed estrarre il codice sorgente delle due librerie apr e apr-util. Quando il file tar viene estratto, il numero di versione deve essere rimosso.Sono disponibili per il download dal sito ufficiale: https://apr.apache.org/download.cgi.
cd /usr/local/src/httpd-2.4.43/srclib/wget https://downloads.apache.org/apr/apr-1.7.0.tar.gztar -xzf apr-1.7.0.tar.gzmv apr-1.7.0 aprlswget https://downloads.apache.org/apr/apr-util-1.6.1.tar.gztar -xzf apr-util-1.6.1.tar.gzmv apr-util-1.6.1 apr-utillscd /usr/local/src/httpd-2.4.43./configuremakemake install
Come aggiornare dalla versione 2.da x a 2.y
È possibile l’aggiornamento di un HTTPD Apache installato dal codice sorgente. La pratica consigliata è quella di utilizzare una directory di installazione separata per ogni versione e copiare la sottodirectory di configurazione dalla vecchia versione alla nuova directory.
Il seguente esempio presenta come aggiornare una versione 2.4.0 già installata installata in /usr/local/apache-2.4.0, a una versione più recente 2.4.43 che verrà installata in /usr/local/apache-2.4.43.
Per scaricare, compilare e installare la nuova versione:
cd /usr/local/src/wget https://downloads.apache.org//httpd/httpd-2.4.43.tar.gztar -xzf httpd-2.4.43.tar.gzcd httpd-2.4.43./configure --prefix=/usr/local/apache-2.4.43makemake install
Interrompere il servizio dalla vecchia versione:
/usr/local/apache-2.4.0/bin/apachectl stop
Copia la directory di configurazione dalla directory della vecchia versione a quella della nuova versione:
rm -rf /usr/local/apache-2.4.43/conf/cp -rp /usr/local/apache-2.4.0/conf/ /usr/local/apache-2.4.43/
Avvia il servizio dalla nuova versione:
/usr/local/apache-2.4.43/bin/apachectl start