Рис.1: VirtualHost на базе Apache IP.
VirtualHost на основе имени: В VirtualHost на основе имен сервер Apache имеет один IP-адрес и несколько доменных имен, настроенных для каждого веб-сайта. На DNS-сервере каждому из этих доменных имен назначается IP-адрес сервера Apache. В зависимости от того, какое доменное имя использовал клиент, сервер возвращает разные веб-сайты.
Рис 2: VirtualHost на основе имени Apache.
В этой статье я покажу вам, как настроить VirtualHost на основе имени Apache. Я буду использовать Ubuntu 18.04 LTS для демонстрации. Но он должен работать с любым современным дистрибутивом Linux практически без изменений. Итак, приступим.
Установка веб-сервера Apache 2:
Веб-сервер Apache 2 доступен в официальном репозитории пакетов Ubuntu 18.04 LTS. Таким образом, вы можете легко установить его с помощью диспетчера пакетов APT.
Сначала обновите кеш репозитория пакетов APT с помощью следующей команды:
$ sudo подходящее обновление
Теперь выполните следующую команду, чтобы установить веб-сервер Apache 2:
$ sudo apt install apache2
Теперь нажмите у а затем нажмите
Должен быть установлен веб-сервер Apache 2.
Настройка DNS:
Теперь вам нужно настроить DNS-сервер для сопоставления доменных имен, которые вы хотите использовать для VirtualHost, с IP-адресом вашего сервера Apache.
Вы можете узнать IP-адрес вашего сервера Apache с помощью следующей команды:
$ ip a | egrep "инет"Как видите, в моем случае IP-адрес 192.168.21 год.166. Для тебя будет иначе. Так что не забудьте заменить его теперь своим.
Если вы хотите узнать, как настроить Apache VirtualHost локально, вы можете использовать / etc / hosts файл для локального DNS / разрешения имен.
Чтобы настроить локальное разрешение DNS, откройте / etc / hosts файл с нано следующим образом:
$ sudo nano / etc / hosts
Теперь добавьте в файл строку, отмеченную на скриншоте ниже. Затем нажмите
Теперь локальное разрешение имен должно работать.
Структуры каталогов:
Я хочу хранить все данные веб-сайта моего Apache VirtualHost в определенном каталоге / www. Здесь я хочу создать каталог для каждого пользователя. У каждого пользователя будет свой public_html / а также журналы / каталог также.
Например, для 3 пользователей боб (пример1.com), Алиса (пример2.com), Линда (example3.com), структура каталогов следующая:
/ www- example1.com /
- www /
- public_html /
- индекс.html
- журналы /
- пример2.com /
- www /
- public_html /
- индекс.html
- журналы /
- example3.com /
- www /
- public_html /
- индекс.html
- журналы /
Самый простой способ сделать это - создать каталог шаблона или скелета и поместить туда структуру каталогов. Затем создайте каждого пользователя, используя этот каркасный каталог.
Сначала скопируйте содержимое каталога скелета по умолчанию / etc / skel в другой каталог / etc / skel-www следующим образом:
$ sudo cp -rv / etc / skel / etc / skel-www
Теперь перейдите в новый каталог скелета следующим образом:
$ cd / и т. д. / skel-www
Затем создайте желаемую структуру каталогов внутри скелетного каталога следующим образом:
$ sudo mkdir -p www / public_html, logs
Вы также можете создать по умолчанию индекс.html файл в public_html / каталог, если хотите.
$ echo "Оно работает
"| sudo tee www / public_html / index.html
Теперь создайте / www каталог с помощью следующей команды:
$ sudo mkdir / www
Создание пользователей:
Теперь вы можете создать пользователя боб для www.example1.com следующим образом:
$ sudo useradd --create-home --home-dir / www / example1.com --shell/ bin / bash --gid www-data --skel / etc / skel-www bob
Таким же образом создайте пользователя Алиса для www.пример2.com следующим образом:
$ sudo useradd --create-home --home-dir / www / example2.com --shell / bin / bash--gid www-data --skel / etc / skel-www Алиса
Снова создайте пользователя linda для www.example3.com следующим образом:
$ sudo useradd --create-home --home-dir / www / example3.com --shell / bin / bash--гид www-data --skel / etc / skel-www linda
Здесь я назначил основную группу каждого пользователя www-data. По умолчанию сервер Apache работает как эта группа. Если бы я этого не сделал, сервер Apache не смог бы получить доступ к файлам в public_html / каталог и создайте файлы журнала в журналы / каталог.
Настройка Apache VirtualHost:
Теперь вы готовы настроить Apache VirtualHost для 3 пользователей боб (www.example1.com), Алиса (www.пример2.com) и Линда (www.example3.com).
Каталог конфигурации сайта Apache по умолчанию в Ubuntu: / и т.д. / apache2 / сайты-доступные.
Теперь перейдите в каталог / и т.д. / apache2 / сайты-доступные / следующим образом.
$ cd / etc / apache2 / sites-available /
Сначала создайте новый файл конфигурации для bob www.example1.ком.conf следующим образом:
$ sudo nano www.example1.ком.conf
Текстовый редактор должен быть открыт.
Теперь введите следующие строки.
ServerName example1.комServerAlias www.example1.ком
DocumentRoot "/ www / example1.com / www / public_html "
Параметры -FollowSymLinks + MultiViews + Indexes
AllowOverride все
Требовать все предоставлено
ErrorLog "/ www / example1.com / www / журналы / ошибка.бревно"
CustomLog "/ www / example1.com / www / журналы / доступ.журнал "комбинированный
ПРИМЕЧАНИЕ. Измените полужирный текст в соответствии с вашими требованиями.
Наконец, конфигурационный файл www.пример.ком.conf должно выглядеть следующим образом. Нажмите
просто скопировать файл конфигурации для боб (www.example1.ком.conf) и внесите необходимые небольшие изменения.
Скопируйте файл конфигурации боб для Алиса а также Линда с помощью следующих команд:
$ sudo cp -v www.example1.ком.conf www.пример2.ком.conf$ sudo cp -v www.example1.ком.conf www.example3.ком.conf
Теперь отредактируйте файл конфигурации Алиса следующим образом:
$ sudo nano www.пример2.ком.conf
Теперь измените все вхождения example1 к пример2. Затем сохраните файл.
Сделайте то же самое для Линда.
$ sudo nano www.example3.ком.conf
Измените все вхождения example1 к example3 и сохраните файл.
Включение конфигураций VirtualHost:
Теперь отключите конфигурацию веб-сайта Apache по умолчанию следующим образом:
$ sudo a2dissite 000-по умолчанию.conf
Теперь включите конфигурации VirtualHost www.example1.ком.conf, www.пример2.ком.conf, www.example3.ком.conf следующим образом:
$ sudo a2ensite www.example1.ком.conf www.пример2.ком.conf www.example3.ком.conf
Наконец, перезапустите службу Apache следующим образом:
$ sudo systemctl перезапустить apache2
Тестирование VirtualHosts:
Теперь попробуйте получить доступ к веб-сайтам www.example1.com, www.пример2.com, www.example3.ком
Как видите, все эти веб-сайты работают должным образом.
ПРИМЕЧАНИЕ: Я изменил страницу по умолчанию индекс.html для каждого сайта, чтобы он немного отличался для каждого сайта в целях тестирования. В противном случае вы не сможете определить, работает ли конфигурация VirtualHost или нет.
Итак, вот как вы настраиваете Apache VirtualHost на основе имени в Ubuntu 18.04 LTS. Спасибо, что прочитали эту статью.