Cum se instalează serverul web Apache pe CentOS 7

Introducere

serverul HTTP Apache este cel mai utilizat server web din lume. Oferă multe caracteristici puternice, inclusiv module încărcate dinamic, Suport media robust și integrare extinsă cu alte programe populare.

în acest ghid, veți instala un server web Apache cu gazde virtuale pe serverul CentOS 7.

cerințe preliminare

veți avea nevoie de următoarele pentru a completa acest ghid:

  • Un utilizator non-root cu privilegii sudo configurat pe serverul dvs., configurat urmând ghidul inițial de configurare a serverului pentru CentOS 7.
  • un firewall de bază configurat urmând pașii suplimentari recomandați pentru noul ghid CentOS 7 Servers.

Pasul 1 — Instalarea Apache

Apache este disponibil în depozitele software implicite ale CentOS, ceea ce înseamnă că îl puteți instala cuyum manager de pachete.

ca utilizator sudo non-root configurat în condițiile prealabile, actualizați Apache local httpd indexul pachetului pentru a reflecta cele mai recente modificări în amonte:

  • sudo yum update httpd

odată ce pachetele sunt actualizate, instalați pachetul Apache:

  • sudo yum install httpd

confirmând instalarea, yum va instala Apache și toate dependențele necesare.

dacă ați finalizat pașii suplimentari recomandați pentru noul Ghid de servere CentOS 7 menționat în secțiunea cerințe preliminare, veți fi instalatfirewalld pe serverul dvs. și va trebui să deschideți portul80 pentru a permite Apache să servească cereri prin HTTP. Dacă nu ați făcut-o deja, puteți face acest lucru activând firewalld‘s http serviciu cu următoarea comandă:

  • sudo firewall-cmd --permanent --add-service=http

Dacă intenționați să configurați Apache pentru a servi conținut prin HTTPS, veți dori, de asemenea, să deschideți portul 443activând httpsserviciu:

  • sudo firewall-cmd --permanent --add-service=https

apoi, reîncărcați firewall-ul pentru a pune în aplicare aceste noi reguli:

  • sudo firewall-cmd --reload

după ce firewall-ul se reîncarcă, sunteți gata să porniți serviciul și să verificați serverul web.

Pasul 2 — Verificarea serverului Web

Apache nu pornește automat pe CentOS după finalizarea instalării. Va trebui să porniți manual procesul Apache:

  • sudo systemctl start httpd

verificați dacă serviciul rulează cu următoarea comandă:

  • sudo systemctl status httpd

veți vedea un active stare atunci când serviciul rulează:

Output
Redirecting to /bin/systemctl status httpd.service● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2019-02-20 01:29:08 UTC; 5s ago Docs: man:httpd(8) man:apachectl(8) Main PID: 1290 (httpd) Status: "Processing requests..." CGroup: /system.slice/httpd.service ├─1290 /usr/sbin/httpd -DFOREGROUND ├─1291 /usr/sbin/httpd -DFOREGROUND ├─1292 /usr/sbin/httpd -DFOREGROUND ├─1293 /usr/sbin/httpd -DFOREGROUND ├─1294 /usr/sbin/httpd -DFOREGROUND └─1295 /usr/sbin/httpd -DFOREGROUND...

după cum puteți vedea din această ieșire, serviciul pare să fi început cu succes. Cu toate acestea, cel mai bun mod de a testa acest lucru este să solicitați o pagină de la Apache.

puteți accesa pagina de destinație Apache implicită pentru a confirma că software-ul rulează corect prin adresa dvs. IP. Dacă nu cunoașteți adresa IP a serverului dvs., puteți obține câteva moduri diferite de linia de comandă.

tastați acest lucru la promptul de comandă al serverului dvs.:

  • hostname -I

această comandă va afișa toate adresele de rețea ale gazdei, astfel încât veți primi înapoi câteva adrese IP separate prin spații. Puteți încerca fiecare în browserul dvs. web pentru a vedea dacă funcționează.

