compilarea și instalarea Apache HTTPD din codul sursă
majoritatea distribuțiilor Linux oferă o versiune specifică a pachetelor binare Apache HTTPD din depozitele lor principale. Dezavantajul este că această versiune nu este adesea actualizată până la lansarea majoră a următoarei distribuții.
pentru a profita de caracteristicile disponibile numai dintr-o versiune mai nouă sau pentru a construi un binare personalizate, compilarea și instalarea Apache HTTPD din codul sursă este simplă.
acest tutorial descrie pașii de compilare și instalare a Apache HTTPD sub distribuții Linux bazate pe RPM (Fedora, CentOS, …) și bazate pe Deb (Debian, Ubuntu,…). Cea mai recentă versiune disponibilă (2.4.x) este folosit.
Apache HTTPD cod sursă
directorul /usr/local/src/ este utilizat în general pentru activități legate de construire (necesită privilegii root). Este folosit în acest tutorial ca director de construire.
codul sursă al Apache HTTPD este disponibil ca fișier tar de la: http://httpd.apache.org/download.cgi.
următoarele sunt pașii pentru a descărca și extrage codul sursă în directorul build (numerele de versiune pot fi modificate după cum este necesar):
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
instalarea dependențelor de construire
compilarea Apache HTTPD necesită instalarea instrumentelor de dezvoltare (compilator C, linker, …) și a unor biblioteci suplimentare.
bibliotecile necesare sunt:
- apr
- apr-util
- openssl
- expat
- prce
majoritatea distribuțiilor Linux furnizează aceste biblioteci din depozitele principale. Dacă sistemul include o versiune veche a unei biblioteci, codul sursă poate fi descărcat și compilat separat. O secțiune ulterioară prezintă modul de descărcare și construire a codului sursă al bibliotecilor apr și apr-util ca parte a procesului de compilare Apache HTTPD.
pe distribuțiile Linux bazate pe RPM (Fedora, Centos,…), pachetele de dezvoltare a bibliotecilor pot fi instalate utilizând următoarele comenzi:
yum group install developmentyum install openssl-devel expat-devel pcre-devel apr-devel apr-util-devel
pe distribuțiile Linux bazate pe Deb (Debian, Ubuntu,…), pachetele de dezvoltare a bibliotecilor pot fi instalate folosind următoarea comandă:
apt install build-essential libssl-dev libexpat-dev libpcre2-dev libapr1-dev libaprutil1-dev
Opțiuni de configurare Build
după descărcarea codului sursă Apache HTTPD și instalarea dependențelor build, opțiunile de configurare build pot fi setate (opțiuni compilator, director de instalare, activare/dezactivare module, …).
deoarece Apache HTTPD utilizează sistemul autoconf build, acesta oferă un script numit configure pentru a seta opțiunile de configurare build și pentru a genera fișierele Makefile.
dacă nu sunt necesare unele modificări, valorile implicite pot fi păstrate. Implicit este să compilați majoritatea modulelor și să setați directorul de instalare la /usr/local/apache2/.
pentru a utiliza valorile implicite, scriptul de configurare este apelat fără argumente:
cd /usr/local/src/httpd-2.4.43./configure
pentru a lista toate opțiunile posibile, configurarea scriptului este apelată cu argumentul-help:
cd /usr/local/src/httpd-2.4.43./configure --help
următoarele secțiuni prezintă câteva opțiuni utile de configurare a construcției.
director de instalare: –opțiune prefix
directorul de instalare este diferit de directorul de construire. Este locul în care binarele și fișierele de configurare rezultate vor fi plasate odată ce compilarea reușește și comanda make install este executată (prezentată în secțiunea de instalare).
opțiunea –prefix este utilizată pentru a selecta o altă cale de instalare. Această opțiune este utilă dacă trebuie să construim și să instalăm diferite versiuni ale Apache HTTPD.
următorul exemplu prezintă modul de setare a directorului de instalare la / opt / apache-2.4.43/:
cd /usr/local/src/httpd-2.4.43./configure --prefix=/opt/apache-2.4.43/
cum se activează / dezactivează un modul: – enable-MODULE / -disable-MODULE
cele mai multe dintre modulele Apache HTTPD sunt construite în mod implicit ca biblioteci dinamice. Opțiunea-enable-MODULE poate fi utilizată pentru a activa un modul sau pentru a schimba tipul de construcție de la Dinamic la static. Opțiunea-disable-MODULE este utilizată pentru a dezactiva un modul de a fi construit. Modulul este înlocuit cu numele modulului real.
următorul exemplu arată pentru a construi rescrierea modulului ca o bibliotecă statică:
cd /usr/local/src/httpd-2.4.43./configure --enable-rewrite=static
Opțiuni compilator
când este necesar, opțiunile compilatorului sunt transmise scriptului de configurare ca variabile de mediu.
variabilele sunt rezumate în tabelul următor:
CC | folosit pentru a selecta comanda compilatorului C. Este implicit la cc (compilatorul GNU), dar zăngăni este o opțiune prea |
Cflags | folosit pentru a trece steaguri compilator C |
Ldflags | folosit pentru a trece steaguri linker |
LIBS | folosit pentru a trece bibliotecile la linker |
CPPFLAGS | folosit pentru a trece (Obiectiv) C/C++ steaguri preprocesor |
CPP | folosit pentru a trece parametrii preprocesorului C |
următorul exemplu prezintă modul de transmitere a unui steag de optimizare către compilatorul C:
cd /usr/local/src/httpd-2.4.43export CFLAGS=-o2./configure
compilare și instalare
după executarea scriptului de configurare pentru a seta opțiunile de configurare a construcției și a genera fișierele Makefile, procesul de compilare este pornit cu comanda make.
următorul exemplu prezintă cum să începeți procesul de compilare:
cd /usr/local/src/httpd-2.4.43./configuremake
după ce compilarea reușește, instalarea în directorul de instalare poate fi pornită cu următoarea comandă:
make install
instalarea plasează toate fișierele binare și fișierele de configurare necesare în directorul de instalare /usr/local/apache2. Fișierele executabile sunt plasate în / usr / local / apache2/bin/. Fișierele de configurare sunt plasate în / usr / local / apache2/conf/.
cum se listează modulele compilate
modulele compilate pot fi listate folosind următoarea comandă:
/usr/local/apache2/bin/httpd -M
porniți și opriți serviciul
noua versiune a Apache HTTPD poate fi pornită folosind comanda /usr/local/apache2/bin/apachectl.
pentru a porni serviciul:
/usr/local/apache2/bin/apachectl start
pentru a opri serviciul:
/usr/local/apache2/bin/apachectl stop
construirea apr și apr-util din codul sursă
bibliotecile necesare pentru compilarea Apache HTTPD pot fi instalate din depozitele principale ale distribuției Linux, dar în unele situații, Apache HTTPD necesită o versiune mai recentă a unei biblioteci care nu este disponibilă din aceste depozite. În acest caz, codul sursă al bibliotecii poate fi, de asemenea, descărcat și compilat alături de Apache HTTPD.
bibliotecile apr și apr-util sunt două dintre bibliotecile de bază pe care Apache HTTPD se bazează pentru munca sa internă pentru a asigura portabilitatea în multe sisteme de operare.
codul sursă Apache HTTPD include un subdirector numit srclib. Este folosit pentru a ține bibliotecile care pot fi construite și utilizate de server în loc să utilizeze bibliotecile de sistem.
pentru a integra codul sursă al bibliotecilor apr și apr-util ca parte a procesului de compilare a Apache HTTPD, codul lor sursă este descărcat și extras în subdirectorul srclib.
următorul exemplu prezintă modul de descărcare și extragere a codului sursă al celor două biblioteci apr și apr-util. Când fișierul tar este extras, Numărul versiunii trebuie eliminat.Acestea sunt disponibile pentru descărcare de pe site-ul oficial: 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
cum să faceți upgrade de la versiunea 2.x la 2.y
actualizarea unui HTTPD Apache care este instalat din codul sursă este posibilă. Practica recomandată este să utilizați un director de instalare separat pentru fiecare versiune și să copiați subdirectorul de configurare din versiunea veche în noul director.
următorul exemplu prezintă cum să actualizați o versiune deja instalată 2.4.0 care este instalată în /usr/local/apache-2.4.0, la o versiune mai nouă 2.4.43 care va fi instalată în /usr/local/apache-2.4.43.
pentru a descărca, compila și instala noua versiune:
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
opriți serviciul din versiunea veche:
/usr/local/apache-2.4.0/bin/apachectl stop
copiați directorul de configurare din Directorul versiunii vechi în cel al versiunii noi:
rm -rf /usr/local/apache-2.4.43/conf/cp -rp /usr/local/apache-2.4.0/conf/ /usr/local/apache-2.4.43/
porniți serviciul de la noua versiune:
/usr/local/apache-2.4.43/bin/apachectl start