Ustvarjanje virtualnih gostiteljev Apache z možnostmi Omogoči/Onemogoči Vhosts v RHEL/CentOS 7.0


Virtualno gostovanje omogoča Apache Weberver, da prikazuje različne vsebine glede na naslov IP, ime gostitelja ali uporabljeno številko vrat. Ta priročnik bo uporabil pristop, podoben Debianu pri omogočanju in upravljanju navideznih gostiteljev na Red Hat Enterprise Linux/CentOS 7.0 z ustvarjanjem dveh imenikov na poti /etc/httpd/, ki bo obdržati vse omogočene in onemogočene konfiguracije datotek spletnih mest - spletna mesta so na voljo in omogočena spletna mesta ter dve vrsti skriptov, ki delujejo kot ukazi, eden, ki omogoča, in drugi, ki onemogoči določene virtualne gostitelji - a2ensite in a2dissite . Ta pristop ima nekaj prednosti, ker ste se morali zapletati s konfiguracijsko datoteko httpd in vsak navidezni gostitelj ima svojo konfiguracijsko datoteko, ki jo lahko najdete na enem mestu - omogočeni gostitelji so samo simbolne povezave - ki omogočajo postopek omogočanja, onemogočanja, ustvarjanja ali brisanje jih je zelo obvladljivo.

  1. Osnovna namestitev LAMP na RHEL/CentOS 7.0

Ustvarjanje in upravljanje navideznih gostiteljev Apache v RHEL/CentOS 7

1. Za začetek začnite z vnosom poti /etc/httpd/, ustvarite imenike, ki so na voljo in omogočajo mesta, in uredite datoteko Apache httpd.conf , da uporabite novo omogočena lokacija spletnih mest.

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

2. V datoteko httpd.conf dodajte naslednjo vrstico z navodili na dnu datoteke, zaradi česar bo Apache prebral in razčlenil vse datoteke, ki se nahajajo v /etc/httpd/sites-enabled/ se je končalo v razširitvi .conf .

IncludeOptional sites-enabled/*.conf

3. V naslednjem koraku ustvarite novega navideznega gostitelja na lokacijah, ki so na voljo z opisnim imenom - v tem primeru sem uporabil rheltest.lan.conf - in uporabite naslednjo datoteko kot predlogo.

# nano /etc/httpd/sites-available/rheltest.lan.conf

Uporabite to konfiguracijo kot vodilo.

<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. Če ste na navideznem gostitelju lokacijo DocumentRoot spremenili s privzete /var/www/html na drugo pot, poskrbite, da boste tudi to pot ustvarili.

# mkdir -p /var/www/rheltest.lan

OPOMBA: Zagotovite tudi, da je gostitelj ServerName veljaven zapis DNS ali da je dodan v datoteko gostiteljev lokalnih računalnikov, od koder nameravate obiskati spletno mesto.

5. Zdaj je čas, da na izvršljivi sistemski poti ustvarite skripte bash a2ensite in a2dissite - v tem primeru je /usr/local/bin/- ampak
lahko uporabite katero koli izvršljivo pot, ki jo sistemska spremenljivka $PATH izpiše.

Ustvarite naslednjo datoteko z izbiro urejevalnika.

# nano /usr/local/bin/a2ensite

Dodajte mu naslednji skript.

#!/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

Ustvarite naslednjo datoteko z izbiro urejevalnika.

# nano /usr/local/bin/a2dissite

V datoteko dodajte celoten naslednji skript.

#!/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. Potem ko sta bili ustvarjeni obe skriptni datoteki, se prepričajte, da sta izvedljivi in jih začnite uporabljati za omogočanje ali onemogočanje navideznih gostiteljev, tako da v ukazni parameter dodate ime vhost.

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

7. Če ga želite preizkusiti, omogočite prej ustvarjeni navidezni gostitelj, znova zaženite storitev Apache in usmerite brskalnik na novega navideznega gostitelja - v tem primeru http://rheltest.lan .

# a2ensite rheltest.lan
# systemctl restart httpd

To je to! Zdaj lahko kot sistemske ukaze uporabljate bash skripti a2eniste in a2dissite bash za upravljanje datoteke Apache Vhosts na RHEL/CentOS 7.0.