Stvaranje Apache virtualnih hostova s opcijama Omogući/Onemogući Vhosts u RHEL/CentOS 7.0
Virtualni hosting omogućuje Apache Weberveru posluživanje različitih sadržaja na temelju IP adrese, naziva hosta ili korištenog broja porta. Ovaj će vodič koristiti pristup sličan Debianu za omogućavanje i upravljanje virtualnim hostovima na Red Hat Enterprise Linux/CentOS 7.0 stvaranjem dva direktorija na /etc/httpd/ stazi, što će zadržite sve omogućene i onemogućene konfiguracije datoteka web stranica – sites-available i sites-enabled, te dvije vrste skripti koje djeluju kao naredbe, jednu koja omogućuje i drugu koja onemogućuje navedene virtualne domaćini – a2ensite i a2dissite. Ovaj pristup ima neke prednosti jer se morate petljati s httpd konfiguracijskom datotekom, a svaki virtualni host ima vlastitu konfiguracijsku datoteku koja se može pronaći na jednom mjestu – omogućeni hostovi samo su simboličke veze – koje čine proces omogućavanja, onemogućavanja, stvaranja ili njihovo brisanje vrlo upravljivo.
Zahtjevi
- LAMP Osnovna instalacija na RHEL/CentOS 7.0
Stvorite i upravljajte Apache virtualnim hostovima u RHEL/CentOS 7
1. Za početak, započnite unosom putanje /etc/httpd/, stvorite direktorije dostupnih i omogućenih web-mjesta i uredite Apache httpd.conf da biste primijenili novu omogućenu lokaciju web-mjesta.
cd /etc/httpd/
mkdir sites-available sites-enabled
nano conf/httpd.conf
2. Datoteci httpd.conf dodajte sljedeći redak direktive na dnu datoteke, što će natjerati Apache da čita i analizira sve datoteke koje se nalaze na /etc/ httpd/sites-enabled/ završava u ekstenziji .conf.
IncludeOptional sites-enabled/*.conf
3. Na sljedećem koraku stvorite novi virtualni host na sites-available lokaciji koristeći opisni naziv – u ovom slučaju koristio sam rheltest.lan.conf – i koristite sljedeću datoteku kao predložak.
nano /etc/httpd/sites-available/rheltest.lan.conf
Koristite ovu konfiguraciju kao vodič.
<VirtualHost *:80>
ServerName rheltest.lan
DocumentRoot "/var/www/rheltest.lan"
<Directory "/var/www/rheltest.lan">
Options Indexes FollowSymLinks MultiViews
# AllowOverride controls what directives may be placed in .htaccess files.
AllowOverride All
# Controls who can get stuff from this server file
Order allow,deny
Allow from all
</Directory>
<IfModule mpm_peruser_module>
ServerEnvironment apache apache
</IfModule>
ErrorLog /var/log/httpd/rheltest.lan-error.log
CustomLog /var/log/httpd/rheltest.lan-access.log combined
</VirtualHost>
4. Ako ste promijenili lokaciju DocumentRoot na vašem virtualnom hostu sa zadane /var/www/html na drugu stazu, svakako stvorite i ovu stazu .
mkdir -p /var/www/rheltest.lan
NAPOMENA: Također se uvjerite da je host ServerName važeći DNS zapis ili da je dodan u datoteku hostova vašeg lokalnog računala, odakle planirate posjetiti web stranicu.
5. Sada je vrijeme za stvaranje bash skripti a2ensite i a2dissite na izvršnoj sistemskoj stazi – u ovom slučaju to je /usr/local /bin/ – ali
možete koristiti bilo koju izvršnu stazu koju sistemska varijabla ` PATH ispiše.
Stvorite a2ensite skriptu
Stvorite sljedeću datoteku pomoću uređivača po svom izboru.
nano /usr/local/bin/a2ensite
Dodajte mu sljedeću skriptu.
#!/bin/bash
if test -d /etc/httpd/sites-available && test -d /etc/httpd/sites-enabled ; then
echo "-----------------------------------------------"
else
mkdir /etc/httpd/sites-available
mkdir /etc/httpd/sites-enabled
fi
avail=/etc/httpd/sites-available/$1.conf
enabled=/etc/httpd/sites-enabled/
site=`ls /etc/httpd/sites-available/`
if [ "$#" != "1" ]; then
echo "Use script: a2ensite virtual_site"
echo -e "\nAvailable virtual hosts:\n$site"
exit 0
else
if test -e $avail; then
sudo ln -s $avail $enabled
else
echo -e "$avail virtual host does not exist! Please create one!\n$site"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Success!! Now restart Apache server: sudo systemctl restart httpd"
else
echo -e "Virtual host $avail does not exist!\nPlease see available virtual hosts:\n$site"
exit 0
fi
fi
Napravite a2dissite skriptu
Stvorite sljedeću datoteku pomoću uređivača po svom izboru.
nano /usr/local/bin/a2dissite
Dodajte cijelu sljedeću skriptu u datoteku.
#!/bin/bash
avail=/etc/httpd/sites-enabled/$1.conf
enabled=/etc/httpd/sites-enabled
site=`ls /etc/httpd/sites-enabled/`
if [ "$#" != "1" ]; then
echo "Use script: a2dissite virtual_site"
echo -e "\nAvailable virtual hosts: \n$site"
exit 0
else
if test -e $avail; then
sudo rm $avail
else
echo -e "$avail virtual host does not exist! Exiting!"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Error!! Could not remove $avail virtual host!"
else
echo -e "Success! $avail has been removed!\nPlease restart Apache: sudo systemctl restart httpd"
exit 0
fi
fi
6. Nakon što su obje datoteke skripte stvorene, provjerite jesu li izvršne i počnite ih koristiti za omogućavanje ili onemogućavanje virtualnih hostova dodavanjem naziva vhosta kao parametar naredbe.
chmod +x /usr/local/bin/a2*
a2ensite vhost_name
a2disite vhost_name
7. Da biste ga testirali, omogućite virtualni host koji je ranije stvoren, ponovno pokrenite Apache uslugu i usmjerite preglednik na novi virtualni host – u ovom slučaju http://rheltest.lan.
a2ensite rheltest.lan
systemctl restart httpd
To je to! Sada možete koristiti bash skripte a2eniste i a2dissite kao sistemske naredbe za upravljanje Apache Vhosts datotekom na RHEL/CentOS 7.0.