Як налаштувати віртуальні хости веб-сервера apache на ubuntu або

Веб-сервер Apache є найпопулярнішим способом обслуговування веб-контенту в Інтернеті. На його частку припадає більше половини активних веб-сайтів в Інтернеті, і він є надзвичайний потужним і швидким.

Apache розбиває свої функціональні можливості і компоненти на окремі блоки, які можуть бути кастомизировать і налаштовані незалежно один від одного. Базовою одиницею, яка описує індивідуальний сайт або домен, називається віртуальним хостом.

Такі розподілу дозволяють адміністратору за допомогою відповідного механізму використовувати один сервер для розміщення безлічі доменів або сайтів на одному інтерфейсі або IP. Це важливо для всіх, хто хоче розмістити кілька сайтів в одному VPS.

Кожен конфігурований домен направить відвідувача в конкретний каталог, що містить інформацію цього сайту, ніколи не видаючи, що той же сервер відповідає і за інші сайти. Ця схема може бути розширена без будь-яких обмежень програмного забезпечення, якщо ваш сервер впорається з навантаженням.

У цьому керівництві ми розповімо, як налаштувати віртуальні хости Apache на Ubuntu 16.10 або 17.04 VPS. Під час цього процесу ви дізнаєтеся, як обслуговувати різний контент для різних відвідувачів, в залежності від того, які домени вони запитують.

Передбачається, що ви працюєте під звичайним користувачем. Якщо немає, то попередньо створіть звичайного користувача і залогинтесь під ним.

Також у вас вже повинен бути встановлений Apache.

Для цілей цієї інструкції, ми будемо налаштовувати віртуальний хост для домену example.com, а інший віртуальний хост для test.com. На них будуть робитися посилання в цьому керівництві, але ви повинні підставити ваші власні домени або значення.

Для реальних доменів повинні бути прописані DNS записи, що вказують на IP вашого сервера. Якщо у вас немає доменів, з якими можна було б погратися, ви можете використовувати несправжні значення.

Якщо ви використовуєте не справжні значення, ми покажемо вам, як відредагувати ваш локальний файл hosts щоб протестувати конфігурацію. Це дозволить вам протестувати вашу конфігурацію прямо на вашому домашньому комп'ютері, нехай навіть ваш контент НЕ буде доступний через доменне ім'я для будь-якого користувача.

Крок 1 - Створення структури директорій

Першим кроком, який буде зроблений, ми збираємося створити структуру директорій, які будуть містити дані сайтів, які буде обслуговувати сервер для відвідувачів.

Наша коренева директорія документів (директорія самого верхнього рівня, в якій Apache шукає вміст для обслуговування) буде встановлена ​​на індивідуальні директорії в папці / var / www. У ній ми створимо подпапки для обох віртуальних хостів, які ми плануємо зробити.

Усередині кожної з цих директорій, ми створимо папку public_html. яка і буде містити файли. Це дасть більше гнучкості в розгортанні складних веб-додатків; в папці public_html буде розташований веб-контент, а батьківська папка може содердажть скрипти або код додатка для підтримки веб-контенту.

Наприклад, для наших сайтів ми збираємося зробити наші директорії наступним чином:

Оскільки ми створили директорії з sudo, то вони належать користувачеві root. Якщо ми хочемо, щоб наш звичайний користувач був здатний змінювати файли в наших веб-директоріях, ми можемо змінити права власності зробивши так:

При натисканні на Enter змінна $ USER прийме значення вашого користувача, під яким ви увійшли. Зробивши це, наш звичайний користувач стане власником піддиректорій public_html де ми будемо розміщувати наш контент.

Нам слід також трохи відредагувати наші дозволу, щоб переконатися, що доступ на читання дозволений на головну веб-директорію і на всі файли і папки, які вона містить, це потрібно, щоб сторінки могли коректно обслуговуватися сервером:

Тепер ваш веб-сервер повинен мати необхідні дозволи для обслуговування контенту, і ви повинні бути здатні створювати контент всередині необхідних папок.

Крок 2 - Створення демо сторінок для кожного віртуального хоста

Структура директорій розміщена в потрібному місці. Давайте створимо контент, щоб його міг обробляти веб-сервер.

Ми тільки збираємо показати принцип роботи, тому наші сторінки будуть дуже простими. Ми просто збираємося зробити сторінку index.html для кожного сайту.

У цьому файлі створіть HTML документ, який говорить про те, що до сайту є з'єднання. Мій файл виглядає приблизно так:

Коли закінчите, збережіть і закрийте файл.

Ми можемо скопіювати цей файл для використання його в якості основи для нашого другого сайту:

Потім ми можемо відкрити новий файл і змінити його в потрібних місцях:

Також збережіть і закрийте цей файл. Тепер у вас є необхідні сторінки для тестування конфігурації віртуального хоста.

Крок 3 - Створення файлів налаштувань нових віртуальних хостів

Файли віртуальні хостів - це файли, які задають конфігурація наших віртуальні хостів і кажуть веб-сервера Apache як відповідати на запити різних доменів.

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

