Конфигурации виртуальных хостов (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. **Гибкость и масштабируемость**: Легко добавлять новые сайты и управлять существующими без изменения основной конфигурации сервера.