Як налаштувати віртуальний хост - XAMPP + Windows / Ubuntu

Як налаштувати віртуальний хост - XAMPP + Windows / Ubuntu

Як на мене, працювати набагато зручніше, коли для кожного розроблюваного сайту створений віртуальний хост. Коротко розглянемо налаштування хостів в XAMPP в Windows та Linux Ubuntu.

Налаштування віртуального хосту в Windows

Крок 1

Якщо ми створюємо перший віртуальний хост, то треба відкрити файл httpd.conf (в моєму випадку шлях до нього D:\xampp\apache\conf\httpd.conf), знайти рядок

Include conf/extra/httpd-vhosts.conf

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

Крок 2

Відкриваємо файл httpd-vhosts.conf, який знаходиться в піддиректорії extra (знову ж таки, в моєму випадку шлях D:\xampp\apache\conf\extra\httpd-vhosts.conf) та описуємо наш віртуальний хост. Якщо сайт, що розроляється, буде розташовуватися у теці xampp/htdocs, то достатньо і мінімальних налаштувань:

<VirtualHost *:80>
	DocumentRoot "D:/xampp/htdocs/blog"
	ServerName blog.local
</VirtualHost>

де:

  • DocumentRoot - місцезнаходження сайта
  • ServerName - назва сайту (на свій розсуд)

Якщо ж ми хочемо розмістити сайт у будь-якій іншій директорії, то з такими налаштуваннями скоріше за все отримаємо помилку 403:

You don't have permission to access the requested directory. There is either no index document or the directory is read-protected.

Тому знадобиться дописати ще кілька рядків (припустимо, що сайт знаходиться на диску D в теці web):

<VirtualHost *:80>
	DocumentRoot "D:/web/blog"
	ServerName blog.local
	<Directory "D:/web/blog/">
		Require all granted
	</Directory>
</VirtualHost>

Директива Require all granted в Apache 2.4 аналогічна директиві Allow from all у попередніх версіях Apache та дозволяє доступ до вказанної директорії.

Є ще один важливий нюанс. Якщо ми захочемо в назві сайта використовувати щось на зразок доменної зони – в прикладі вище local – її назва не повинна співпадати з реально існуючими зонами. В іншому випадку отримаємо помилку на кшалт  «Підключення не захищене» і будемо довго гадати, в чому проблема. Наприклад, я раніше часто використовував .dev, що зараз вже неприпустимо.

Крок 3

Відкриваємо файл C:\Windows\System32\drivers\etc\hosts та вставляємо рядок:

127.0.0.1 blog.local

Перезапускаємо XAMPP, вводимо в браузері адресу blog.local і готово. Трапляється, браузер сприймає нашу адресу як пошуковий запит. В такому випадку просто введемо http://blog.local. Для створення інших віртуальних хостів треба просто повторити кроки 1 і 2.

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

За великим рахунком, ми повторимо практично ті ж кроки, що і для Windows, але є свої нюанси.

Крок 1

Відкриваємо термінал та переходимо в режим root, тобто вводимо команду:

sudo su

і потім свій пароль.

Крок 2

Відредагуємо файл httpd.conf. Це можно зробити в будь-якому редакторі, я буду використовувати nano. Виконаємо в терміналі команду:

nano /opt/lamp/etc/httpd.conf

У файлі знайдемо рядок з DocumentRoot та після </Directory> допишемо наступне:

<Directory “/YourDirectory/”>
	Options Indexes FollowSymLinks ExecCGI Includes
	AllowOverride All
	Require all granted
</Directory>

де YourDirectory – шлях до директорії, де будуть знаходитися сайти. Наприклад, /home/serhii/web. І знову – цей крок потрібен тільки при створенні першого віртуального хосту.

Крок 3

Як і у випадку з Windows, зробимо опис віртуального хосту. Відкриваємо потрібний файл в nano командою:

nano /opt/lamp/etc/extra/httpd-vhosts.conf

Та вставляємо наступні рядки:

<VirtualHost *:80>
	DocumentRoot "/home/serhii/web/blog"
	ServerName blog.local
</VirtualHost>
Крок 4

І останнім відредагуємо файл hosts, для чого виконаємо команду:

nano /etc/hosts

та вставимо наступне:

127.0.0.1 blog.local

Перезавантажуємо XAMPP і можемо починати працювати.

P.S. В описі хосту (крок 2 для Windows та крок 3 для Ubuntu) можемо також прописати й інші директиви, такі як псевдонім сервера, шлях до логів і т.д., про що більш детально можна почитати в документації.