Ми почнемо з одного домену, настроєм його, скопіюємо його для нашого другого домену і потім зробимо невеликі необхідні виправлення. Стандартна конфігурація Ubuntu вимагає, щоб кожен файл віртуального хоста закінчувався на .conf.

Створіть перший файл віртуального хоста

Почніть з копіювання файлу для першого домену:

Як ви можете переконатися, тут не дуже багато. Ми настрої пункти для нашого першого домену і додамо деякі директиви. Секція VirtualHost відповідає будь-яким запитам, зробленим на порт 80, це стандартний HTTP.

Після цього нам потрібно додати дві директиви. Перша називається ServerName, вона встановлює базовий домен, який повинен відповідати визначенню віртуального хоста. Швидше за все, це буде ваш домен. Друга, звана ServerAlias, визначає додаткові імена (псевдоніми), за якими також можна звернутися до цього віртуального хосту. Тобто тут вказуються різні імена хостів, що вказують на один віртуальний хост, наприклад, щоб сайти з і без www сервер вважав за один сайт потрібно зробити так:

Ще нам залишилося змінити шлях, який вказує де розміщена коренева директорія сайту для цього домену - DocumentRoot. Ми вже створили потрібну нам директорію, тому нам потрібно просто змінити директиву DocumentRoot відповідно до нашими умовами:

В остаточному підсумку файл нашого віртуального хоста виглядає так:

Збережіть і закрийте цей файл.

Скопіюйте перший віртуальний хост і подредактіруйте під другий домен

Тепер, коли файл нашого першого віртуального хоста готовий, ми можемо створити другий скопіювавши цей файл і поднастроіть його як потрібно.

Почнемо з копіювання:

Тепер потрібно змінити інформацію, специфічну для другого домену. Коли закінчите, може вийти приблизно так:

Коли все готово, збережіть і закрийте файл.

Крок 4 - Включення нових файлів віртуальні хостів

Тепер, створивши файли наших віртуальних хостів, ми повинні включити їх. Apache має кілька інструментів, що дозволяють нам це зробити.

Ми можемо використовувати інструмент a2ensite для включення кожного нашого сайту приблизно наступним чином:

Далі відключимо стандартний сайт, визначений в 000-default.conf.

Коли ви закінчите, вам потрібно перезапустити Apache щоб ці зміни вступили в силу:

В іншої документації можна побачити приклад використовує іншу сервісну команду:

Ця команда ще працює, але ви можете не побачити висновок, зазвичай видимий на інших системах, оскільки зараз це обгортка для systemctl з systemd.

Крок 5 - Налаштування файлу Hosts (опціонально)

Якщо для цього процесу ви використовуєте не реальні належать вам доменні імена, а використовуєте ті приклади, які вказані в цій статті, ви все одно можете протестувати успішність налаштування сервера. Цього можна домогтися тимчасовим зміною файлу hosts на вашому локальному комп'ютері.

Ця установка перехоплювати будь-які запити для налаштованих вами доменів і вказувати на ваш локальний комп'ютер або VPS сервер, як би це робила DNS система якби використовувалися зареєстровані домени. Хоча це буде працювати тільки з вашого комп'ютера, це корисно для цілей тестування.

Якщо ви налаштовували віртуальні хости на вашому локальному комп'ютері, то наступні зміни також потрібно робити на ньому. Якщо ви налаштовували віртуальні хости на VPS сервері, то переконаєтеся, що наступні зміни ви робите нема на ньому, а на комп'ютері, з якого збираєтеся тестувати (на вашому локальному комп'ютері). Вам потрібно знати пароль адміністратора або бути членом адміністративної групи.

Якщо ви на комп'ютері Mac або Linux, відредагуйте ваш локальний файл з привілеями адміністратора:

Якщо ви налаштували віртуальні домену на локалхосте, то рядки можуть виглядати так:

Якщо ви на машині Windows, відкрийте командний рядок з привілеями адміністратора і наберіть там:

Це буде перенаправляти будь-які запити на example.com і test.com з вашого комп'ютера і відправляти їх на ваш сервер 111.111.111.111.

Збережіть і закрийте файл. Тепер ви можете протестувати ваші настройки. Коли переконаєтеся, що все працює, видаліть ці два рядки з файлу.

Крок 6 - Тестування ваших результатів

Якщо обидва цих сайту працюють добре, значить ви успішно налаштували два віртуальних хоста на одному сервері.

Примітка: якщо в кроці 5 ви додали рядки в ваш файл hosts. то тепер можете видалити їх, щоб не заповнювати цей файл непотрібними даними.

висновок

Тепер у вас є єдиний сервер, який працює з двома окремими доменами. Ви можете поширити цей процес, слідуючи цим крокам для додавання віртуальних хостів.

Немає програмних обмежень на кількість доменних імен, які може обслуговувати Apache, тому додавайте стільки, скільки ваш сервер спосіб обробити.

Схожі статті