Apache разделен на блоки, которые можно настраивать и настраивать индивидуально. Эти разделы называются виртуальными хостами.
Виртуальные хосты позволяют администратору использовать один сервер для размещения множества доменов, используя один IP. Это полезно для тех, кто хочет разместить более одного веб-сайта на одном и том же VPS, и при этом никогда не указывать, что на том же сервере размещаются и другие сайты. Этот процесс может повторяться без ограничений в зависимости от нагрузки, которую может обрабатывать ваш сервер.
Для прохождения этих шагов вам понадобится:
- Пользователь без полномочий root.
- Apache установлен.
- Настройте доменные имена, чтобы они указывали на ваш VPS.
Моя конфигурация сделает виртуальные хосты для test1.com
и test2.com
. Вы должны заменить их своими доменами.
Создать каталоги
Корень документа будет установлен на отдельные каталоги в /var/www
папке. Создайте здесь каталог для обоих виртуальных хостов, например:
sudo mkdir /var/www/test1
sudo mkdir /var/www/test2
права доступа
Созданные вами каталоги принадлежат пользователю root. Вы должны изменить владельца для обычного пользователя, чтобы иметь возможность изменять файлы. $USER
это пользователь, в котором вы сейчас авторизованы.
sudo chown -R $USER:$USER /var/www/test1
sudo chown -R $USER:$USER /var/www/test2
Вам также следует изменить разрешения для общего веб-каталога и всех файлов и папок в нем.
sudo chmod -R 755 /var/www
Создать страницы для каждого виртуального хоста
Сделайте index.html
страницу для каждого сайта.
nano /var/www/test1/index.html
В этом HTML-файле вы можете разместить простой контент, просто чтобы показать, что ваша конфигурация работает. Например, мой файл выглядит следующим образом.
<html>
<head>
<title>test1</title>
</head>
<body>
<h1>test1.com virtual host !</h1>
</body>
</html>
Сохраните и закройте файл, когда вы закончите.
Теперь скопируйте этот файл на второй сайт.
cp /var/www/test1/index.html /var/www/test2/index.html
Затем вы можете открыть и изменить его.
nano /var/www/test2/index.html
<html>
<head>
<title>test2</title>
</head>
<body>
<h1>test2.com virtual host !</h1>
</body>
</html>
Сохраните и закройте этот файл, когда вы закончите.
Создавайте файлы виртуальных хостов
Файлы виртуальных хостов определяют конфигурацию наших виртуальных хостов и определяют, как веб-сервер Apache будет реагировать на различные запросы домена.
Apache поставляется с файлом виртуального хоста по умолчанию 000-default.conf
. Скопируйте этот файл и измените его для первого домена.
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/test1.conf
sudo nano /etc/apache2/sites-available/test1.conf
Файл будет выглядеть так (без комментариев):
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
</VirtualHost>
Измените ServerAdmin
директиву на электронную почту, по которой администратор сайта может получать электронные письма. Затем вам нужно добавить три директивы:
- ServerName - базовый домен для этого виртуального хоста.
- ServerAlias - определяет дополнительные имена, которые должны соответствовать базовому имени, например www.
- DocumentRoot - расположение корня документа для этого домена.
Файл виртуального хоста должен выглядеть следующим образом.
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName test1.com
ServerAlias www.test1.com
DocumentRoot /var/www/test1
</VirtualHost>
Сохраните и закройте файл.
Вы можете сделать то же самое со вторым доменом.
sudo cp /etc/apache2/sites-available/test1.conf /etc/apache2/sites-available/test2.conf
sudo nano /etc/apache2/sites-available/test2.conf
Теперь вам нужно изменить его для ссылки на ваш второй домен.
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName test2.com
ServerAlias www.test2.com
DocumentRoot /var/www/test2
</VirtualHost>
Сохраните и закройте файл, когда вы закончите.
Включить файлы виртуального хоста
a2ensite
Инструмент может быть использован для того, чтобы каждый из наших сайтов , как это:
sudo a2ensite test1.conf
sudo a2ensite test2.conf
Когда вы закончите, вам нужно перезапустить Apache, чтобы эти изменения вступили в силу:
sudo service apache2 restart
Если вы получили это сообщение:
*Restarting web server apache2
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set >the 'ServerName' directive globally to suppress this message
... не волнуйтесь, это не влияет на наши сайты.
Заключительные шаги
Теперь, когда у вас настроены виртуальные хосты, вы можете проверить их, перейдя на домены, которые вы настроили в своем веб-браузере:
- http://test1.com
- http://test2.com
Если оба этих сайта работают, вы успешно настроили два виртуальных хоста на одном сервере.