Într-o postare anterioară, am aruncat o privire asupra serverului HTTP Apache, ce este și cum funcționează. Astăzi, vom gestiona unele dintre cele mai importante directive de configurare Apache, uita-te la ce sunt și pentru a învăța cum să le editați, pentru a modela modul în care serverul funcționează pentru a ne plăcea.
Serverul Apache este un serviciu care rulează în fundal, așteptând cererile clienților conectați la porturile pe care le ascultă, pentru a acționa. Apache fie răspunde la aceste solicitări, fie lasă în memoria fișierelor sale note înrudite. Comportamentul său este controlat prin configurația sa, folosind ceea ce se numește directive (printre altele). Vom discuta directivele cele mai de bază din acest articol.
Numele serverului directiva este folosită pentru a seta numele gazdei serverului; acesta este modul în care se identifică serverul. Utilizează acest nume atunci când răspunde la cererile HTTP. Puteți seta această directivă fie în configurația serverului, fie în gazdele virtuale. Locația fișierelor de configurare depinde atât de versiunea Apache, cât și de distribuția Linux.
ServerAdmin webmaster @ localhost DocumentRoot / var / www Numele serverului www.example-site.com ...
Apache are un număr mare de directive pe care le puteți seta și manipula pentru a seta comportamentul serverului.
În cazul în care Numele serverului directiva nu este specificată, serverul încearcă să-l obțină prin efectuarea unei căutări DNS inversă pe adresa IP. Ar trebui să setați întotdeauna a Numele serverului pentru server în mod explicit; este singura valoare pe care trebuie să o setați pentru a vă rula serverul după instalare.
Va trebui să utilizați adresa IP a aparatului dacă nu aveți încă un nume de domeniu înregistrat. În caz contrar, va trebui să adăugați numele domeniului și adresa IP la server gazde fișier - la fel ca și în cazul fișierelor gazdă ale PC-ului. Procedând astfel, serverul verifică fișierul gazdă înainte de a se consulta cu serverul DNS. Eu personal adaug adresa mea IP / intrare nume de domeniu în fișierul gazdă Apache pentru a minimiza timpul de răspuns al serverului salvând un apel către serverul DNS.
Presupunem că numele nostru de domeniu este www.example-site.com
și adresa IP a serverului nostru este 50.57.77.153
, trebuie să adăugați următoarea linie în fișierul gazdă al serverului (/ etc / hosts):
50.57.77.153 www.example-site.com example-site.com
După editarea fișierului hosts, trebuie să reporniți (sau să opriți și să începeți) Apache. Îți voi arăta cum să faci asta mai târziu.
Asculta directiva spune Apache ce adrese IP si / sau porturi ar trebui sa asculte pentru cererile primite. Dacă nu este specificat nimic, Apache ascultă toate adresele și porturile de pe aparat. Configurația implicită stabilește serverul pentru a asculta portul 80, portul implicit pentru comunicarea HTTP.
Dacă specificați doar o adresă IP, serverul va răspunde la cererile care vin pe toate porturile acelei adrese (numită și o interfață). Dacă este specificat doar un număr de port, Apache răspunde la cererile de pe portul specificat care sosesc la toate interfețele de pe aparat. Dacă este furnizată o combinație de adrese și porturi, Apache răspunde numai acelor combinații specifice de interfață / port.
Dacă instalarea serverului are fișiere de configurare separate, ar trebui să puteți găsi sau seta această directivă în
ports.conf
fişier.
Puteți găsi acest fișier în aceeași locație ca fișierele de configurare Apache (a mea este /etc/apache2/ports.conf
, dar aceasta ar putea fi diferită pentru alte versiuni Apache și / sau distribuții Linux).
Să presupunem că exemplul site-ului nostru este la adresa IP 50.57.77.153
. Pentru a seta Apache să asculte porturile 80 și 443, porturile implicite pentru HTTP și HTTPS, trebuie să introduceți următoarele directive în ports.conf
fişier:
Ascultă 50.57.77.153:80 Ascultați 50.57.77.153:443
Alternativ, dacă doriți ca Apache să asculte porturile 80 și 443 pe toate interfețele, indiferent de adresa IP, puteți introduce următoarele:
Asculta 80 Asculta 443
Pe sistemele de operare Unix, este o idee bună să configurați Apache pentru a rula sub un anumit utilizator și un grup în loc de root. Acest lucru face ca serverul să fie mai sigur și mai puțin vulnerabil la atacuri. În mod ideal, utilizatorul și grupul pe care l-ați setat nu ar trebui să se poată conecta la server (adică: nu au acreditări de conectare) și nici un shell de conectare; acestea vor fi folosite doar pentru a gestiona cererile clientului web. Setați directorul de domiciliu al utilizatorului Apache în directorul de documente al serverului web, situat de obicei la / Var / www
sau / Usr / local / apache2 / htdocs
.
groupadd anyUserName utilizatoradd -d / var / www -g oriceUserName -s / bin / false
Exemplul de mai sus folosește anyUserName ca utilizator și grup web; utilizați doar un nume care nu este rezervat altor procese. -d / var / www setează directorul de domiciliu al contului nou la / Var / www
, și -s / bin / false asigură că noul cont nu are acces la shell. Apoi, trebuie să modificați fișierul config pentru a utiliza noul utilizator și grup Apache. Dacă dumneavoastră spuneți:
Utilizator $ APACHE_RUN_USER grup $ APACHE_RUN_GROUP
Apoi, trebuie să găsiți unde sunt definite aceste variabile și să le modificați valorile. De obicei, directiva de mai sus este precedată de un comentariu care vă informează exact unde să setați noile valori. În caz contrar, veți introduce doar noul utilizator și numele grupului în locul celui vechi. Astfel, liniile dvs. de configurare finale ar putea arăta astfel:
Utilizator anyUserName Group anyUserName
Aptitudinea lui Apache este controlată prin configurația sa.
Fișierele importante ale Apache, cum ar fi configurația serverului, erorile și fișierele de jurnal, sunt păstrate în partea de sus a arborelui de directoare. Această locație este ServerRoot, și puteți seta o altă valoare în fișierul principal de configurare al Apache. În funcție de instalare, implicit poate fi ceva de genul / Usr / local / apache2
sau / Etc / apache2
. Orice directivă Apache care utilizează o cale relativă va atașa, în mod implicit, calea principală specificată în ServerRoot.
Când instalați pentru prima dată serverul, fișierele de configurare și jurnal sunt plasate în ServerRoot. Puteți modifica valoarea acestuia într-un director nou, dar asigurați-vă că ați copiat fișierele de configurare în noua locație. De asemenea, asigurați-vă că nu adăugați un traseu lateral la cale când modificați valoarea.
Când apare o eroare, Apache înregistrează eroarea într-un fișier jurnal. Locația jurnalului de eroare este determinată de valoarea specificată utilizând ErrorLog directivă. Acest fișier este esențial pentru că vă veți referi la acesta pentru a depana erori, a rezolva problemele de configurare a serverului și pentru a optimiza serverul.
Dacă serverul găzduiește mai multe site-uri și doriți să aveți jurnale separate de erori pentru fiecare site, puteți specifica un fișier și o locație diferită pentru fiecare site în fișierul gazde virtuale.
Dacă nu, atunci erorile tuturor site-urilor sunt înregistrate în jurnalul de erori implicit, situat în mod obișnuit la / Usr / local / apache2 / busteni / error_log
sau /var/log/apache2/error.log
(din nou, în funcție de instalare).
Rețineți că căile de jurnal de mai sus sunt absolute. De exemplu, luați în considerare următoarea directivă:
Eroare Log log / error_log
Aceasta este o cale relativă. Prin urmare, locația reală a jurnalului de eroare este $ ServerRoot / busteni / error_log
.
LogLevel directiva controlează nivelul mesajelor înregistrate în jurnalele de eroare. În mod prestabilit, este setat la a avertiza, ceea ce înseamnă că toate mesajele cu valoarea lui avertizare și mai mare (la fel de critică) vor fi înregistrate. Puteți modifica valoarea acestei directive pentru a ajusta nivelul de înregistrare la preferințele dvs..
DocumentulRădăcină directiva stabileste locatia fisierelor publice ale serverului, aka htdocs. Acesta este directorul implicit pentru documentele serverului Apache, iar conținutul său este ușor și public disponibil clienților conectați prin web. Acesta conține conținutul static și dinamic care trebuie difuzat odată ce serverul primește o solicitare HTTP pentru aceștia. Deoarece fișierele și subdirectoarele de sub htdocs sunt disponibile pentru public, este foarte important să se gestioneze corect permisiunile pentru a minimiza capacitatea de a compromite siguranța și securitatea serverului.
În funcție de instalare, implicit DocumentulRădăcină locație ar putea fi ceva de genul
/ Var / www
sau/ Usr / local / apache2 / htdocs
.
Dacă găzduiți mai multe site-uri web pe același server, trebuie să setați un altul DocumentulRădăcină pentru fiecare locație. Acest lucru se poate face în cadrul respectivului VirtualHost directivă care corespunde fiecărui site. Să presupunem că aveți trei site-uri web pe același server (de exemplu: www.example-site1.com
, www.example-site2.com
, www.example-site3.com
), fișierul gazdă virtuală ar putea să arate cam așa:
DocumentRoot / usr / local / apache2 / htdocs / example_site1 Numele serverului www.example-site1.com ... DocumentRoot / usr / local / apache2 / htdocs / example_site2 Numele serverului www.example-site2.com ... DocumentRoot / usr / local / apache2 / htdocs / example_site3 Numele serverului www.example-site3.com ...
Pentru a seta un jurnal de erori separat pentru fiecare dintre aceste domenii, ceea ce este o idee bună, atunci fișierul gazdă virtuală ar putea să arate cam așa:
DocumentRoot / usr / local / apache2 / htdocs / example_site1 Numele serverului www.example-site1.com ErrorLog / usr / local / apache2 / logs / site1_error_log ... DocumentRoot / usr / local / apache2 / htdocs / example_site2 Numele serverului www.example-site2.com ErrorLog / usr / local / apache2 / logs / site2_error_log ... DocumentRoot / usr / local / apache2 / htdocs / example_site3 Numele serverului www.example-site3.com ErrorLog / usr / local / apache2 / logs / site3_error_log ...
Direcția ServerName este utilizată pentru a seta numele gazdei serverului; acesta este modul în care se identifică serverul.
Serviciul Apache pornește mai întâi ca root pentru a se lega la portul privilegiat 80 pentru HTTP (sau 443 dacă utilizează SSL), deoarece numerele porturilor mai mici de 1024 sunt rezervate doar utilizatorului root. După execuția inițială, copiii procesează spawn pentru a gestiona cererile clientului deținute de utilizatorul Apache specificat în fișierul de configurare. Din acest motiv, veți găsi un proces rădăcină și mai multe procese aparținând utilizatorului web; acest proces rădăcină este primul proces inițiat când apare Apache. Acesta are un ID de proces, iar acest ID este stocat în fișierul Pid de pe server. Puteți controla locația fișierului Pid utilizând pid directivă în fișierul de configurare.
Dacă deschideți fișierul specificat în pid
, veți găsi un număr care corespunde ID-ului procesului părinte. Puteți opri serverul Apache prin uciderea procesului utilizând numărul său de identificare. Cu toate acestea, ucideți procesul doar ca o ultimă soluție. Vom discuta modul preferat de a opri Apache într-o clipă.
Este posibilă separarea configurației serverului și a setărilor în mai multe fișiere; de fapt, unele instalații Apache fac acest lucru. Aceste fișiere multiple pot fi apoi incluse în fișierul original de configurare a serverului. Această abordare este ideală pentru a păstra lumina și claritatea fișierului de configurare, dar, de asemenea, vă obligă să priviți în interiorul mai multor fișiere care locuiesc în diferite locații pentru a înțelege complet modul în care este configurat Apache. În orice caz, mai jos este sintaxa pentru includerea fișierelor externe de configurare. Indiferent dacă doriți sau nu să utilizați includerea fișierelor, depinde de dvs.:
# Include lista de porturi: Include /etc/apache2/ports.conf # Include fragmente generice de instrucțiuni Include /etc/apache2/conf.d/ # Include configurația modulului: Include /etc/apache2/mods-enabled/*.load Include / etc / apache2 / mods-activat / *. conf
După cum puteți vedea din exemplele de mai sus, puteți include un anumit fișier după nume, un director (și astfel toate fișierele din acesta) sau mai multe fișiere utilizând metacaractere.
De fiecare dată când editați unul dintre fișierele de configurare ale Apache, trebuie să reporniți (sau să opriți și să porniți) serviciul, astfel încât Apache să poată încărca noua configurație. În caz contrar, modificările dvs. vor rămâne doar în fișier pentru următoarea repornire sau pornire a serverului. Dacă modificările dvs. produc erori de sintaxă în fișierele de configurare, repornirea vă va afișa mesaje de eroare referitoare la aceste greșeli. În plus, serverul web Apache nu va începe până când nu remediați aceste erori.
Pentru a opri serverul Apache, tastați următoarea comandă în consola:
/etc/init.d/apache2 oprire
Pentru a porni serverul Apache, tastați următoarea comandă:
/etc/init.d/apache2 începe
Pentru a reporni serverul Apache, tastați următoarea comandă:
/etc/init.d/apache2 reporniți
Firește, trebuie să fiți conectat cu un utilizator privilegiat pentru a executa aceste comenzi. Cu toate acestea, ați putea rula comenzile de mai sus adăugând sudo înainte de fiecare linie. Acest lucru indică în mod sistematic că executați comanda ca super utilizator (de aici denumirea, sudo), caz în care sistemul vă cere să introduceți o parolă înainte să execute comanda. Dacă nu știți acea parolă, întrebați administratorul serverului. Înainte de comenzile de mai sus cu sudo:
sudo /etc/init.d/apache2 opri sudo /etc/init.d/apache2 începe sudo /etc/init.d/apache2 restart
Apache are un număr mare de directive, pe care le puteți seta și manipula pentru a seta comportamentul serverului. Acest lucru este responsabil pentru flexibilitatea și puterea Apache.
Fiecare administrator de server va schimba adesea anumite directive, lăsând pe alții complet singuri; totul depinde de nevoile lor specifice. În general, însă, directivele discutate în acest articol sunt printre cele mai importante. Fiecare persoană care lucrează cu serverul Apache este probabil să întâlnească aceste directive. Înțelegerea a ceea ce sunt și a scopului pe care îl servesc este extrem de important pentru a avea un server Web de lucru și stabil.