Com instal·lar Apache amb Virtual Host a CentOS 8


El servidor web Apache és un servidor web HTTP de codi obert i popular que continua gaudint d'una quota de mercat massiva a la indústria de l'allotjament. S'envia amb un munt de funcions, com ara millores de mòduls, suport per a diversos protocols, configuració simplificada i suport per a diversos idiomes, per esmentar només algunes.

En aquesta guia, us guiarem per la instal·lació del servidor web Apache a CentOS 8 i RHEL 8 amb un entorn d'amfitrió virtual. En el moment d'escriure aquest tutorial, l'última versió d'Apache és Apache 2.2.43.

Instal·lació del servidor web Apache

Per començar, primer actualitzeu la llista de paquets del sistema CentOS 8 o RHEL 8 mitjançant l'ordre dnf següent.

$ sudo dnf update

Un cop completada l'actualització, instal·leu el servidor web Apache executant l'ordre següent.

$ sudo dnf install httpd

Un cop instal·lat, podeu verificar la versió d'Apache executant l'ordre rpm.

$ rpm -qi httpd

L'ordre imprimeix una sèrie d'informació com ara la versió, la data de llançament, la compilació i l'arquitectura del paquet.

Per iniciar el servei web Apache HTTP, executeu l'ordre systemctl.

$ sudo systemctl start httpd

Per confirmar si el servei s'està executant, executeu-lo.

$ sudo systemctl status httpd

A la sortida, l'estat actiu en verd indica que el servidor web Apache està en funcionament.

Per aclarir qualsevol dubte que el servidor web s'està executant, sol·liciteu una pàgina de prova d'Apache navegant per l'adreça IP o el nom de domini del vostre servidor tal com es mostra.

http://server-ip  

Podeu obtenir la IP del vostre servidor executant l'ordre curl.

$ curl ifconfig.me 
OR
$ curl -4 icanhazip.com

Quan navegueu per l'adreça IP del servidor, hauríeu de mostrar la següent pàgina web.

Aquesta és una confirmació segura que el servidor web s'està executant.

Gestió del servidor web Apache

Amb Apache instal·lat i en execució, podeu utilitzar l'eina d'inspecció systemctl per gestionar Apache.

Per exemple, per aturar Apache, executeu l'ordre:

$ sudo systemctl stop httpd

Per iniciar de nou el servei, executeu:

$ sudo systemctl start httpd

Si heu fet canvis en algun dels seus fitxers de configuració i heu de reiniciar-los per aplicar els canvis, executeu l'ordre:

$ sudo systemctl restart httpd

El reinici del servei sol provocar una interrupció del servei. Una millor alternativa és simplement recarregar sense cap interrupció amb la connexió.

$ sudo systemctl reload httpd

Per iniciar el servidor web Apache automàticament en arrencar o reiniciar, executeu l'ordre següent. Això garantirà que Apache s'iniciï automàticament sense la vostra intervenció.

$ sudo systemctl enable httpd

Si decidiu no iniciar el servei automàticament a l'arrencada, executeu:

$ sudo systemctl disable httpd

Configuració d'amfitrions virtuals d'Apache

De manera predeterminada, el servidor web Apache està configurat per servir o allotjar només un lloc web. Si només voleu allotjar un lloc web, aquest pas no és necessari. Però si teniu previst allotjar diversos dominis al vostre servidor, haureu de configurar els amfitrions virtuals d'Apache.

Un host virtual és un fitxer independent que conté configuracions que us permeten configurar un domini independent del predeterminat. Per a aquesta guia, configurarem un amfitrió virtual per al domini crazytechgeek.info.

L'amfitrió virtual predeterminat es troba al directori /var/www/html. Això només funciona per a un sol lloc. Per crear un host virtual independent per al nostre domini, crearem una altra estructura de directoris dins del directori /var/www tal com es mostra.

$ sudo mkdir -p /var/www/crazytechgeek.info/html

A més, també podeu crear un directori per emmagatzemar fitxers de registre.

$ sudo mkdir -p /var/www/crazytechgeek.info/log

A continuació, editeu els permisos del fitxer utilitzant la variable d'entorn $USER tal com es mostra.

$ sudo chown -R $USER:$USER /var/www/crazytechgeek.info/html

A més, ajusteu els permisos del directori webroot tal com es mostra.

$ sudo chmod -R 755 /var/www

A continuació, creeu un fitxer de mostra index.html tal com es mostra.

$ sudo vim /var/www/crazytechgeek.info/html/index.html

Premeu la lletra i al teclat i enganxeu un contingut de mostra tal com es mostra que es mostrarà al navegador web quan es proveu l'amfitrió virtual.

<html>
  <head>
    <title>Welcome to crazytechgeek.info!</title>
  </head>
  <body>
    <h1>Success! The crazytechgeek.info virtual host is up and perfectly working!</h1>
  </body>
</html>

Deseu i sortiu del fitxer de configuració.

Amb el fitxer d'índex de mostra i el directori del lloc creats, ara podeu continuar i crear el fitxer d'amfitrió virtual. El fitxer d'amfitrió virtual contindrà la configuració del lloc del vostre domini i indicarà a Apache com respondrà a les sol·licituds dels clients.

El fitxer d'amfitrió virtual contindrà la configuració del lloc del vostre domini i indicarà a Apache com respondrà a les sol·licituds dels clients. Però seguint, heu de crear 2 directoris: els directoris sites-available i sites-enabled.

