Поиск по сайту:

Создание виртуальных хостов Apache с параметрами включения/отключения Vhosts в RHEL/CentOS 7.0


Виртуальный хостинг позволяет Apache Weberver обслуживать различный контент в зависимости от IP-адреса, имени хоста или номера используемого порта. В этом руководстве будет использоваться подход, подобный Debian, для включения и управления виртуальными хостами в Red Hat Enterprise Linux/CentOS 7.0 путем создания двух каталогов по пути /etc/httpd/, которые будут сохранять все включенные и отключенные конфигурации файлов веб-сайтов — доступные сайты и включенные сайты, а также два типа сценариев, которые будут действовать как команды: один включает, а другой отключает указанный виртуальный хосты – a2ensite и a2dissite. Этот подход имеет некоторые преимущества, поскольку вам не нужно возиться с файлом конфигурации httpd, и каждый виртуальный хост имеет свой собственный файл конфигурации, который можно найти в одном месте (включенные хосты — это просто символические ссылки), которые делают процесс включения, отключения, создания или удалить их очень легко.

Требования

  1. Базовая установка LAMP на RHEL/CentOS 7.0

Создание виртуальных хостов Apache и управление ими в RHEL/CentOS 7

1. Для начала введите путь /etc/httpd/, создайте каталоги, доступные для сайтов и поддерживающие сайты, и отредактируйте Apache httpd.conf для применения нового включенного местоположения веб-сайтов.

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

2. В файле httpd.conf добавьте следующую строку директивы внизу файла, которая заставит Apache читать и анализировать все файлы, расположенные в /etc/ httpd/sites-enabled/ заканчивается расширением .conf.

IncludeOptional sites-enabled/*.conf

3. На следующем шаге создайте новый виртуальный хост в доступном для сайтов месте, используя описательное имя – в данном случае я использовал rheltest.lan.conf – и используйте следующий файл в качестве шаблона.

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

Используйте эту конфигурацию в качестве руководства.

<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. Если вы изменили местоположение DocumentRoot на своем виртуальном хосте с /var/www/html по умолчанию на другой путь, обязательно создайте этот путь. .

mkdir -p /var/www/rheltest.lan

ПРИМЕЧАНИЕ. Также убедитесь, что хост ServerName является допустимой записью DNS или добавлен в файл хостов вашего локального компьютера, с которого вы планируете посетить веб-сайт.

5. Теперь пришло время создать bash-скрипты a2ensite и a2dissite по системному пути к исполняемому файлу — в данном случае это /usr/local. /bin/ – но
вы можете использовать любой путь к исполняемому файлу, который выводит системная переменная ` PATH.

Создать скрипт a2ensite

Создайте следующий файл в выбранном вами редакторе.

nano /usr/local/bin/a2ensite

Добавьте к нему следующий скрипт.

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

Создать скрипт a2dissite

Создайте следующий файл в выбранном вами редакторе.

nano /usr/local/bin/a2dissite

Добавьте в файл весь следующий скрипт.

#!/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. После создания обоих файлов сценариев убедитесь, что они являются исполняемыми, и начните использовать их для включения или отключения виртуальных хостов, добавив имя виртуального хоста. в качестве параметра команды.

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

7. Чтобы протестировать его, включите созданный ранее виртуальный хост, перезапустите службу Apache и направьте браузер на новый виртуальный хост — в данном случае http://rheltest.lan.

a2ensite rheltest.lan
systemctl restart httpd

Вот и все! Теперь вы можете использовать сценарии bash a2eniste и a2dissite в качестве системных команд для управления файлом Apache Vhosts в RHEL/CentOS 7.0.