Настройка виртуальных хостов Apache в macOS
В данной статье я расскажу, как добавить виртуальные хосты в Apache.
Виртуальные хосты предназначены для того, чтобы создавать несколько сайтов на одном сервере. Фактически каждый виртуальный хост представляет собой отдельный сайт, со своим адресом и директорией, где размещаются его файлы.
После установки Apache создается один виртуальный хост с именем localhost. Вы можете открыть его в браузере по адресу http://localhost. Директория, в которой размещаются файлы данного сайта /Library/WebServer/Documents.
Есть несколько способов для добавления своих хостов в Apache. Можно прописать информацию о них в одном файле, а можно создать для каждого хоста свой отдельный конфигурационный файл с соответсвующим именем. Я буду использовать второй способ.
Файлы с настройками хостов мы будем размещать в одной директории /private/etc/apache2/vhosts. Файлы будут иметь имена вида mysite.local.conf.
Подключаем vhosts
Сначала нам нужно отредактировать конфигурационный файл Apache. Необходимо добавить в него директиву, которая будет подключать директорию, в которой мы будем создавать конфигурационные файлы хостов.
Откройте файл для редактирования, для этого выполните в терминале команду:
sudo nano /etc/apache2/httpd.conf
Найдите в файле строку #Include /private/etc/apache2/extra/httpd-vhosts.conf.
Под этой строкой добавьте новую строку:
Include /private/etc/apache2/vhosts/*.conf
Сохраните изменения и закройте файл. Чтобы закрыть файл и сохранить изменения, нажмите Ctrl+X, затем введите Y и нажмите Enter.
Мы добавили директиву, которая говорит о том, что Apache должен подключать все файлы с расширением .conf из директории /private/etc/apache2/vhosts.
Настраиваем виртуальные хосты
Создадим директорию /private/etc/apache2/vhosts, которую мы добавили в кофигурацию Apache на предыдущем шаге. Чтобы создать директорию выполните в терминале команду:
sudo mkdir /private/etc/apache2/vhosts
Перейдем в эту директорию:
cd /private/etc/apache2/vhosts
Создадим конфигурационный файл _default.conf. В нем мы пропишем конфигурацию виртуального сервера по умолчанию. Создайте новый файл, выполнив в терминале:
sudo nano _default.conf
Введите следующую конфигурацию:
<VirtualHost *:80> DocumentRoot "/Library/WebServer/Documents" </VirtualHost>
Сохраните и закройте файл.
Теперь создадим конфигурацию для нашего виртуального хоста (сайта). Для примера мы будем создавать сайт с адресом mysite.local, а файлы сайта будем размещать в домашней директории в каталоге mysite (полный путь будет иметь вид /Users/Yury/mysite, вместо Yury должно быть ваше имя пользователя).
Выполните в терминале:
sudo nano mysite.local.conf
Введите:
<VirtualHost *:80> DocumentRoot "/Users/Yury/mysite" ServerName mysite.local ErrorLog "/private/var/log/apache2/mysite.local-error_log" CustomLog "/private/var/log/apache2/mysite.local-access_log" common <Directory "/Users/Yury/mysite"> AllowOverride All Require all granted </Directory> </VirtualHost>
В конфигурации мы указали директорию (/Users/Yury/mysite), в которой располагаются файлы нашего сайта. Задали адрес сайта mysite.local. Указали, где будут храниться лог файлы с ошибками и информацией о доступе к сайту.
Перезапустите Apache:
sudo apachectl restart
Прежде, чем наш сайт станет доступен по адресу http://mysite.local необходимо добавить информацию о нем в файл /etc/hosts.
Редактирование /etc/hosts
В файле /etc/hosts прописывается соответсвие IP адреса и текстовый адрес хоста (что-то вроде локального DNS).
Нам нужно добавить наш адрес mysite.local. Для этого откройте файл /etc/hosts:
sudo nano /etc/hosts
И добавьте в файл строку:
127.0.0.1 mysite.local
Настраиваем права доступа
Иногда требуется выставить правильные права доступа на директорию, в которой хранятся файлы сайта. Если этого не сделать, то при доступе к сайту мы получим ошибку 403 Forbidden. Такую же ошибку мы получим, если директории не существует.
В нашем случае нам нужно установить права доступа на директорию /Users/Yury/mysite. Для этого выполните в терминале команду:
chmod 755 /Users/Yury/mysite
Проверка работы
Теперь наберите в браузере адрес сайта: http://mysite.local
Если все пройдет успешно, то вы увидете ваш сайт.
В случае каких-либо ошибок можно просмотреть логи в файле /private/var/log/apache2/mysite.local-error_log