Introducere
Server-ul web Apache este cea mai populară cale de a oferi conținut web pe internet. Numără mai mult de jumătate din site-urile active de pe internet, fiind extrem de puternic și flexibil.
Apache își împarte funcționalitatea și componentele în unități individuale personalizate și configurate independent. Unitatea de bază care descrie un site individual sau un domeniu este numită virtual host.
Această caracteristică permite administratorului să folosească un server pentru mai multe domenii sau site-uri pe o singură interfață sau IP folosind un mecanism de potrivire. Acest lucru este relevant pentru persoanele care găzduiesc mai mult de un site pe un singur VPS.
Fiecare domeniu care este configurat va direcționa vizitatorul către un director care păstrează informațiile site-ului, fără a spune că același server este responsabil și cu alte site-uri. Acest sistem este extensibil fără limită de software, în măsura în care serverul poate suporta sarcina.
În acest ghid, o să vorbim despre cum să setăm Apache virtual hosts pe server VPS cu Ubuntu 16.04. În timpul acestui proces, o să învățăm cum să oferim conținut variat diferiților vizitatori, indiferent de domeniile solicitate.
Condiție prealabilă
Înainte de a începe acest tutorial, ar trebui să creați un utilizator non-root așa cum este descris aici în pașii 1-4.
De asemenea, trebuie să aveți instalat Apache pentru a putea parcurge acești pași. Dacă nu ați făcut încă acest lucru, puteți instala Apache pe server prin apt-get:
sudo apt-get update
sudo apt-get install apache2
După ce acești pași s-au finalizat, putem începe.
În scopul acestui ghid, vom face un domeniu virtual example.com și un altul test.com. La acestea vom face referire de-a lungul ghidului, dar puteți să substituiți cu propriile domenii sau valori în timp ce parcurgeți ghidul.
Vă vom arăta cum să vă editați fișierul de host mai târziu într-un test de configurare, dacă folosiți valori fictive. Acesta vă va permite să testați configurarea de pe computerul personal, chiar dacă conținutul nu va fi disponibil pentru alți vizitatori prin intermediul domeniului.
Pasul Unu: Crearea Structurii Directorului
Primul pas pe care îl vom face este să creăm structura directorului, care va susține informațiile de pe site, care vor fi folosite de vizitatori.
Comanda document root (directorul de nivel superior în care Apache caută conținutul pentru a-l oferi) va fi setată pe directoare individuale sub directorul /var/www. O să creăm un director pentru ambele virtual host pe care plănuim să le facem.
Pentru fiecare din aceste directoare o să creăm un folder public_html care susține fișierele actuale. Acest lucru ne oferă flexibilitate în host.
De exemplu, pentru site-urile noastre o să facem directoarele în felul următor:
sudo mkdir -p /var/www/example.com/public_html
sudo mkdir -p /var/www/test.com/public_html
Cuvintele îngroșate reprezintă numele de domeniu pe care îl vom folosi pentru VPS.
Pasul Doi: Obținerea Permisiunii
Acum avem structura directoarelor pentru fișierele noastre, dar sunt deținute de utilizatorul root. Dacă dorim ca utilizatorul obișnuit să modifice fișiere în directoarele web, putem schimba proprietatea făcând aceasta:
sudo chown -R $USER:$USER /var/www/example.com/public_html
sudo chown -R $USER:$USER /var/www/test.com/public_html
Variabila $USER va lua valoarea utilizatorului care este logat în momentul apasării tastei Enter. Făcând acest lucru, utilizatorul obișnuit deține acum subdirectoarele public_html unde se va stoca conținutul.
Ar trebui să modificăm permisiunea pentru a ne asigura că accesul la directorul general, toate fișierele și folderele este permis pentru ca toate paginile să fie servite în mod corect:
sudo chmod -R 755 /var/www
Server-ul web ar trebui să aibă permisiunea de care are nevoie să împartă conținutul, iar utilizatorul ar trebui să fie capabil să creeze conținut în folderele necesare.
Pasul Trei – Crearea de Pagini Demo pentru Fiecare Virtual Host
Avem structura de directoare setată. Acum este timpul să creăm conținut pentru a servi.
Vom face o demonstrație, așa că paginile noastre vor fi foarte simple. O să facem o pagină index.html pentru fiecare site. Să începem cu example.com. Putem deschide un fișier index.html în editorul nostru tastând:
nano /var/www/example.com/public_html/index.html
În acest fișier creăm un simplu document HTML care să indice că site-ul este conectat. Fișierul va arăta în felul următor:
/var/www/example.com/public_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>
Salvați și închideți fișierul când ați terminat.
Putem copia acest fișier pentru a-l folosi ca bază pentru cel de-al doilea site tastând:
cp /var/www/example.com/public_html/index.html /var/www/test.com/public_html/index.html
Apoi putem deschide fișierul pentru a modifica părțile relevante:
nano /var/www/test.com/public_html/index.html
/var/www/test.com/public_html/index.html
<html>
<head>
<title>Welcome to Test.com!</title>
</head>
<body> <h1>Success! The test.com virtual host is working!</h1>
</body>
</html>
Salvați și închideți fișierul. Acum aveți paginile necesare pentru a testa configurarea virtual host.
Pasul Patru – Crearea Noilor Fișiere de Virtual Host
Fișierele de virtual host care specifică actuala configurare a virtual host și dictează cum serverul web Apache va răspunde la multiplele cereri ale domeniului.
Apache vine cu un fișier standard de virtual host numit 000-default.conf pe care îl putem folosi ca punct inițial. O să îl copiem pentru a crea fișiere virtual host pentru fiecare dintre domeniile noastre.
O să începem configurarea cu un domeniu, îl vom copia pentru cel de-al doilea domeniu și mai apoi să îl mai ajustăm pe unde va fi necesar. Configurarea standard pe care o cere Ubuntu pentru fiecare fișier să se termine în .conf.
Crearea Primului Fișier de Virtual Host
Începem prin a copia fișierul de la primul domeniu:
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf
Deschideți noul fișier în editorul dumneavoastră cu privilegii root:
sudo nano /etc/apache2/sites-available/example.com.conf
Fișierul va arăta în felul următor (Am scos comentariile pentru a face fișierul mai abordabil):
/etc/apache2/sites-available/example.com.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
După cum puteți vedea, nu este mare lucru aici. O să personalizăm elementele pentru primul nostru domeniu aici și vom adăuga unele directive suplimentare. Această secțiune de virtual host se potrivește oricăror cereri făcute pe portul 80, portul implicit pentru HTTP.
Pentru început, vom schimba instrucțiunea ServerAdmin într-un email prin care administratorul site-ului să poată primi emailuri.
ServerAdmin admin@example.com
După aceasta va trebui să adăugăm două instrucțiuni. Prima este numită ServerName, stabilește domeniul de bază care trebuie să se potrivească pentru definiția virtual host. Acesta va fi domeniul dvs. Cea de-a doua instrucțiune, numită ServerAlias, definește mai departe numele care ar trebui să se potrivească dacă ar fi nume de bază. Acesta este folositor pentru a defini potrivirea host ca www:
ServerName example.com
ServerAlias www.example.com
Singurul lucru pe care trebuie să îl schimbăm este fișierul de bază al virtual host în locația documentului root pentru acest domeniu. Am creat deja fișierul de care avem nevoie și acum va mai trebui să modificăm instrucțiunea DocumentRoot pentru a reflecta la directorul creat:
DocumentRoot /var/www/example.com/public_html
Fișierul virtual host ar trebui să arate așa:
/etc/apache2/sites-available/example.com.conf
<VirtualHost *:80>
ServerAdmin admin@example.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Salvați și închideți fișierul.
Copierea Primului Virtual Host și Personalizarea celui de-al Doilea Domeniu
Acum că avem primul fișier de virtual host stabilit, îl putem crea pe cel de-al doilea prin copierea fișierului și ajustarea lui.
Începeți prin a-l copia:
sudo cp /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-available/test.com.conf
Deschideți noul fișier cu drepturi root în editorul dvs.:
sudo nano /etc/apache2/sites-available/test.com.conf
Va trebui să modificați toate informațiile pentru a face referire la cel de-al doilea domeniu. Când ați terminat ar trebui să arate ceva de genul:
/etc/apache2/sites-available/test.com.conf
<VirtualHost *:80>
ServerAdmin admin@test.com
ServerName test.com
ServerAlias www.test.com
DocumentRoot /var/www/test.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Salvați și închideți fișierul când ați terminat.
Pasul Cinci – Activați Noile Fișiere ale Virtual Host
Acum că am creat fișierele virtual host va trebui să le activăm. Apache include unele metode care ne permit să facem acest lucru.
Putem activa fiecare site putem folosi metoda a2ensite:
sudo a2ensite example.com.conf
sudo a2ensite test.com.conf
În continuare, dezactivați site-ul implicit definit în 000-default.conf:
sudo a2dissite 000-default.conf
Când ați terminat, ar trebui să reporniți Apache pentru ca aceste modificări să aibă efect:
sudo systemctl restart apache2
În acest articol veți vedea un exemplu în care vom folosi comanda service:
sudo service apache2 restart
Această comandă va funcționa, dar nu va arăta ieșirea cu care sunteți obișnuiți în alte sisteme din moment ce nu este înconjurată de valoarea systemctl.
Pasul șase – Setarea fișierelor de Local Host (Opțional)
În cazul în care nu ați utilizat nume de domenii reale pe care le dețineți pentru a testa această procedură și ați folosit în schimb exemple de domenii, puteți cel puțin testa funcționalitatea acestui proces prin modificarea temporară a fișierului hosts pe computerul local.
Acest lucru va intercepta orice cereri pentru domeniile pe care le-ați configurat și le indicați spre VPS, așa cum ar face și sistemul DNS dacă ar utiliza domenii înregistrate. Acest procedeu va funcționa de pe computer fiind util în scopuri de testare.
Asigurați-vă că operați acești pași pe computerul dvs. și nu pe VPS. Va trebui să cunoașteți parola administrativă sau să fiți membru al unui grup administrativ.
Dacă folosiți un computer cu Linux sau Mac, editați fișierul local cu drepturi administrative tastând:
sudo nano /etc/hosts
Detaliile pe care trebuie să le adăugați sunt adresa IP publică a VPS-ului urmată de domeniul pe care doriți să îl utilizați pentru a ajunge la VPS.
Pentru domeniul pe care l-am folosit în acest ghid vom presupune că adresa IP a VPS-ului este 111.111.111.111, și pot adăuga următoarele linii în partea de jos a fișierului host:
/etc/hosts
127.0.0.1 localhost
127.0.1.1 guest-desktop
111.111.111.111 example.com
111.111.111.111 test.com
Acesta va direcționa orice cereri pentru example.com și test.com pe calculatorul nostru și le va trimite server-ului 111.111.111.111. Aceasta este ceea ce ne dorim, în cazul în care nu suntem de fapt proprietarii acestor domenii pentru a testa virtual host.
Salvați și închideți fișierul.
Pasul șapte – Testarea Rezultatelor
Acum că aveți configurată virtual host, puteți testa setările ușor accesând domeniile configurate în browser-ul dvs. web:
Veți vedea o pagină care arată ca aceasta:
De asemenea, vă puteți vizita și cea de-a doua pagină:
O să vedeți fișierul creat pentru cel de-al doilea site.
Dacă ambele site-uri funcționează, atunci ați configurat cu succes două virtual host pe același server.
Dacă ați ajustat fișierul de host de pe computerul de acasă, veți dori să ștergeți liniile adăugate acum că ați verificat funcționarea configurării. Acest lucru va preveni ca fișierele de host să umple intrări inutile.
Dacă doriți să accesați acesta pe termen lung, trebuie să alegeți un nume de domeniu pentru fiecare site și să îl setați până în VPS.
Concluzii
Dacă ați parcurs întregul articol, ar trebui să aveți un server cu două domenii separate. Completați acest proces urmând pașii pe care i-am subliniat mai sus pentru a face alte virtual host.
Nu există nici o limită de software privind numărul de domenii de care Apache se poate ocupa, așa că puteți face oricâte domenii poate suporta server-ul dvs.