Zoeken op website

Virtuele Apache-hosts maken met Vhosts-opties in-/uitschakelen in RHEL/CentOS 7.0


Virtuele hosting stelt Apache Weberver in staat verschillende inhoud aan te bieden op basis van IP-adres, hostnaam of gebruikt poortnummer. Deze handleiding gebruikt een Debian-achtige aanpak voor het inschakelen en beheren van virtuele hosts op Red Hat Enterprise Linux/CentOS 7.0 door twee mappen te maken op het pad /etc/httpd/, waardoor alle ingeschakelde en uitgeschakelde websitebestandsconfiguraties behouden – sites-available en sites-enabled, en twee soorten scripts die als opdrachten fungeren, een die de opgegeven virtuele inschakelt en een andere die de opgegeven virtuele hosts – a2ensite en a2dissite. Deze aanpak heeft een aantal voordelen, omdat je dan hoeft te knoeien met het httpd-configuratiebestand en elke virtuele host zijn eigen configuratiebestand heeft dat op een enkele locatie kan worden gevonden – ingeschakelde hosts zijn slechts symlinks – die het proces van inschakelen, uitschakelen, maken of het verwijderen ervan is zeer beheersbaar.

Vereisten

  1. LAMP-basisinstallatie op RHEL/CentOS 7.0

Creëer en beheer virtuele Apache-hosts in RHEL/CentOS 7

1. Om te beginnen, begin met het invoeren van het /etc/httpd/ pad, maak sites-beschikbare en sites-enabled mappen en bewerk Apache httpd.conf b> bestand om de nieuwe ingeschakelde websitelocatie toe te passen.

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

2. Voeg in het bestand httpd.conf de volgende instructieregel toe onderaan het bestand, waardoor Apache alle bestanden op /etc/ zal lezen en parseren httpd/sites-enabled/ eindigde op de extensie .conf.

IncludeOptional sites-enabled/*.conf

3. Maak bij de volgende stap een nieuwe virtuele host op sites-beschikbare locatie met een beschrijvende naam – in dit geval heb ik rheltest.lan.conf< gebruikt – en gebruik het volgende bestand als sjabloon.

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

Gebruik deze configuratie als richtlijn.

<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. Als u DocumentRoot locatie op uw virtuele host heeft gewijzigd van standaard /var/www/html naar een ander pad, zorg er dan voor dat u ook dit pad maakt .

mkdir -p /var/www/rheltest.lan

OPMERKING: Zorg er ook voor dat ServerName host een geldig DNS-record is of is toegevoegd aan het hosts-bestand van uw lokale machine, vanwaar u van plan bent de website te bezoeken.

5. Nu is het tijd om a2ensite en a2dissite bash-scripts te maken op een uitvoerbaar systeempad – in dit geval is dit /usr/local /bin/ – maar
je kunt elk uitvoerbaar pad gebruiken dat de systeemvariabele ` PATH uitvoert.

Maak een2ensite-script

Maak een volgend bestand met de editor van uw keuze.

nano /usr/local/bin/a2ensite

Voeg het volgende script eraan toe.

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

Maak een a2dissite-script

Maak een volgend bestand met de editor van uw keuze.

nano /usr/local/bin/a2dissite

Voeg het hele volgende script toe aan het bestand.

#!/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. Nadat beide scriptbestanden zijn gemaakt, zorg ervoor dat ze uitvoerbaar zijn en begin ze te gebruiken om virtuele hosts in te schakelen of uit te schakelen door de vhost-naam toe te voegen als opdrachtparameter.

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

7. Om het te testen, schakelt u de eerder gemaakte virtuele host in, start u de Apache-service opnieuw en stuurt u de browser naar de nieuwe virtuele host – in dit geval http://rheltest.lan.

a2ensite rheltest.lan
systemctl restart httpd

Dat is het! Nu kunt u a2eniste en a2dissite bash-scripts gebruiken als systeemopdrachten om het Apache Vhosts-bestand op RHEL/CentOS 7.0 te beheren.