TLDR: Правда, було б зручно, якби просто створивши теку в ~/public_html/
, ми могли відразу і автоматично бачити її за адресою http://назва-теки.self/
як повноцінний віртуальний сервер апача? Ось один зі способів це зробити (я користуюся Fedora, але, можливо, на инших дистрибутивах процедура буде подібною).
ОНОВЛЕНО: Змінено суфікс на .self
, оскільки .dev
— це від якогось часу справжній домен верхнього рівня.
Я припускаю, що налаштуваннями мережі у Вас керує NetworkManager, а веб-сервер — апач. Якщо у Вас якась инакша ситуація, процедуру треба (звичайно) скорегувати відповідно до потреб.
- Налаштовуємо автоматичну переадресацію всіх адрес, які завершуються на
.self
, на Ваш локалгост. Для цього створюємо файл/etc/NetworkManager/dnsmasq.d/vhosts
з таким вмістом:address=/self/127.0.0.1
А також створюємо файл
/etc/NetworkManager/conf.d/vhosts.conf
з таким вмістом:[main] dns=dnsmasq
Перезавантажуємо NetworkManager:
systemctl restart NetworkManager
й перевіряємо, чи працює переадресація DNS:[user@localhost]$ resolveip whatever.self IP address of whatever.self is 127.0.0.1
- Налаштовуємо апач для автоматичних virtual hosts. Для цього створюємо файл
/etc/httpd/conf.d/vhosts.conf
з таким змістом:UseCanonicalName off VirtualDocumentRoot /home/user/public_html/%1 <Directory /home/user/public_html/> Require local # Потрібно для drupal, можливо ненайбезпечніше AllowOverride All </Directory>
Щоб це працювало, треба щоб в апачі був увімкнутий модуль
mod_vhost_alias
(у мене був увімкнутий «з коробки»). Також треба впевнитися, щоselinux
не «битиме апач по руках» за спробу доступу до теки public_html. Для цього повинно бути достатньо запустити командуchcon --recursive --type httpd_user_content_t /home/user/public_html/
і впевнитися, що користувачapache
має права читання потрібних файлів і запису до тих тек, які повинні змінюватися сервером (наприклад,sites/all/files
у drupal).Перезавантажуємо апач:
systemctl restart httpd
. Створюємо теку~/public_html/whatever/
й кидаємо туди якийсь html-файл. Перевіряємо, чи працює, відкривши у веб-переглядачціhttp://whatever.self/наш-html-файл.html
.Якщо щось не працює, дивимось у
/var/log/httpd/error.log
і у/var/log/audit/audit.log
за підказками.
Сподіваюся, нічого не забув:) Приємної праці.