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 443
activând https
serviciu:
- 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ă:
OutputRedirecting 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:
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:
<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:
<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:
Outputdrwxr-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:
Outputrestorecon 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:
Outputdrwxr-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.log
fiș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:
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.