Set virtual hosts on linux apache and nginx, IT Knowledge Base
Веб-сервер Apache є найпопулярнішим засобом розміщення веб-контенту в Інтернеті. На його рахунку більше половини всіх веб-сайтів, що діють. Це дуже потужний та гнучкий інструмент.
Apache розділяє свої функціональні можливості та компоненти на окремі частини, які можуть бути налаштовані та налаштовані незалежно один від одного. Базова частина, яка відповідає за окремий сайт або домен називається віртуальним хостом (virtual host).
Ця система дозволяє адміністратору використовувати один сервер, щоб роздавати кілька сайтів, використовуючи один інтерфейс або IP. Це зручно для тих, хто хоче використовувати один VPS для зберігання кількох сайтів.
Кожен налаштований відповідним чином домен надсилатиме користувача до певної директорії сервера, що містить інформацію цього сайту, що відповідає домену. При цьому відвідувач сайту не дізнається, що сервер зберігає й інші сайти. Ця схема може розширюватися без будь-яких обмежень з боку програмного забезпечення до тих пір, поки сервер справлятиметься з навантаженням.
У цьому посібнику ми розповімо, як налаштувати віртуальні хости в Apache на VPS з Ubuntu 14.04. У процесі ви дізнаєтеся, як відображати різний контент для різних користувачів, залежно від того, який домен вони запитують.
Необхідні умови
Перед тим, як приступати, вам необхідно створити нерутового користувача, як описано в кроках 1-4.
Також у вас повинен бути встановлений Apache, щоб зробити описані нижче кроки. Якщо його ще не встановлено, ви можете зробити це за допомогою команди apt-get :
Після завершення цих кроків ми можемо розпочати налаштування віртуальних хостів.
У цьому посібнику ми створимовіртуальний хост для доменів example.com та test.com. Ми будемо посилатися на них у посібнику, проте вам слід замінити їх на свої домени при налаштуванні ваших віртуальних хостів.
Якщо у вас немає вільних доменів, на яких можна потренуватися, можна використовувати фіктивні доменні імена.
Трохи пізніше ми покажемо, як відредагувати файл з локальними хостами для перевірки конфігурації, якщо ви використовуєте фіктивні доменні імена. Це дозволить протестувати конфігурацію з вашого домашнього комп'ютера, навіть незважаючи на те, що контент сайту не буде доступний для цього доменного імені іншим користувачам.
Крок 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.1 – Увімкнення нових віртуальних хостів Apache
Тепер, коли ми створили файли наших віртуальних хостів, ми маємо їх увімкнути. Apache містить інструменти, які дають нам змогу це зробити.
Ми можемо використовувати утиліту a2ensite для включення кожного з наших сайтів таким чином:
Після завершення необхідно перезапустити Apache, щоб зміни набули чинності:
Швидше за все, ви отримаєте повідомлення, схоже на це:
Це повідомлення нешкідливе та не впливає на наш сайт.
Крок 5.2 - Включення нових віртуальних хостів Nginx
Якщо ви маєте налаштовану nginx пакет від Ubuntu реpositories, ви будете дві directories.
/etc/nginx/sites-enabled and /etc/nginx/sites-available .
У main nginx configuration, /etc/nginx/nginx.conf , ви повинні following line:
З принципово до списку всіх доступних віртуальних hosts, ви можете керувати наступною командою:
Для того, щоб активувати одну з них, керувати наступною командою:
Підписи, які приходять з Apache, є basically just simple simple shell wrappers, що висловлюють подібні до себе.
Після налагодження файлів, remember to run sudo service nginx reload / service nginx reload
Крок 6 - Налаштування файлу локальних хостів (опціонально)
Якщо раніше ви використовували не реальні доменні імена, якими ви володієте, а тестові, ви можете протестувати працездатність віртуальних хостів, тимчасово змінивши файл hosts на вашому локальному комп'ютері.
Це дозволить перехоплювати будь-який запит до доменів, які ви налаштували та перенаправлятийого на ваш VPS сервер так, як це зробила система DNS у разі використання реально зареєстрованих доменів. Це буде працювати тільки з вашого локального комп'ютера і використовується лише для тестування.
Переконайтеся, що ви будете робити на вашому локальному комп'ютері, а не на VPS сервері. Вам потрібно знати пароль адміністратора або бути членом групи адміністраторів.
Якщо ви використовуєте комп'ютер з Mac або Linux, ви можете редагувати локальний файл із правами адміністратора, ввівши команду:
Збережіть та закрийте файл.
Крок 7 – Тестування результатів
Якщо обидва сайти працюють, ви успішно налаштувалидва віртуальних хоста на тому самому сервері.
Якщо ви вносили зміни до файлу hosts на вашому локальному комп'ютері, можна видалити додані рядки, т.к. вже переконалися у працездатності зміни. Таким чином, ми не будемо зберігати у файлі “hosts” непотрібні записи.
Висновок
Якщо ви дотримувалися наших інструкцій, тепер у вас має бути один сервер, який працює з двома різними доменними іменами. Для додавання інших віртуальних хостів дотримуйтесь інструкцій у цьому посібнику.
Apache може працювати з будь-якою кількістю доменних імен, так що можете додавати нові сайти, поки ваш сервер справляється з навантаженням.