alternativ, puteți utiliza curl pentru a solicita IP-ul dvs. de laicanhazip.com, care vă va oferi adresa IPv4 publică așa cum se vede dintr-o altă locație de pe internet:

  • curl -4 icanhazip.com

când aveți adresa IP a serverului dvs., introduceți-o în bara de adrese a browserului dvs.:

http://your_server_ip

veți vedea pagina web implicită CentOS 7 Apache:

pagina Apache implicită pentru CentOS 7

această pagină indică faptul că Apache funcționează corect. De asemenea, include câteva informații de bază despre fișierele importante Apache și locațiile directoarelor. Acum că serviciul este instalat și rulează, puteți utiliza acum diferite comenzi systemctl pentru a gestiona serviciul.

Step 3-gestionarea procesului Apache

acum, că aveți serverul web în funcțiune, să trecem peste câteva comenzi de gestionare de bază.

pentru a opri serverul web, tastați:

  • sudo systemctl stop httpd

pentru a porni serverul web când este oprit, tastați:

  • sudo systemctl start httpd

pentru a opri și apoi porni din nou serviciul, tastați:

  • sudo systemctl restart httpd

dacă pur și simplu faceți modificări de configurare, Apache poate reîncărca adesea fără a renunța la conexiuni. Pentru aceasta, utilizați această comandă:

  • sudo systemctl reload httpd

în mod implicit, Apache este configurat să pornească automat la pornirea serverului. Dacă nu doriți acest lucru, dezactivați acest comportament tastând:

  • sudo systemctl disable httpd

pentru a reactiva serviciul să pornească la pornire, tastați:

  • sudo systemctl enable httpd

Apache va porni automat când serverul pornește din nou.

configurația implicită pentru Apache va permite serverului dvs. să găzduiască un singur site web. Dacă intenționați să găzduiți mai multe domenii pe serverul dvs., va trebui să configurați gazde virtuale pe serverul dvs. web Apache.

Step 4 — Configurarea gazdelor virtuale (recomandat)

când utilizați serverul web Apache, puteți utiliza gazde virtuale (similar cu blocuri de server în Nginx) pentru a încapsula detalii de configurare și gazdă mai mult de un domeniu de la un singur server. În acest pas, veți configura un domeniu numit example.com, dar ar trebui să îl înlocuiți cu propriul nume de domeniu. Pentru a afla mai multe despre configurarea unui nume de domeniu cu DigitalOcean, consultați Introducerea noastră în DigitalOcean DNS.

Apache pe CentOS 7 are un bloc de server activat în mod implicit, care este configurat pentru a servi documente din Directorul/var/www/html. În timp ce acest lucru funcționează bine pentru un singur site, acesta poate deveni greoi dacă găzduiți mai multe site-uri. În loc de a modifica /var/www/html, veți crea o structură de directoare în /var/www pentru example.com site-ul, lăsând /var/www/html în loc ca directorul implicit pentru a fi servit în cazul în care o cerere de client nu se potrivește cu orice alte site-uri.

creați html director pentru example.com după cum urmează, folosind -p pavilion pentru a crea orice directoare părinte necesare:

  • sudo mkdir -p /var/www/example.com/html

creați un director suplimentar pentru a stoca jurnal fișiere pentru site:

  • sudo mkdir -p /var/www/example.com/log

apoi, atribuiți dreptul de proprietate asupra directorului html cu $USER variabilă de mediu:

  • sudo chown -R $USER:$USER /var/www/example.com/html

asigurați-vă că rădăcina web are permisiunile implicite set:

  • sudo chmod -R 755 /var/www

Next, create a sample index.html page using vi or your favorite editor:

  • sudo vi /var/www/example.com/html/index.html

Press i to switch to INSERT mode and add the following sample HTML to the file:

/var/www/example.com/html/index.html
<html> <head> <title>Welcome to Example.com!</title> </head> <body> <h1>Success! The example.com virtual host is working!</h1> </body></html>

Save and close the file by pressing ESC, typing :wq, and pressing ENTER.

