Web poslužitelj pohranjuje, obrađuje i isporučuje web stranice posjetiteljima web stranica. Postoji prilično mnogo web poslužitelja otvorenog koda softverskih opcija, ali Apache HTTP poslužitelj se smatra najčešće korištenim web poslužiteljem na svijetu. To je zato što, osim što je otvorenog koda, njegova modularna arhitektura omogućuje proširenje njegovih mogućnosti dodavanjem modula za različite svrhe. Kao rezultat toga, web poslužitelj je iznimno robustan.
Ako želite instalirati Apache na CentOS 7 sustav, ovaj vodič je za vas. Osim toga, naučit ćete kako stvoriti virtualne hostove kako biste mogli posluživati više web stranica na jednom Apache HTTP poslužitelju koji radi na CentOS-u.
Ovo je detaljan vodič usmjeren samo na instalaciju Apachea. Ako ste tražili vodič u natuknicama o LAMP stogu, imamo ovaj vodič o Kako instalirati Linux, Apache, MySQL, PHP (LAMP) na CentOS 7 koji možete pogledati. Sada, počnimo!
Preduvjeti
Budući da je ovo praktični vodič, trebali biste imati sljedeće:
- Poslužitelj koji pokreće CentOS 7, možete ga izraditi na CloudSigma u nekoliko jednostavnih koraka prateći ovu poveznicu.
- Konfigurirajte ne-root korisnika sa sudo privilegijama na svom poslužitelju. Zatim se prijavite s tim korisnikom.
- Konfigurirajte osnovni vatrozid prateći korake u našem vodiču o Postavljanju vatrozida s FirewallD-om na CentOS 7.
Korak 1: Instalacija Apache HTTP poslužitelja
Apache možete pronaći unutar zadane CentOS riznice. Stoga je instalacija jednostavna pomoću yum upravitelja paketima. Iz odjeljka s preduvjetima, morate biti prijavljeni s ne-root korisnikom. Pokrenite sljedeću naredbu u svom terminalu kako biste ažurirali lokalni indeks paketa Apache httpd:
|
1 |
sudo yum update httpd |
Nakon što se paketi ažuriraju, unesite sljedeću naredbu za instalaciju Apachea:
|
1 |
sudo yum install httpd |
Potvrdite instalaciju i pričekajte da yum instalira Apache i njegove potrebne ovisnosti.
Ako ste slijedili korake u vodiču o Postavljanju vatrozida s FirewallD-om na CentOS 7 i omogućili vatrozid za port 80, onda ste spremni. Firewalld je upravitelj vatrozida za CentOS. U suprotnom, možete omogućiti firewalld-ovu http (port 80) uslugu unosom sljedeće naredbe:
|
1 |
sudo firewall-cmd --permanent --add-service=http |
Ako planirate posluživati promet putem sigurnog HTTPS-a, tada možete omogućiti firewalld-ovu https (port 443) uslugu unosom sljedeće naredbe:
|
1 |
sudo firewall-cmd --permanent --add-service=https |
Na kraju, morate ponovno učitati firewalld kako bi promjene stupile na snagu. Evo naredbe za ponovno učitavanje:
|
1 |
sudo firewall-cmd –reload |
U ovom trenutku ste instalirali i konfigurirali Apache za posluživanje prometa preko HTTP-a ili HTTPS-a, ovisno o tome jeste li pokrenuli gornje naredbe.
Korak 2: Potvrda da Apache web poslužitelj radi
U CentOS-u se Apache proces ne pokreće automatski nakon instalacije. Za ručno pokretanje Apachea unesite sljedeću naredbu:
|
1 |
sudo systemctl start httpd |
Da biste provjerili je li usluga uspješno pokrenuta, provjerite status unosom sljedeće naredbe:
|
1 |
sudo systemctl status httpd |
Ako usluga radi, trebali biste vidjeti izlaz sličan snimci zaslona u nastavku. Obratite pozornost na aktivni status:

