Как добавить директорию как виртуальный хост в Apache

Как можно добавить персонализированную директорию в роли виртуального хоста в веб-сервер Apache, напр., для PhpMyAdmin?

Все знают как в Apache настраиваются виртуальные хосты для сайтов, но как быть не с доменом а директорией? Как в Apache добавить определённую директорию в качестве виртуального хоста, чтобы, напр., на запрос по URL «http://255.255.255.255/phpmyadmin/» отдавалось содержимое директории «/media/my/web/PhpMyAdmin»? Т.е., если нет желания вешать, напр., тот же PhpMyAdmin на определённый виртуальный хост, а просто хочется получать к нему доступ, набрав адрес сервера и запросив на нём определённую директорию.

Если устанавливаете PhpMyAdmin из репозитория, то к нему в комплекте идёт конфиг файл для настройки веб-сервера Apache. Его можно найти по запросу «phpmyadmin apache config». А как быть, если всё делаете вручную?

Решается такая ситуация директивой alias модуля «mod_alias» для Apache. Обычно этот очень нужный модуль идёт в комплекте с веб-сервером Apache и уже подключен к нему. Найти подробную информацию по модулю и этой директиве можно по запросу «alias directive apache».

Надо настроить необходимую директорию при помощи секции Directory, и добавить алиас (адрес) на эту директорию директивой alias модуля «mod_alias». Может понадобится модуль «mod_dir» (есть в комплекте). Как всё это настроить описываю ниже с комментариями.

Пишем всё это либо в главном файле настроек Apache, что не рекомендуется, либо в любом из файлов (существующих или новосозданном) виртуальных хостов, которые подключаются к главному файлу настроек директивой Include.

# Выставляем настройки web-сервера для определённой директории
<Directory "/home/web_server/sites/phpMyAdmin">
AllowOverride All
Options +FollowSymlinks -Indexes

<IfModule mod_dir.c>
DirectoryIndex index.html index.php
</IfModule>

# New directive needed in Apache 2.4.3:
Require all granted

# Разрешить доступ к директории всем
Order allow,deny
Allow from all

# Разрешить доступ к директории только с указанных IP-адресов
Order Deny,Allow
Deny from all
Allow from 255.255.255.255
</Directory>

<IfModule mod_alias.c>
# Главное! Направляем определённый URL-алиас на конкретную директорию на сервере
Alias /phpmyadmin/ "/home/web_server/sites/phpMyAdmin/"
</IfModule>

В результате PhpMyAdmin будет по следующему URL: «http://255.255.255.255/phpmyadmin/», или так, если Apache находится, напр., на другом сетевом порте: «http://255.255.255.255:8080/phpmyadmin/», где «255.255.255.255» — IP-адрес веб-сервера, «8080» — номер сетевого порта, «phpmyadmin» — алиас заданный первым параметром в директиве Alias.

Все необходимые данные замените под себя. Перезапустите Apache и всё.

Ссылки

  • https://httpd.apache.org/docs/current/mod/mod_alias.html
  • https://httpd.apache.org/docs/current/mod/mod_dir.html
  • http://help.ubuntu.ru/wiki/%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_ubuntu_server/%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F_lamp/phpmyadmin
  • https://wiki.archlinux.org/index.php/PhpMyAdmin_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)
  • http://askubuntu.com/questions/92069/how-to-add-custom-directory-e-g-phpmyadmin
  • https://wiki.archlinux.org/index.php/PhpMyAdmin_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)