El fitxer d'amfitrió virtual s'emmagatzemarà al directori sites-available mentre que el directori sites-enabled contindrà l'enllaç simbòlic a l'amfitrió virtual.

Creeu els dos directoris tal com es mostra.

$ sudo mkdir /etc/httpd/sites-available
$ sudo mkdir /etc/httpd/sites-enabled

A continuació, modifiqueu el fitxer de configuració principal del servidor web Apache i indiqueu a Apache on ha de localitzar l'amfitrió virtual dins del directori habilitat per a llocs.

$ sudo vim /etc/httpd/conf/httpd.conf

Afegiu la línia tal com es mostra al final del fitxer de configuració.

IncludeOptional sites-enabled/*.conf

Guardar i sortir.

Ara creeu un fitxer d'amfitrió virtual com es mostra:

$ sudo vim /etc/httpd/sites-available/crazytechgeek.info

Enganxeu el contingut a continuació i substituïu crazytechgeek.info pel vostre propi nom de domini.

<VirtualHost *:80>
    ServerName www.crazytechgeek.info
    ServerAlias crazytechgeek.info
    DocumentRoot /var/www/crazytechgeek.info/html
    ErrorLog /var/www/crazytechgeek.info/log/error.log
    CustomLog /var/www/crazytechgeek.info/log/requests.log combined
</VirtualHost>

Desa i surt del fitxer.

Ara activeu el fitxer d'amfitrió virtual creant un enllaç simbòlic al directori sites-enabled.

$ sudo ln -s /etc/httpd/sites-available/crazytechgeek.info.conf /etc/httpd/sites-enabled/crazytechgeek.info.conf

Ajust dels permisos SELinux per a hosts virtuals

CentOS 8 i RHEL 8 s'envien amb SELinux, que és un mòdul de seguretat per reforçar la seguretat del sistema Linux. Com que heu configurat un directori de registre personalitzat al pas anterior, heu d'actualitzar algunes polítiques de SELinux per indicar al servidor web Apache que escrigui al directori.

Hi ha 2 enfocaments per ajustar les polítiques de SELinux Apache: Ajustar les polítiques d'ajust universalment i les polítiques d'un directori. Aquest últim és preferit perquè és més preferit.

L'edició dels permisos de SELinux per al directori de registre us ofereix un control absolut sobre les polítiques del servidor web d'Apache. Aquest mètode és bastant llarg i requereix que configureu manualment el tipus de context per a directoris addicionals especificats al fitxer de configuració de l'amfitrió virtual.

Abans de començar, primer confirmeu el tipus de context assignat al directori de registre per SELinux:

$ sudo ls -dlZ /var/www/crazytechgeek.info/log/

La sortida hauria de ser similar a la que tenim a continuació.

A la sortida, el context establert és httpd_sys_content_t. Això indica que el servidor web només pot llegir fitxers al directori de registre. Heu de canviar aquest context a httpd_log_t per permetre que Apache generi i afegeixi entrades de registre al directori.

Per tant, executeu l'ordre:

$ sudo semanage fcontext -a -t httpd_log_t "/var/www/crazytechgeek.info/log(/.*)?"

Si trobeu l'error a continuació \semanage: command not found.

Implica que els paquets que proporcionen l'ordre semanage no estan instal·lats. Per solucionar aquest error, heu d'instal·lar aquests paquets. Però primer, comproveu quins paquets proporcionen l'ordre semanage executant:

$ sudo dnf whatprovides /usr/sbin/semanage

La sortida ens proporciona el paquet que proporciona semanage, que és policycoreutils-python-utils.

Ara instal·leu el paquet tal com es mostra amb el gestor de paquets DNF.

$ sudo dnf install policycoreutils-python-utils

L'ordre per canviar el context ara hauria de funcionar.

$ sudo semanage fcontext -a -t httpd_log_t "/var/www/crazytechgeek.info/log(/.*)?"

Per desar els canvis i fer-los persistents, emet l'ordre restorecon tal com es mostra:

$ sudo restorecon -R -v /var/www/crazytechgeek.info/log

Podeu confirmar els canvis tornant a executar l'ordre:

$ sudo ls -dlZ /var/www/crazytechgeek.info/log/

Assegureu-vos de tenir en compte que el tipus de context ha canviat a httpd_log_t tal com es veu a la sortida.

Reinicieu Apache perquè s'apliquin els canvis.

$ sudo systemctl restart httpd

Ara podeu confirmar si Apache està desant fitxers de registre al directori de registre enumerant el seu contingut tal com es mostra:

$ ls -l /var/www/crazytechgeek.info/log/

Hauríeu de poder veure dos fitxers de registre com es mostra: registre d'errors i fitxers de registre de sol·licitud.

Prova d'Apache Virtual Host

Finalment, heu d'assegurar-vos que el servidor web Apache està donant servei al vostre fitxer d'amfitrió virtual. Per fer-ho, obriu el vostre navegador i aneu a l'adreça IP o el nom de domini del vostre servidor:

http://domain-name

Perfecte! Això indica que tot ha anat bé i que el nostre amfitrió virtual s'està prestant com s'esperava.

En aquesta guia, hem après a instal·lar el servidor web Apache a CentOS 8 i RHEL 8 i també a configurar un fitxer d'amfitrió virtual per servir contingut per a un domini addicional. No dubteu a configurar diversos fitxers d'amfitrió virtual com considereu adequat per acollir dominis addicionals.

Si voleu configurar una pila d'allotjament completa, us recomano que instal·leu una pila LAMP a CentOS 8.