cu directorul site-ului și fișierul index eșantion în loc, sunteți aproape gata pentru a crea fișierele gazdă virtuale. Fișierele gazdă virtuale specifică configurația site-urilor dvs. separate și spuneți serverului web Apache cum să răspundă la diferite solicitări de domeniu.

înainte de a crea gazdele virtuale, va trebui să creați un directorsites-available pentru a le stoca. De asemenea, veți crea directorul sites-enabled care spune Apache că o gazdă virtuală este gata să servească vizitatorilor. Directorul va conține legături simbolice către gazdele virtuale pe care dorim să le publicăm. Creați ambele directoare cu următoarea comandă:

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

apoi, îi veți spune Apache să caute gazde virtuale în directorulsites-enabled. Pentru a realiza acest lucru, editați fișierul principal de configurare Apache și adăugați o linie care declară un director opțional pentru fișiere de configurare suplimentare:

  • sudo vi /etc/httpd/conf/httpd.conf

adăugați această linie la sfârșitul fișierului:

IncludeOptional sites-enabled/*.conf

Salvați și închideți fișierul când ați terminat de adăugat acea linie. Acum, că aveți directoarele gazdă virtuale în loc, vă va crea fișierul gazdă virtuală.

începeți prin a crea un fișier nou în directorulsites-available:

  • sudo vi /etc/httpd/sites-available/example.com.conf

adăugați următorul bloc de configurare și modificați domeniulexample.com la numele dvs. de domeniu:

/etc/httpd/sites-available / example.com.conf
<VirtualHost *:80> ServerName www.example.com ServerAlias example.com DocumentRoot /var/www/example.com/html ErrorLog /var/www/example.com/log/error.log CustomLog /var/www/example.com/log/requests.log combined</VirtualHost>

Acest lucru va spune Apache unde să găsească rădăcina direct care deține documentele web accesibile publicului. De asemenea, îi spune Apache unde să stocheze erorile și să solicite jurnalele pentru acest site special.

Salvați și închideți fișierul când ați terminat.

acum că ați creat fișierele gazdă virtuale, le veți permite astfel încât Apache să știe să le servească vizitatorilor. Pentru a face acest lucru, creați o legătură simbolică pentru fiecare gazdă virtuală în directorul sites-enabled :

  • sudo ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/example.com.conf

gazda dvs. virtuală este acum configurată și gata să servească conținut. Înainte de a reporni serviciul Apache, să ne asigurăm că SELinux are politicile corecte pentru gazdele dvs. virtuale.

Pasul 5 — ajustarea permisiunilor SELinux pentru gazdele virtuale (recomandat)

SELinux este configurat să funcționeze cu configurația implicită Apache. Din moment ce configurați un director jurnal personalizat în fișierul de configurare virtual hosts, veți primi o eroare dacă încercați să porniți serviciul Apache. Pentru a rezolva acest lucru, trebuie să actualizați politicile SELinux pentru a permite Apache să scrie în fișierele necesare. CentOS 7, prin urmare nu este recomandat să dezactivați complet modulul kernel.

există diferite moduri de a seta politici bazate pe nevoile mediului dvs., deoarece SELinux vă permite să vă personalizați nivelul de securitate. Acest pas va acoperi două metode de ajustare a politicilor Apache: universal și pe un anumit director. Ajustarea politicilor privind directoarele este mai sigură și, prin urmare, este abordarea recomandată.

ajustarea politicilor Apache Universal

setarea politicii Apache universal va spune SELinux pentru a trata toate procesele Apache identic folosindhttpd_unified boolean. Deși această abordare este mai convenabilă, nu vă va oferi același nivel de control ca o abordare care se concentrează pe o politică de fișiere sau directoare.

rulați următoarea comandă pentru a seta o politică universală Apache:

  • sudo setsebool -P httpd_unified 1

comandasetsebool modifică valorile booleene SELinux. Steagul-P va actualiza valoarea timpului de pornire, făcând această modificare să persiste peste reporniri. httpd_unified este booleanul care îi va spune lui SELinux să trateze toate procesele Apache ca fiind de același tip, așa că l-ați activat cu o valoare de1.

ajustarea politicilor Apache pe un director

setarea individuală a permisiunilor SELinux pentru directorul/var/www/example.com/log vă va oferi mai mult control asupra politicilor Apache, dar poate necesita și mai multă întreținere. Deoarece această opțiune nu este setarea universală a politicilor, va trebui să setați manual tipul de context pentru orice directoare de jurnal noi specificate în configurațiile dvs. de gazdă virtuală.

Mai întâi, verificați tipul de context pe care SELinux l-a dat directorului/var/www/example.com/log:

  • sudo ls -dZ /var/www/example.com/log/

această comandă listează și imprimă contextul SELinux al directorului. Veți vedea ieșire similară cu următoarele:

Output
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/example.com/log/

contextul actual estehttpd_sys_content_t, care spune SELinux că procesul Apache poate citi numai fișierele create în acest director. În acest tutorial, veți schimba tipul de context al directorului/var/www/example.com/logînhttpd_log_t. Acest tip va permite Apache să genereze și să adauge la fișierele jurnal de aplicații web:

  • sudo semanage fcontext -a -t httpd_log_t "/var/www/example.com/log(/.*)?"

apoi, utilizați comandarestorecon pentru a aplica aceste modificări și a le persista peste reporniri:

  • sudo restorecon -R -v /var/www/example.com/log

-R steagul rulează această comandă recursiv, ceea ce înseamnă că va actualiza toate fișierele existente pentru a utiliza noul context. Steagul-v va imprima contextul schimbă comanda făcută. Veți vedea următoarea ieșire care confirmă modificările:

Output
restorecon reset /var/www/example.com/log context unconfined_u:object_r:httpd_sys_content_t:s0->unconfined_u:object_r:httpd_log_t:s0

puteți lista contextele încă o dată pentru a vedea modificările:

  • sudo ls -dZ /var/www/example.com/log/

ieșirea reflectă tipul de context actualizat:

Output
drwxr-xr-x. root root unconfined_u:object_r:httpd_log_t:s0 /var/www/example.com/log

acum că directorul/var/www/example.com/log folosește tipulhttpd_log_t, sunteți gata să testați configurația gazdei virtuale.

Pasul 6 — testarea gazdei virtuale (recomandat)

odată ce contextul SELinux a fost actualizat cu oricare dintre metode, Apache va putea scrie în directorul/var/www/example.com/log. Acum Puteți reporni cu succes serviciul Apache:

  • sudo systemctl restart httpd

listați conținutul directorului/var/www/example.com/log pentru a vedea dacă Apache a creat fișierele jurnal:

  • ls -lZ /var/www/example.com/log

veți vedea că Apache a fost capabil de a crea error.logși requests.logfișierele specificate în configurația gazdă virtuală:

Output
-rw-r--r--. 1 root root 0 Feb 26 22:54 error.log-rw-r--r--. 1 root root 0 Feb 26 22:54 requests.log

acum că aveți gazda virtuală configurată și permisiunile SELinux actualizate, Apache vă va servi acum numele de domeniu. Puteți testa acest lucru navigând lahttp://example.com, unde ar trebui să vedeți ceva de genul acesta:

succes! De example.com gazda virtuală funcționează!

aceasta confirmă faptul că gazda dvs. virtuală este configurată cu succes și servește conținut. Repetați pașii 4 și 5 pentru a crea noi gazde virtuale cu permisiuni SELinux pentru domenii suplimentare.

concluzie

în acest tutorial, ați instalat și gestionat serverul web Apache. Acum că aveți instalat serverul web, aveți multe opțiuni pentru tipul de conținut pe care îl puteți servi și tehnologiile pe care le puteți utiliza pentru a crea o experiență mai bogată.

Dacă doriți să construiți o stivă de aplicații mai completă, puteți consulta acest articol despre cum să configurați o stivă LAMP pe CentOS 7.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *