Настройка виртуальных хостов (опционально)
Apache позволяет запустить на одной машине несколько веб-сайтов — при этом данные каждого сайта будут лежать в разных директориях. Для этого используются конфигурационные файлы — виртуальные хосты.
Допустим, мы хотим разместить на одном сервере два сайта. Сконфигурируем Apache.
Создание директорий
Размещать файлы виртуальных хостов будем внутри директории /var/www/. Для каждого хоста создадим новую отдельную директорию:
sudo mkdir -p /var/www/first_IP
sudo mkdir -p /var/www/second_IP
Обратите внимание, что вместо IP-адреса можно использовать и доменное имя.
Предоставление прав
Сейчас права доступа к директориям есть только у root-пользователя. Настроим права всем пользователям системы, используя переменную среды $USER:
sudo chown -R $USER:$USER /var/www/first_IP
sudo chown -R $USER:$USER /var/www/second_IP
Откроем пользователю доступ на чтение, редактирование и запуск файлов в директории /var/www:
sudo chmod -R 755 /var/www
Создание страниц для тестирования
В дальнейшем нам нужно будет проверить, правильно ли настроены виртуальные хосты. Для этого можно создать для каждого IP-адреса (домена) HTML-страницы, которые будут открываться в браузере при вводе соответствующего IP или домена, например, главные страницы index.html.
Создадим страницу для первого IP:
sudo nano /var/www/first_IP/index.html
Добавим на страницу текст:
<html>
<head>
<title>First IP</title>
</head>
<body>
<h1>Wow! First Site works!</h1>
</body>
</html>
Сохраним и закроем файл.
Выполним то же самое и для второго сайта:
sudo nano /var/www/second_IP/index.html
Добавим содержимое:
<html>
<head>
<title>Second IP</title>
</head>
<body>
<h1>Wow! Second Site works!</h1>
</body>
</html>
Создание виртуальных хостов
По умолчанию в Apache используется виртуальный хост 000-default.conf. Этот файл мы будем использовать как шаблон для создания собственных виртуальных хостов.
Для каждого сайта конфигурационные файлы (виртуальные хосты) хранятся в директории /etc/apache2/sites-available/. Скопируем содержимое виртуального хоста, который используется по умолчанию, в новый файл — мы будем использовать его для настройки первого сайта:
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/first_IP.conf
Откроем новый конфигурационный файл первого сайта:
sudo nano /etc/apache2/sites-available/first_IP.conf
Изменим значения в файле:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName first_IP
DocumentRoot /var/www/first_IP
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Где:
ServerAdmin — электронная почта администратора сайта;
ServerName — IP-адрес сайта или его доменное имя;
DocumentRoot — директория, в которой хранится конфигурационный файл (виртуальный хост).
Сохраним и закроем файл.
Подобным образом создадим конфигурационный файл для второго сайта:
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/second_IP.conf
sudo nano /etc/apache2/sites-available/second_IP.conf
Содержимое конфигурационного файла /etc/apache2/sites-available/second_IP.conf:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName second_IP
DocumentRoot /var/www/second_IP
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Активация виртуальных хостов
Активируем виртуальные хосты с помощью a2ensite:
sudo a2ensite first_IP.conf
sudo a2ensite second_IP.conf
Отключим виртуальный хост, который создается по умолчанию:
sudo a2dissite 000-default.conf
Проверим, нет ли ошибок в конфигурационных файлах:
sudo apache2ctl configtest
Если ошибки отсутствуют, то получим результат:
Syntax OK
Перезапустим Apache, чтобы активировать все изменения:
sudo systemctl restart apache2
Теперь Apache должен обслуживать сайты, IP-адреса или домены которых мы прописали в виртуальных хостах. Проверим работу: перейдем в браузере на сайты — должны появиться созданные индексные страницы: