Как настроить виртуальный хост - 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) по желанию можно было бы также прописать и другие директивы, такие как псевдоним сервера, путь к логам и т.д., о чём подробнее можно почитать в документации.