Wyszukiwanie w witrynie

Tworzenie wirtualnych hostów Apache z opcjami włączania/wyłączania Vhostów w RHEL/CentOS 7.0


Hosting wirtualny umożliwia Apache Weberver udostępnianie różnych treści w oparciu o adres IP, nazwę hosta lub używany numer portu. W tym przewodniku będzie stosowane podejście podobne do Debiana przy włączaniu i zarządzaniu wirtualnymi hostami w Red Hat Enterprise Linux/CentOS 7.0 poprzez utworzenie dwóch katalogów na ścieżce /etc/httpd/, która będzie zachowaj wszystkie włączone i wyłączone konfiguracje plików witryn internetowych – dostępne witryny i włączone witryny oraz dwa typy skryptów działających jako polecenia, jeden włączający i drugi wyłączający określone wirtualne hosty – a2ensite i a2dissite. To podejście ma pewne zalety, ponieważ trzeba kombinować z plikiem konfiguracyjnym httpd, a każdy wirtualny host ma swój własny plik konfiguracyjny, który można znaleźć w jednym miejscu – włączone hosty to po prostu dowiązania symboliczne – które sprawiają, że proces włączania, wyłączania, tworzenia lub usuwanie ich jest bardzo łatwe.

Wymagania

  1. Podstawowa instalacja LAMP w systemie RHEL/CentOS 7.0

Twórz wirtualne hosty Apache i zarządzaj nimi w RHEL/CentOS 7

1. Na początek zacznij od wpisania ścieżki /etc/httpd/, utwórz katalogi z dostępnymi i obsługującymi witryny katalogami oraz edytuj plik Apache httpd.conf, aby zastosować nową włączoną lokalizację witryn internetowych.

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

2. W pliku httpd.conf dodaj następującą linię dyrektywy na dole pliku, która sprawi, że Apache odczyta i przeanalizuje wszystkie pliki znajdujące się w /etc/ httpd/sites-enabled/ zakończył się rozszerzeniem .conf.

IncludeOptional sites-enabled/*.conf

3. W następnym kroku utwórz nowego hosta wirtualnego w lokalizacji dostępnej w witrynach, używając nazwy opisowej – w tym przypadku użyłem pliku rheltest.lan.conf – i użyj poniższego pliku jako szablonu.

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

Użyj tej konfiguracji jako wskazówki.

<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. Jeśli zmieniłeś lokalizację DocumentRoot na swoim wirtualnym hoście z domyślnej /var/www/html na inną ścieżkę, upewnij się, że również utworzyłeś tę ścieżkę .

mkdir -p /var/www/rheltest.lan

UWAGA: Upewnij się także, że nazwa_serwera hosta jest prawidłowym rekordem DNS lub jest dodana do pliku hostów komputerów lokalnych, z których planujesz odwiedzić witrynę.

5. Teraz czas na utworzenie skryptów bash a2ensite i a2dissite w wykonywalnej ścieżce systemowej – w tym przypadku jest to /usr/local /bin/ – ale
możesz użyć dowolnej ścieżki wykonywalnej, którą zwraca zmienna systemowa &96 PATH.

Utwórz skrypt a2ensite

Utwórz następujący plik z wybranym edytorem.

nano /usr/local/bin/a2ensite

Dodaj do niego następujący skrypt.

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

Utwórz skrypt a2dissite

Utwórz następujący plik z wybranym edytorem.

nano /usr/local/bin/a2dissite

Dodaj cały następujący skrypt do pliku.

#!/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 utworzeniu obu plików skryptów upewnij się, że są one wykonywalne i zacznij ich używać do włączania lub wyłączania hostów wirtualnych, dodając nazwę vhosta jako parametr polecenia.

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

7. Aby to przetestować, włącz utworzony wcześniej wirtualny host, zrestartuj usługę Apache i skieruj przeglądarkę na nowy wirtualny host – w tym przypadku http://rheltest.lan.

a2ensite rheltest.lan
systemctl restart httpd

Otóż to! Teraz możesz używać skryptów bash a2eniste i a2dissite jako poleceń systemowych do zarządzania plikiem Apache Vhosts w systemie RHEL/CentOS 7.0.