Vyhledávání na webu

Vytváření virtuálních hostitelů Apache s možnostmi povolit/zakázat Vhosts v RHEL/CentOS 7.0


Virtuální hostování umožňuje Apache Weberver poskytovat různý obsah na základě IP adresy, názvu hostitele nebo použitého čísla portu. Tato příručka bude používat přístup podobný Debianu k povolení a správě virtuálních hostitelů na Red Hat Enterprise Linux/CentOS 7.0 vytvořením dvou adresářů na cestě /etc/httpd/, které budou ponechat všechny povolené a zakázané konfigurace souborů webových stránek – sites-available a sites-enabled a dva typy skriptů, které fungují jako příkazy, jeden, který povolí a druhý zakáže zadané virtuální hostitelé – a2ensite a a2dissite. Tento přístup má určité výhody, protože jste se museli potýkat s konfiguračním souborem httpd a každý virtuální hostitel má svůj vlastní konfigurační soubor, který lze nalézt na jediném místě – povolení hostitelé jsou pouze symbolické odkazy – které umožňují proces povolení, zakázání, vytváření nebo jejich odstranění je velmi zvládnutelné.

Požadavky

  1. Základní instalace LAMP na RHEL/CentOS 7.0

Vytvářejte a spravujte virtuální hostitele Apache v RHEL/CentOS 7

1. Začněte zadáním cesty /etc/httpd/, vytvořte adresáře s dostupnými weby a adresáře s povolenými weby a upravte httpd.conf Apache b> soubor pro použití nového umístění povolených webových stránek.

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

2. Do souboru httpd.conf přidejte na konec souboru následující řádek direktivy, který umožní Apache číst a analyzovat všechny soubory umístěné v /etc/ httpd/sites-enabled/ skončilo příponou .conf.

IncludeOptional sites-enabled/*.conf

3. V dalším kroku vytvořte nového virtuálního hostitele na místech dostupných pomocí popisného názvu – v tomto případě jsem použil rheltest.lan.conf – a použijte následující soubor jako šablonu.

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

Tuto konfiguraci použijte jako vodítko.

<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. Pokud jste na svém virtuálním hostiteli změnili umístění DocumentRoot z výchozí /var/www/html na jinou cestu, nezapomeňte vytvořit také tuto cestu .

mkdir -p /var/www/rheltest.lan

POZNÁMKA: Také se ujistěte, že hostitel ServerName je platným záznamem DNS nebo je přidán do souboru hostitelů vašich místních počítačů, odkud chcete web navštívit.

5. Nyní je čas vytvořit bash skripty a2ensite a a2dissite na spustitelné systémové cestě – v tomto případě je to /usr/local /bin/ – ale
můžete použít libovolnou cestu ke spustitelnému souboru, která je výstupem systémové proměnné ` PATH.

Vytvořte skript a2ensite

Vytvořte následující soubor s vámi zvoleným editorem.

nano /usr/local/bin/a2ensite

Přidejte k němu následující 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

Vytvořte skript a2dissite

Vytvořte následující soubor s vámi zvoleným editorem.

nano /usr/local/bin/a2dissite

Přidejte celý následující skript do souboru.

#!/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. Po vytvoření obou souborů skriptů se ujistěte, že jsou spustitelné, a začněte je používat k aktivaci nebo deaktivaci virtuálních hostitelů přidáním názvu vhost jako parametr příkazu.

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

7. Chcete-li to otestovat, povolte dříve vytvořený virtuální hostitel, restartujte službu Apache a přesměrujte prohlížeč na nového virtuálního hostitele – v tomto případě http://rheltest.lan.

a2ensite rheltest.lan
systemctl restart httpd

A je to! Nyní můžete použít bash skripty a2eniste a a2dissite jako systémové příkazy pro správu souboru Apache Vhosts na RHEL/CentOS 7.0.