Конфигурации виртуальных хостов (virtual hosts) в Apache2 позволяют одному веб-серверу обслуживать несколько веб-сайтов. Каждый виртуальный хост может иметь свою собственную конфигурацию, включая настройки доменного имени, каталога документов, логирования и других параметров. Это удобно для хостинга множества сайтов на одном сервере. ### Примеры конфигураций виртуальных хостов 1. **Виртуальный хост для простого сайта** - Пример конфигурационного файла для сайта `example.com`: ```apache <VirtualHost *:80> ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example.com/public_html ErrorLog ${APACHE_LOG_DIR}/example.com_error.log CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined </VirtualHost> ``` - **Объяснение**: - **ServerName**: Основное доменное имя сайта. - **ServerAlias**: Альтернативные доменные имена. - **DocumentRoot**: Каталог, где хранятся файлы сайта. - **ErrorLog**: Файл журнала ошибок для этого сайта. - **CustomLog**: Файл журнала доступа для этого сайта. 2. **Виртуальный хост для сайта с поддержкой SSL** - Пример конфигурационного файла для сайта `secure.example.com` с SSL: ```apache <VirtualHost *:443> ServerName secure.example.com DocumentRoot /var/www/secure.example.com/public_html SSLEngine on SSLCertificateFile /etc/ssl/certs/secure_example_com.crt SSLCertificateKeyFile /etc/ssl/private/secure_example_com.key ErrorLog ${APACHE_LOG_DIR}/secure_example.com_error.log CustomLog ${APACHE_LOG_DIR}/secure_example.com_access.log combined </VirtualHost> ``` - **Объяснение**: - **SSLEngine on**: Включает SSL для этого виртуального хоста. - **SSLCertificateFile**: Указывает путь к файлу сертификата SSL. - **SSLCertificateKeyFile**: Указывает путь к приватному ключу SSL. ### Управление виртуальными хостами Для управления конфигурациями виртуальных хостов используются утилиты `a2ensite` и `a2dissite`: - **Активировать виртуальный хост**: ```sh sudo a2ensite example.com.conf ``` - **Деактивировать виртуальный хост**: ```sh sudo a2dissite example.com.conf ``` ### Пример Предположим, у вас есть файл `/etc/apache2/sites-available/example.com.conf`, который содержит конфигурацию виртуального хоста для `example.com`: ```apache # /etc/apache2/sites-available/example.com.conf <VirtualHost *:80> ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example.com/public_html ErrorLog ${APACHE_LOG_DIR}/example.com_error.log CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined </VirtualHost> ``` Чтобы активировать этот виртуальный хост, выполните: ```sh sudo a2ensite example.com.conf ``` Эта команда создаст символическую ссылку в каталоге `/etc/apache2/sites-enabled/`: ```sh /etc/apache2/sites-enabled/example.com.conf -> /etc/apache2/sites-available/example.com.conf ``` Теперь при перезапуске Apache2 этот виртуальный хост будет активен. ### Перезапуск Apache2 После активации или деактивации виртуального хоста необходимо перезапустить Apache2 для применения изменений: ```sh sudo systemctl restart apache2 ``` ### Преимущества использования виртуальных хостов 1. **Множественные сайты на одном сервере**: Один сервер может обслуживать несколько доменов и сайтов. 2. **Изолированные конфигурации**: Каждый сайт может иметь свою собственную конфигурацию, что упрощает управление и настройку. 3. **Гибкость и масштабируемость**: Легко добавлять новые сайты и управлять существующими без изменения основной конфигурации сервера.