Kreiranje Apache virtualnih hostova sa opcijama za uključivanje/isključivanje Vhost-a u RHEL/CentOS 7.0


Virtualni hosting omogućava Apache Weberveru da servira različite sadržaje na osnovu IP adrese, imena hosta ili broja korištenog porta. Ovaj vodič će koristiti pristup sličan Debianu za omogućavanje i upravljanje virtualnim hostovima na Red Hat Enterprise Linux/CentOS 7.0 kreiranjem dva direktorija na /etc/httpd/ putu, koji će zadržati sve omogućene i onemogućene konfiguracije datoteka web stranice – dostupne web stranice i omogućene web stranice, te dvije vrste skripti koje djeluju kao naredbe, jedna koja omogućava i druga koja onemogućuje specificirane virtuelne hostovi – a2ensite i a2dissite. Ovaj pristup ima neke prednosti jer ste morali da se petljate sa httpd konfiguracionim fajlom i svaki virtuelni host ima svoju konfiguracionu datoteku koja se može naći na jednoj lokaciji – omogućeni hostovi su samo simboličke veze – koje čine proces omogućavanja, onemogućavanja, kreiranja ili njihovo brisanje je vrlo upravljivo.

Zahtjevi

  1. LAMP Osnovna instalacija na RHEL/CentOS 7.0

Kreirajte i upravljajte Apache virtuelnim hostovima u RHEL/CentOS 7

1. Za početak, počnite unošenjem na /etc/httpd/ putanju, kreirajte direktorije dostupnih lokacija i web lokacija i uredite Apache httpd.conf b> da biste primijenili novu omogućenu lokaciju web lokacija.

cd /etc/httpd/
mkdir sites-available sites-enabled
nano conf/httpd.conf

2. U datoteci httpd.conf dodajte sljedeću liniju direktive na dno datoteke, što će natjerati Apache da pročita i analizira sve fajlove koji se nalaze na /etc/ httpd/sites-enabled/ završava u .conf ekstenziji.

IncludeOptional sites-enabled/*.conf

3. U sljedećem koraku kreirajte novi virtuelni host na lokaciji dostupne lokacije koristeći opisno ime – 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 DocumentRoot lokaciju na vašem virtuelnom hostu sa zadane /var/www/html na drugu putanju, pobrinite se da kreirate i ovu putanju .

mkdir -p /var/www/rheltest.lan

NAPOMENA: Također se uvjerite da je host ServerName važeći DNS zapis ili da je dodat u datoteku hostova vašeg lokalnog računara, odakle planirate posjetiti web stranicu.

5. Sada je vrijeme da kreirate a2ensite i a2dissite bash skripte na izvršnoj sistemskoj putanji – u ovom slučaju je /usr/local /bin/ – ali
možete koristiti bilo koju izvršnu putanju koja ` PATH izlazi iz sistemske varijable.

Kreirajte a2ensite skriptu

Kreirajte sljedeću datoteku s vašim izborom uređivača.

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

Kreirajte a2dissite skriptu

Kreirajte sljedeću datoteku s vašim izborom uređivača.

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 kreirane, provjerite jesu li izvršne i počnite ih koristiti za omogućavanje ili onemogućavanje virtuelnih hostova dodavanjem imena vhost-a kao komandni parametar.

chmod +x /usr/local/bin/a2*
a2ensite vhost_name
a2disite vhost_name

7. Da biste ga testirali, omogućite virtuelni host koji je ranije kreiran, ponovo pokrenite Apache servis i usmerite pretraživač na novi virtuelni host – u ovom slučaju http://rheltest.lan.

a2ensite rheltest.lan
systemctl restart httpd

To je to! Sada možete koristiti a2eniste i a2dissite bash skripte kao sistemske komande za upravljanje Apache Vhosts datotekom na RHEL/CentOS 7.0.