Налаштування віртуальних хостів Apache на Ubuntu 16.04

  1. вступ Веб-сервер Apache є найбільш популярним способом розміщення веб-контенту в Інтернеті. Більше...
  2. Крок перший - Створюємо дерево директорій
  3. Крок другий - призначення прав доступу
  4. Крок третій - створення тестових сторінок для кожного віртуального хоста
  5. Крок четвертий - створення конфігураційних файлів віртуальних хостів
  6. Створимо перший конфігураційний файл
  7. Скопіюємо перший Віртуальний Хост і налаштуємо його для обробки другого домену
  8. Крок п'ятий - активація віртуальних хостів
  9. Крок шостий - настройка файлу hosts (не обов'язково)
  10. Крок сьомий - перевірка працездатності
  11. висновок

вступ

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

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

Virtual host дозволяє адміністратору розміщувати декілька доменів або сайтів на одному сервері і одному ip-адресу. Це актуально для тих, хто бажає розміщувати кілька сайтів на одному VPS.

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

У цій статті ви навчитеся налаштовувати Virtual hosts в системі Ubuntu 16.04 і надавати різним користувачам різний вміст, в залежності від домену, який вони вказали в адресному рядку.

підготовка

Перш ніж почати виконувати дії, описані в цій статті, вкрай рекомендується створити користувача з Root-привілеями, якщо ви цього ще не зробили. Як це зробити ви можете прочитати в цієї статті , Виконавши кроки №1-4.

Крім того, у вас повинен бути встановлений веб-сервер Apache2. Якщо ви цього ще не зробили, встановіть його виконанням наступних команд:

sudo apt-get update sudo apt-get install apache2

Після виконання перерахованих вище кроків, ми можемо починати.

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

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

Крок перший - Створюємо дерево директорій

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

Для доменів, наведених як приклад, команди на створення директорій будуть виглядати так:

sudo mkdir -p / var / www / example.com / public_html sudo mkdir -p / var / www / test.com / public_html

Червоним кольором виділені домени, які ви збираєтеся обслуговувати за допомогою вашого VPS.

Крок другий - призначення прав доступу

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

sudo chown -R $ USER: $ USER / var / www / example.com / public_html sudo chown -R $ USER: $ USER / var / www / test.com / public_html

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

Крім повного права доступу для поточного користувача, ви повинні бути переконані що всі ваші веб-папки відкриті для читання «для всіх», це необхідно для коректної обробки запитів і відображення сайтів:

sudo chmod -R 755 / var / www

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

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

Ми створили структуру директорій і налаштували права на них. Прийшов час розміщувати контент.
На даному етапі нам потрібно буде лише переконатися, що все правильно налаштовано і працює, тому обмежимося простенькими файлами index.html для кожного хоста.
Давайте почнемо з example.com. Ви можете створити index.html і відкрити його в текстовому редакторі, виконавши команду:

nano / var / www / example.com /public_html/index.html

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

<Html> <head> <title> Ласкаво просимо на Example.com! </ Title> </ head> <body> <h1> Працює! Віртуальний хост example.com налаштований правильно! </ H1> </ body> </ html>

Збережіть і закрийте файл.
Зробимо копію щойно створеного файлу, щоб використовувати її в якості бази для аналогічного файлу домену test.com:

cp / var / www / example.com /public_html/index.html / var / www / test.com /public_html/index.html

Відкриємо копію файлу і змінимо в ній кілька значень:

nano /var/www/test.com/public_html/index.html <html> <head> <title> Ласкаво просимо на Test.com! </ title> </ head> <body> <h1> Працює! Віртуальний хост test.com налаштований правильно! </ H1> </ body> </ html>

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

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

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

Створимо перший конфігураційний файл

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

sudo cp /etc/apache2/sites-available/000-default.conf / etc / apache2 / sites-available / example.com .conf

Відкрийте новий файл в текстовому редакторі з привілеями root користувача:

sudo nano / etc / apache2 / sites-available / example.com .conf

Ви повинні побачити приблизно наступну картину (коментарі видалені з файлу для підвищення наочності):

<VirtualHost *: 80> ServerAdmin webmaster @ localhost DocumentRoot / var / www / html ErrorLog $ {APACHE_LOG_DIR} /error.log CustomLog $ {APACHE_LOG_DIR} /access.log combined </ VirtualHost>

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

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

ServerAdmin [email protected]

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

ServerName example.com ServerAlias ​​www.example.com

Остання річ, яку нам потрібно змінити в базовому файлі конфігурації, це параметр DocumentRoot, що визначає розташування директорії, з якої буде завантажуватися наш сайт. Ви вже створили належні директорії в першому кроці нашого керівництва, так що запишемо потрібну адресу в файл:

DocumentRoot / var / www / example.com / public_html

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

<VirtualHost *: 80> ServerAdmin [email protected] 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 cp / etc / apache2 / sites-available / example.com .conf / etc / apache2 / sites-available / test.com .conf

Відкриємо новий файл з привілеями root:

sudo nano / etc / apache2 / sites-available / test.com .conf

Тепер ми повинні змінити всі параметри, налаштувавши їх під другий домен. Має вийти щось на зразок цього:

<VirtualHost *: 80> ServerAdmin [email protected] 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>

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

Крок п'ятий - активація віртуальних хостів

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

Використовуйте інструмент a2ensite для активації ваших хостів. Приклад використання:

sudo a2ensite example.com .conf sudo a2ensite test.com .conf

Після виконання даних команд, необхідно відключити стандартний хост:

sudo a2dissite 000-default.conf

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

sudo systemctl restart apache2

Для перезапуску ви також можете використовувати іншу команду:

sudo service apache2 restart

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

Крок шостий - настройка файлу hosts (не обов'язково)

Якщо ви налаштували ваші віртуальні хости для реально існуючих доменів і налаштували DNS так, щоб запити на домени перенаправлялись на ваш сервер, то все добре. Якщо ж у вас ще немає доменів або ж ви з якоїсь причини поки що не хочете причіплювати їх до вашого сервера, ви можете використовувати файл hosts вашого локального комп'ютера, щоб імітувати перехід через потрібний домен для перевірки роботи virtual host.
При виконанні описаних нижче дій запити на певні домени з вашого локального комп'ютера перехоплюватимуться і примусово перенаправлятися на ip-адреса вашого VPS, в обхід DNS-серверів. При цьому дані перенаправлення будуть оброблятися виключно для вашого локального комп'ютера, що дуже зручно для тестування різних систем на етапі створення сайтів, в тому числі для тестування virtual host.

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

sudo nano / etc / hosts

Якщо ви використовуєте операційну систему Windows, ви знайдете файл hosts за адресою:

C: \ Windows \ System32 \ drivers \ etc \ hosts

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

Ви повинні додати в файл домени, які використовували в цьому посібнику та публічний ip-адреса вашого VPS. Для доменів, які використовував я, за умови що ip-адреса мого VPS 111.111.111.111 записи, які необхідно додати, будуть виглядати так:

127.0.0.1 localhost 111.111.111.111 example.com 111.111.111.111 test.com

Збережіть і закрийте файл. Тепер всі запити на домени example.com і test.com будуть автоматично перенаправлятися на наш VPS 111.111.111.111 і оброблятися віртуальними хостами так, як якщо б ми використовували реальні домени.

Крок сьомий - перевірка працездатності

Тепер все налаштовано і ви можете перевірити роботу Virtual hosts, ввівши в адресую рядок вашого браузера examle.com. Якщо все добре, ви побачите наступну сторінку:

Аналогічно, при запиті до домену test.com ви побачите відповідну сторінку:

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

висновок

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

Переклад статті Digitalocean community . Автор оригінальної статті Brennen Bearnes .

Уважаемые партнеры, если Вас заинтересовала наша продукция, мы готовы с Вами сотрудничать. Вам необходимо заполнить эту форму и отправить нам. Наши менеджеры в оперативном режиме обработают Вашу заявку, свяжутся с Вами и ответят на все интересующее Вас вопросы.

Или позвоните нам по телефонам: (048) 823-25-64

Организация (обязательно) *

Адрес доставки

Объем

Как с вами связаться:

Имя

Телефон (обязательно) *

Мобильный телефон

Ваш E-Mail

Дополнительная информация: