Быстрая настройка виртуальных хостов Apache в Ubuntu 18.04

В этом мануале вы узнаете, как настроить виртуальные хосты Apache на сервере Ubuntu 18.04, благодаря чему ваш сервер сможет обслуживать контент двух сайтов по разным доменам.

Более подробную версию мануала вы найдете здесь.

Требования

  • Настроенный сервер Ubuntu 18.04.
  • Пользователь с доступом к sudo (инструкции по настройке – здесь).
  • Предварительно установленный веб-сервер Apache (инструкции по установке вы найдёте здесь).

1: Создание структуры каталогов

Давайте создадим структуру каталогов, в которой будут храниться данные сайтов. Мы используем условные домены, а вы должны указать свои рабочие домены в этих командах:

sudo mkdir -p /var/www/example.com/public_html
sudo mkdir -p /var/www/test.com/public_html

2: Настройка привилегий

Чтобы ваш обычный пользователь мог изменять файлы в этих каталогах, передайте ему права на эти каталоги:

sudo chown -R $USER:$USER /var/www/example.com/public_html
sudo chown -R $USER:$USER /var/www/test.com/public_html

Также нужно изменить права на чтение каталога сайта и всех его подкаталогов (чтобы страницы отображались правильно). Для этого запустите:

sudo chmod -R 755 /var/www

3: Создание демо-страниц для виртуальных хостов

Давайте создадим тестовый контент для каждого сайта – страницы index.html. Начнём с домена example.com; откройте файл index.html в текстовом редакторе:

nano /var/www/example.com/public_html/index.html

Поместите в файл следующий HTML-код:

<html>
<head>
<title>Welcome to Example.com!</title>
</head>
<body>
<h1>Success! The example.com virtual host is working!</h1>
</body>
</html>

Сохраните и закройте файл, а затем скопируйте его, чтобы использовать в качестве шаблона для страницы второго сайта.

cp /var/www/example.com/public_html/index.html /var/www/test.com/public_html/index.html

Откройте файл и отредактируйте соответствующие фрагменты:

nano /var/www/test.com/public_html/index.html
<html>
<head>
<title>Welcome to Test.com!</title>
</head>
<body> <h1>Success! The test.com virtual host is working!</h1>
</body>
</html>

Сохраните и закройте файл.

4: Создание файлов виртуальных хостов

Apache предоставляет стандартный файл хоста по имени 000-default.conf, который можно использовать в качестве шаблона. Скопируйте его, чтобы создать виртуальный хост для каждого вашего домена.

Виртуальный хост для первого сайта

Скопируйте стандартный файл виртуального хоста:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf

Откройте его в редакторе:

sudo nano /etc/apache2/sites-available/example.com.conf

Укажите в нем ваш первый домен, а вместо выделенных значений укажите свои данные.

<VirtualHost *:80>
ServerAdmin admin@example.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Сохраните и закройте файл.

Виртуальный хост для второго сайта

Скопируйте новый виртуальный хост и используйте его как шаблон для второго сайта.

sudo cp /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-available/test.com.conf

Откройте файл в редакторе:

sudo nano /etc/apache2/sites-available/test.com.conf

Теперь осталось откорректировать файл, чтобы он обслуживал второй домен, а не первый. В результате виртуальный хост второго сайта должен выглядеть так:

<VirtualHost *:80>
ServerAdmin admin@test.com
ServerName test.com
ServerAlias www.test.com
DocumentRoot /var/www/test.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Сохраните и закройте файл.

5: Включение виртуальных хостов

Вы создали файлы виртуальных хостов для своих сайтов, а теперь нужно включить их. Для этого вы можете использовать a2ensite:

sudo a2ensite example.com.conf
sudo a2ensite test.com.conf

Теперь отключите стандартный виртуальный хост, 000-default.conf:

sudo a2dissite 000-default.conf

Перезапустите Apache, чтобы активировать изменения, и запросите состояние веб-сервера:

sudo systemctl restart apache2
sudo systemctl status apache2

Теперь ваш сервер обслуживает два сайта одновременно.

6: Настройка локальных хостов (опционально)

Если при настройке вы использовали условный домен вместо настоящего, вы можете протестировать свои хосты, временно отредактировав файл hosts на локальном компьютере.

В системах Mac или Linux отредактируйте файл hosts с привилегиями администратора.

sudo nano /etc/hosts

Инструкции для Windows вы найдете здесь.

В этом файле нужно указать IP-адрес сервера, а затем домен, по которому осуществляется доступ к серверу.

Используя условный IP-адрес сервера your_server_IP, мы внесем в конец файла хоста следующие строки:

127.0.0.1   localhost
127.0.1.1   guest-desktop
your_server_IP example.com
your_server_IP test.com

Теперь все запросы к example.com и test.com будут отправлены на локальный компьютер, а оттуда – на IP-адрес сервера.

Сохраните и закройте файл.

7: Тестирование настройки

Чтобы протестировать настройку виртуальных хостов, просто откройте домен в веб-браузере:

http://example.com

На экране появится сообщение:

Success! The example.com virtual host is working!

Примечание: Результат, появившийся на экране, зависит от содержания файлов ваших тестовых страниц.

Точно так же проверьте и второй сайт:

http://test.com

На экране появится:

Success! The test.com virtual host is working!

Если оба сайта работают, значит, виртуальные хосты успешно настроены.

Читайте также:

Tags: , ,