Достоинством использования Ubuntu 18.04 и Apache является возможность размещения нескольких сайтов на одном сервере. Это очень выгодно, потому что можно использовать один сервер для всех своих доменов.
Эта особенность называется виртуальным хостингом. Например, она нужна для того, чтобы разместить домены example.com и test.com на одном публичном IP-адресе.
Виртуальный узел Apache направляет пользователей в разные папки, где хранятся файлы каждого домена. При открытии сайта пользователь не видит, что на этом сервере размещены другие виртуальные узлы.
Количество сайтов, которые можно разместить на сервере под Ubuntu 18.04, ограничивается лишь местом на диске и пропускной способностью канала.
В этом руководстве мы опишем процесс настройки для размещения 2-х различных сайтов на одном сервере под Ubuntu 18.04 VPS.
Что потребуется:
- Ubuntu 18.04 VPS
- Стандартный пользователь с возможностью выполнения sudo-команд
- Веб-сервер Apache
Установка Apache2
Для установки Apache необходимо выполнить следующую команду:
$ sudo apt-get install apache2
Для примера будем использовать вымышленные доменные имена example.com и test.com. Также в руководстве опишем, как изменить файл hosts на компьютере, чтобы проверить виртуальные хосты.
Создание структуры каталогов
Для начала необходимо создать структуру каталогов для новых сайтов. Apache имеет свой корневой каталог /var/www, в котором размещаются все сайты. Создадим две папки для двух новых доменов.
Для этого выполним команды в терминальном окне:
$ sudo mkdir -p /var/www/test.com/public_html
$ sudo mkdir -p /var/www/example.com/public_html
Изменение владельца каталогов
Права на редактирование содержимого в каталогах принадлежат системному пользователю root. Для разрешения доступа в каталог текущего пользователя необходимо воспользоваться командой chown:
$ 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
Создание контента для каждого виртуального узла
Теперь структура каталогов и доступ к файлам настроены. Создадим index.html для каждого веб-сайта, используя nano редактор:
Для домена test.com:
$ sudo nano /var/www/test.com/public_html/index.html
Скопируйте текст в редактор
<html>
<body>
This is our test.com website
</body>
</html>
Для домена example.com:
$ sudo nano /var/www/example.com/public_html/index.html
Скопируйте в редактор в текст
<html>
<body>
This is our example.com website
</body>
</html>
Не забывайте закрывать и сохранять каждый файл, нажимая CTR+X и Y.
Создание файлов конфигурации для новых сайтов
При установке Apache на Ubuntu 18.04 по умолчанию создается файл конфигурации. Найти его можно здесь:
/etc/apache2/sites-available/000-default.conf
Для создания нового файла конфигурации можно использовать уже имеющийся. Чтобы сделать его копию, выполните команду ниже:
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/test.com.conf
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf
Файлы конфигурации Apache должны иметь расширение ".config".
После этого откроем в редакторе наши файлы. Для этого будем использовать команду:
$ 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>
Выше мы указали каталог /var/www/test.com/public_html, потому что все файлы сайта test.com будут размещены в нем.
Повторим операцию для второго сайта example.com
$ 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 a2ensite test.com.conf
$ sudo a2ensite example.com.conf
Перезапуск Apache
После добавления виртуального сервера на Ubuntu 18.04 необходимо перезапустить Apache:
$ sudo service apache2 restart
Изменение локального файла hosts
Наши виртуальные хосты настроены. Для проверки вымышленных адресов нам необходимо отредактировать файл hosts на локальном компьютере (НЕ на сервере!).
Это позволит компьютеру обратиться к правильному публичному IP-адресу сервера. Предположим, что публичный IP-адрес сервера xxx.xxx.xxx.xxx, поэтому на нашем компьютере нужно будет отредактировать файл hosts следующим образом:
xxx.xxx.xxx.xxx example.com
xxx.xxx.xxx.xxx test.com
Если Вы используете ПК под Linux, необходимо отредактировать файл /etc/hosts с помощью команды:
$ sudo nano /etc/hosts
Внесите в него изменения и сохраните.
Если на компьютере установлена ОС Windows, отредактируйте файл c:\windows\system32\drivers\etc\hosts, используя текстовый редактор (блокнот).
Не забудьте заменить xxx.xxx.xxx.xxx на публичный IP-адрес Вашего сервера.
Проверка новых сайтов в браузере
Теперь нужно проверить сайты example.com и test.com в браузере. Если все выполнено по инструкции, то в браузере Вы должны увидеть следующее:
test.com
This is our test.com website
example.com
This is our example.com website
Заключение
Хостинг нескольких сайтов на одном сервере под Ubuntu 18.04 прост и удобен: можно не переплачивать за отдельные виртуальные сервера.