Izlaz pokazuje da je usluga uspješno pokrenuta i da radi. Zatim moramo testirati može li Apache poslužiti stranicu korisnicima interneta. Apache dolazi sa zadanom stranicom koju možete koristiti za testiranje može li se vašem poslužitelju pristupiti putem interneta.
Morat ćete pronaći javnu IP adresu svog poslužitelja ako je već nemate. Ovu IP adresu koristit ćete u adresnoj traci preglednika za traženje zadane Apache web stranice. Mrežne adrese računala možete prikazati unosom sljedeće naredbe:
|
1 |
hostname –I |
S popisa adresa koje dobijete, možete isprobati svaku u svom pregledniku kako biste potvrdili da rade. Opcionalno, možete koristiti curl da biste dobili svoju IP adresu s icanhazip.com. Naredba u nastavku prikazuje vašu javnu IP adresu kako se vidi s računala na drugoj internetskoj lokaciji:
|
1 |
curl -4 icanhazip.com |
Nakon što dobijete javnu IP adresu svog poslužitelja, kopirajte je i zalijepite u adresnu traku svog preglednika:
|
1 |
http://your_server_public_ip |
Vaš bi preglednik trebao učitati zadanu CentOS 7 Apache web stranicu:

Ako ste uspjeli učitati zadanu Apache web stranicu, to znači da vaš poslužitelj radi ispravno. Ako se pomaknete prema dolje, možete vidjeti neke osnovne informacije o Apache datotekama i lokacijama direktorija. S instaliranom uslugom koja ispravno radi, trebali biste moći koristiti razne systemctl naredbe za upravljanje uslugom.
Korak 3: Upravljanje uslugom Apache
U ovom odjeljku pokazat ćemo vam neke osnovne naredbe za upravljanje Apacheom. Evo naredbe koja zaustavlja web poslužitelj:
|
1 |
sudo systemctl stop httpd |
Evo naredbe za pokretanje web poslužitelja:
|
1 |
sudo systemctl start httpd |
Zatim, ovo je naredba za ponovno pokretanje web poslužitelja (zaustavljanje i pokretanje):
|
1 |
sudo systemctl restart httpd |
Nakon ovoga, pokazat ćemo vam naredbu za ponovno učitavanje usluge Apache. Ova je naredba potrebna kada jednostavno unosite promjene u konfiguraciju. Ponovnim učitavanjem, Apache proces će primijeniti promjene konfiguracije bez prekidanja veza, kao što bi to bio slučaj da ste ga ponovno pokrenuli:
|
1 |
sudo systemctl reload httpd |
Prema zadanim konfiguracijama, Apache se automatski pokreće prilikom pokretanja poslužitelja. Ako želite promijeniti ovo ponašanje, evo naredbe za onemogućavanje pokretanja usluge pri pokretanju sustava:
|
1 |
sudo systemctl disable httpd |
Za ponovno omogućavanje pokretanja usluge pri pokretanju sustava, unesite sljedeću naredbu:
|
1 |
sudo systemctl enable httpd |
Korak 4: Postavljanje Apache virtualnih hostova
Prema zadanim postavkama, Apache je konfiguriran za ugošćavanje i posluživanje jedne web stranice. U većini slučajeva željet ćete da vaš web poslužitelj poslužuje i ugošćuje više web stranica. Na primjer, možda imate poddomene ili želite postaviti stranicu bloga za glavnu web stranicu vaše tvrtke/organizacije. Ovdje na scenu stupaju Apache virtualni hostovi. Apache virtualni hostovi omogućuju vam konfiguriranje web poslužitelja za posluživanje više web stranica. Apache virtualni hostovi ekvivalent su blokova poslužitelja u Nginx poslužitelju.
Za ovaj vodič pokazat ćemo vam kako stvoriti virtualni host pomoću example.com kao naše domene. Naravno, domena example.com neće raditi na internetu, pa biste je trebali zamijeniti svojom stvarnom domenom – koraci su isti.
Kada instalirate Apache na CentOS, on instalira jedan virtualni host koji je konfiguriran za posluživanje sadržaja iz /var/www/html direktorija. Ovaj dizajn dobro funkcionira ako ugošćujete jednu stranicu. Međutim, želimo moći ugošćavati više stranica. Ostavit ćemo zadani /var/www/html direktorij i umjesto toga stvoriti drugi direktorij za domenu example.com unutar /var/www lokacije. Razlog za ostavljanje zadanog direktorija je taj što se on poslužuje kada se zahtjevi klijenata ne podudaraju ni s jednom drugom stranicom koju ste konfigurirali s virtualnim hostovima. Štoviše, ako želite onemogućiti svoje stvorene virtualne hostove, zadani i dalje poslužuje promet.
Prvo stvorite direktorij unutar /var/www za naziv vaše domene. Slobodni ste odabrati naziv po svom izboru. Međutim, preporučuje se odabrati naziv sličan vašoj domeni radi lakšeg pamćenja kada stvarate conf datoteku virtualnog hosta. Unesite sljedeću naredbu za stvaranje direktorija example:
|
1 |
sudo mkdir -p /var/www/example |
Unesite sljedeću naredbu za stvaranje dodatne mape koja će sadržavati zapisničke datoteke za web stranicu:
|
1 |
sudo mkdir -p /var/www/example/log |
Nakon što su direktoriji vaše web stranice postavljeni, dodijelite vlasništvo nad direktorijem pomoću $USER varijable okruženja pomoću sljedeće naredbe:
|
1 |
sudo chown -R $USER:$USER /var/www/example |
Pokrenite sljedeću naredbu kako biste osigurali da vaš web korijenski direktorij ima zadana dopuštenja:
|
1 |
sudo chmod -R 755 /var/www |
Sada stvorite jednostavnu index.html stranicu pomoću nano-a unutar example direktorija unosom sljedeće naredbe:
|
1 |
sudo nano /var/www/example/index.html |
U nano uređivaču dodajte sljedeći isječak HTML koda:
|
1 2 3 4 5 6 7 8 |
<html> <head> <title>Dobrodošli na Example.com!</title> </head> <body> <h1>Ako možete vidjeti ovu poruku to, to znači <em>example.com</em> virtual host je aktivan!</h1> </body> </html> |
Kada završite, spremite datoteku pritiskom na Ctrl O i pritisnite ENTER. Sada možete zatvoriti uređivač pritiskom na Ctrl X.
Do sada imamo direktorij vaše web stranice i osnovnu web stranicu za testiranje virtualnog hosta. Sljedeće, želimo stvoriti konfiguracijske datoteke virtualnog hosta. Datoteke virtualnog hosta specificiraju konfiguracije različitih web stranica koje želite ugostiti na jednom Apache poslužitelju. One usmjeravaju zahtjeve za postavljeni naziv domene u njegov specifični direktorij.
Datoteke virtualnog hosta pohranjene su u direktoriju /etc/httpd/sites-available. Aktivirane datoteke virtualnog hosta su simbolički povezane iz /etc/httpd/sites-available direktorija u /etc/httpd/sites-enabled direktorij. Ova dva direktorija se ne stvaraju prema zadanim postavkama u CentOS-u, pa ih morate sami stvoriti. Unesite sljedeću naredbu za stvaranje direktorija:
|
1 |
sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled |
Nakon što su direktoriji na mjestu, uputite Apache da traži virtualne hostove u direktoriju sites-enabled. To ćete učiniti izmjenom glavne konfiguracijske datoteke za Apache. Unesite sljedeću naredbu za otvaranje datoteke u nano uređivaču:
|
1 |
sudo nano /etc/httpd/conf/httpd.conf |
Želimo dodati redak koji će uputiti Apache da traži dodatne konfiguracijske datoteke u neobaveznom direktoriju. Pomaknite se na dno datoteke i dodajte sljedeći redak na kraj:
|
1 |
IncludeOptional sites-enabled/*.conf |
Spremite datoteku pritiskom na Ctrl O i pritisnite ENTER. Sada možete zatvoriti uređivač pritiskom na Ctrl X. Sljedeći korak je stvaranje datoteke virtualnog hosta unutar direktorija sites-available. Unesite sljedeću naredbu za stvaranje i otvaranje nove datoteke pomoću nano uređivača:
|
1 |
sudo nano /etc/httpd/sites-available/example.conf |
U otvorenoj datoteci dodajte sljedeći konfiguracijski blok. Ne zaboravite zamijeniti naš example.com s vašim stvarnim nazivom domene, a ako ste koristili drugačiji naziv direktorija u /var/www/example, također to ažurirajte na odgovarajući način:
|
1 2 3 4 5 6 7 |
<VirtualHost *:80> ServerName www.example.com ServerAlias example.com DocumentRoot /var/www/example ErrorLog /var/www/example/log/error.log CustomLog /var/www/example/log/requests.log combined </VirtualHost> |
Kao što vidite, naveli smo naziv domene i korijenski direktorij dokumenata gdje će se nalaziti datoteke koje se poslužuju za ovu domenu. Također smo naveli lokaciju dnevnika pogrešaka – to će vam pomoći tijekom rješavanja problema s poslužiteljem.
Nakon što imamo našu datoteku virtualnog hosta unutar sites-available direktorija, sljedeći korak je omogućiti datoteku stvaranjem simboličke veze na sites-enabled direktorij. Unesite sljedeću naredbu za stvaranje simboličke veze:
|
1 |
sudo ln -s /etc/httpd/sites-available/example.conf /etc/httpd/sites-enabled/example.conf |
Ako ste pratili korake do ove točke, vaš bi virtualni poslužitelj sada trebao biti spreman za posluživanje sadržaja vaše web stranice. Međutim, postoji još jedna provjera koju morate konfigurirati prije nego što virtualni poslužitelji počnu raditi. To ćemo pokriti u nastavku.
Korak 5: Prilagodba SELinux dopuštenja za omogućavanje virtualnih poslužitelja
Linux distribucije uključujući Fedora, RHEL i CentOS dolaze sa SELinuxom prema zadanim postavkama. SELinux (Security Enhanced Linux) je sigurnosna arhitektura za Linux sustave koja ograničava i definira kako bi poslužitelj trebao obrađivati zahtjeve te kako bi korisnici trebali komunicirati s utičnicama, mrežnim priključcima i ključnim direktorijima.
Izvan okvira, SELinux će raditi sa zadanom Apache konfiguracijom. Međutim, s prilagođenim virtualnim poslužiteljem koji ste izradili, uključujući prilagođeni direktorij dnevnika, pojavit će se pogreška usluge kada pokušate ponovno pokrenuti Apache uslugu. Rješenje je izmijeniti SELinux pravila kako bi se Apache usluzi omogućilo pisanje u potrebne datoteke.
SELinux čini CentOS vrlo sigurnim poslužiteljem. Stoga ne preporučujemo njegovo potpuno onemogućavanje. S obzirom na to da vam SELinux omogućuje prilagodbu razine sigurnosti na različite načine, preporučuje se da ažurirate ili postavite pravila samo na temelju potreba vašeg okruženja.
Imate dvije mogućnosti ažuriranja Apache pravila: ili Univerzalno ili po određenom direktoriju. Ažuriranje pravila specifičnih za određeni direktorij je sigurnije. Stoga je to preporučena opcija.
-
Univerzalno ažuriranje Apache pravila
Možete univerzalno izmijeniti Apache pravilo, što će naložiti SELinuxu da sve Apache procese tretira identično, koristeći httpd_unified Boolean. Imajte na umu da vam univerzalna izmjena Apache pravila neće pružiti istu razinu kontrole kao postavljanje svakog direktorija na specifičan način. Međutim, to je praktičnije kada je u pitanju održavanje. Pokrenite sljedeću naredbu za univerzalno ažuriranje Apache pravila:
|
1 |
sudo setsebool -P httpd_unified 1 |
Definirajmo što rade vrijednosti u ovoj naredbi:
- setsebool – ažurira SELinux boolean vrijednosti.
- -P oznaka – ažurira vrijednost pri pokretanju sustava tako da će ova promjena ostati aktivna i nakon ponovnog pokretanja.
- httpd_unified – boolean vrijednost koja će naložiti SELinuxu da sve Apache procese tretira kao istu vrstu. Korištenje vrijednosti 1 to omogućuje.
-
Prilagodba Apache pravila na direktoriju
Ako želite veću kontrolu nad direktorijima, onda je prilagodba Apache pravila po direktoriju pravi put. Međutim, to donosi dodatni napor jer zahtijeva više održavanja. To je zato što pravilo nije globalno. Stoga ćete morati ručno postaviti vrstu konteksta za sve nove direktorije dnevnika koje navedete u konfiguracijskim datotekama virtualnog poslužitelja.
Prije ažuriranja pravila, najprije provjerite vrstu konteksta koju je SELinux dodijelio /var/www/example/log direktoriju pomoću sljedeće naredbe:
|
1 |
sudo ls -dZ /var/www/example/log/ |
Naredba će ispisati nešto poput sljedećeg, što je zapravo SELinux kontekst direktorija:
|
1 |
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/example/log/ |
httpd_sys_content_t je trenutni kontekst, koji govori SELinuxu da je Apache procesu dopušteno samo čitanje datoteka stvorenih u ovom direktoriju. Budući da iz naših konfiguracija virtualnog poslužitelja želimo da Apache piše u datoteke dnevnika u /var/www/example/log direktoriju, izmijenit ćemo ovo pravilo kako bismo omogućili Apacheu generiranje i dodavanje u datoteke dnevnika web aplikacije. Kontekst koji to omogućuje je httpd_log_t. Evo naredbe za ažuriranje konteksta:
|
1 |
sudo semanage fcontext -a -t httpd_log_t "/var/www/example/log(/.*)?" |
Kako biste primijenili promjene iz gornje naredbe i osigurali da ostanu aktivne i nakon ponovnog pokretanja, izvršite sljedeću naredbu:
|
1 |
sudo restorecon -R -v /var/www/example/log |
Definirajmo što ova naredba radi:
- restorecon – primjenjuje promjene i osigurava da one opstanu nakon ponovnog pokretanja sustava.
- zastavica -R – pokrenut će naredbu rekurzivno, ažurirajući sve postojeće datoteke kako bi koristile novi kontekst.
- zastavica -v – ispisuje promjene konteksta nakon što se naredba izvrši. Ispisat će nešto poput ovoga:
|
1 2 |
Izlaz: restorecon reset /var/www/example/log context unconfined_u:object_r:httpd_sys_content_t:s0->unconfined_u:object_r:httpd_log_t:s0 |
|
1 |
sudo ls -dZ /var/www/example/log/ |
|
1 |
drwxr-xr-x. root root unconfined_u:object_r:httpd_log_t:s0 /var/www/example.com/log |
Korak 6: Testiranje konfiguracije virtualnog hosta
Prije nego što možemo testirati virtualni host, morat ćete ponovno pokrenuti Apache usluge. Evo naredbe za to:
|
1 |
sudo systemctl restart httpd |
Zatim izlistajte sadržaj log direktorija pomoću sljedeće naredbe:
|
1 |
ls -lZ /var/www/example/log |
Trebalo bi se prikazati nešto poput ovoga, što pokazuje da je Apache stvorio log datoteke:

Ako ste pratili korake do ove točke, Apache bi sada trebao moći posluživati oglednu HTML stranicu kada posjetite naziv svoje domene kako je definirano u datoteci vašeg virtualnog hosta. Ako želite, možete ponoviti korake 4 i 5 kako biste postavili dodatne domene i na odgovarajući način ažurirali njihova SELinux dopuštenja.
Zaključak
U ovom smo vodiču instalirali Apache, naučili kako ažurirati SELinux pravila kako bismo Apacheu omogućili pisanje u prilagođene log datoteke i na kraju testirali našu konfiguraciju kako bismo potvrdili da radi ispravno. Koristeći ovo znanje, trebali biste moći nadograditi ga i posluživati bolje aplikacije s bogatijim iskustvima.
Ako želite istražiti cjeloviti web stog, pogledajte naš vodič o tome kako instalirati LAMP stog na CentOS 7.
Sretno s radom!
Komentari
Još nema komentara. Budite prvi.