Opprette virtuelle Apache-verter med aktivere/deaktivere Vhosts-alternativer i RHEL/CentOS 7.0


Virtuell hosting lar Apache Weberver servere forskjellig innhold basert på IP-adresse, vertsnavn eller brukt portnummer. Denne veiledningen vil bruke en Debian-lignende tilnærming for å aktivere og administrere virtuelle verter på Red Hat Enterprise Linux/CentOS 7.0 ved å opprette to kataloger på /etc/httpd/-banen, som vil behold alle aktiverte og deaktiverte nettstedsfilkonfigurasjoner – sites-available og sites-enabled, og to typer skript for å fungere som kommandoer, en som aktiverer og en annen som deaktiverer spesifisert virtuell verter – a2ensite og a2dissite. Denne tilnærmingen har noen fordeler fordi du måtte rote med httpd-konfigurasjonsfilen og hver virtuelle vert har sin egen konfigurasjonsfil som kan finnes på et enkelt sted – aktiverte verter er bare symbolkoblinger – som gjør prosessen med å aktivere, deaktivere, opprette eller slette dem svært håndterlig.

  1. LAMPE Grunnleggende installasjon på RHEL/CentOS 7.0

Opprett og administrer virtuelle Apache-verter i RHEL/CentOS 7

1. For å begynne, start med å angi /etc/httpd/-banen, opprett nettsteder tilgjengelige og nettsteder-aktiverte kataloger og rediger Apache httpd.conf-filen for å bruke den nye aktivert nettstedplassering.

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

2. På httpd.conf-filen legger du til følgende direktivlinje nederst i filen, som vil få Apache til å lese og analysere alle filer som ligger på /etc/httpd/sites-enabled/ endte med utvidelsen .conf.

IncludeOptional sites-enabled/*.conf

3. På neste trinn oppretter du en ny virtuell vert på nettsteder-tilgjengelige-plassering ved å bruke et beskrivende navn – i dette tilfellet har jeg brukt rheltest.lan.conf – og bruk følgende fil som mal.

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

Bruk denne konfigurasjonen som en veiledning.

<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. Hvis du endret DocumentRoot-plassering på den virtuelle verten fra standard /var/www/html til en annen bane, sørg for at du også oppretter denne banen.

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

MERK: Forsikre deg også om at ServerName-verten er en gyldig DNS-post eller er lagt til i din lokale maskinvertsfil, hvorfra du planlegger å besøke nettstedet.

5. Nå er det på tide å lage a2ensite og a2dissite bash-skript på en kjørbar systembane – i dette tilfellet er /usr/local/bin/ – men
du kan bruke hvilken som helst kjørbar bane som PATH systemvariabler gir ut.

Lag en følgende fil med ditt valg av editor.

# nano /usr/local/bin/a2ensite

Legg til følgende 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

Lag en følgende fil med ditt valg av editor.

# nano /usr/local/bin/a2dissite

Legg til hele følgende skript til filen.

#!/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. Etter at begge skriptfilene er opprettet, kontroller at de er kjørbare og begynn å bruke dem til å aktivere eller deaktivere virtuelle verter ved å legge til vhost-navn som kommandoparameter.

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

7. For å teste det, aktiver den virtuelle verten opprettet tidligere, start Apache-tjenesten på nytt og diriger nettleseren til den nye virtuelle verten – i dette tilfellet http://rheltest.lan.

# a2ensite rheltest.lan
# systemctl restart httpd

Det er det! Nå kan du bruke a2eniste og a2dissite bash-skript som systemkommandoer for å administrere Apache Vhosts-fil på RHEL/CentOS 7.0.