Як налаштувати віртуальні хости в apache на ubuntu, digitalocean

We hope you find this tutorial helpful. In addition to guides like this one, we provide simple cloud infrastructure for developers. Learn more →

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

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

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

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

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

Необхідні умови

Перед тим, як приступати, вам необхідно створити не-рутовий користувача. як описано в кроках 1-4.

Також у вас повинен бути встановлений Apache, щоб виконати описувані нижче кроки. Якщо він ще не встановлений, ви можете зробити це за допомогою команди apt-get:

Після завершення цих кроків, ми можемо почати налаштування віртуальних хостів.

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

Для настройки доменних імен в DigitalOcean перейдіть за цим посиланням. Якщо у вас немає вільних доменів, на яких можна потренуватися, ви можете використовувати фіктивні доменні імена.

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

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

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

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

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

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

Текст, виділений червоним, являє собою доменні імена сайтів, які ми хочемо відображати за допомогою нашого VPS.

Крок 2 - Призначення прав

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

Змінна $ USER містить ім'я користувача, під яким ви залягання в поточний момент. Тепер поточний користувач володіє директоріями public_html. в яких ми будемо зберігати контент.

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

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

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

Наша структура директорій готова. Давайте створимо який-небудь контент для відображення відвідувачам наших сайтів.

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

У цьому файлі створіть простий HTML-документ, який показує, до якого сайту він відноситься. Наш файл виглядає наступним чином:

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

Ви може скопіювати файл, щоб використовувати його як основу для другого сайту:

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

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

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

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

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

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

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

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

Як бачите, файл зовсім невеликий. Ми виправимо його для нашого першого домену і додамо деякі нові директиви. Ця секція конфігурації віртуального хоста відноситься до будь-якому запитам, які зроблені по 80 порту (порт за замовчуванням для HTTP).

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

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

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

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

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

Почніть з копіювання:

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

Збережіть і закрийте файл після внесення правок.

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

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

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

Далі деактивувавши сайт за замовчуванням 000-default.conf:

Після завершення необхідно перезапустити Apache, щоб зміни вступили в силу:

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

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

Крок 6 - Налаштування файлу локальних хостів (опціонально)

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

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

Переконайтеся, що подальші кроки ви будете проробляти на вашому локальному комп'ютері, а не на VPS сервері. Вам необхідно знати пароль адміністратора або бути членом групи адміністраторів.

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

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

Крок 7 - Тестування результатів

Ви повинні побачити схожу сторінку:

Аналогічно, ви можете зайти на другу сторінку:

Ви побачите файл, створений для другого сайту:

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

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

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

висновок

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

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