Веб-сайти на localhost — автоматичне налаштування virtual hosts і dns (fedora)

TLDR: Правда, було б зручно, якби просто створивши теку в ~/public_html/, ми могли відразу і автоматично бачити її за адресою http://назва-теки.self/ як повноцінний віртуальний сервер апача? Ось один зі способів це зробити (я користуюся Fedora, але, можливо, на инших дистрибутивах процедура буде подібною).

ОНОВЛЕНО: Змінено суфікс на .self, оскільки .dev ­­­— це від якогось часу справжній домен верхнього рівня.

Я припускаю, що налаштуваннями мережі у Вас керує NetworkManager, а веб-сервер — апач. Якщо у Вас якась инакша ситуація, процедуру треба (звичайно) скорегувати відповідно до потреб.

  1. Налаштовуємо автоматичну переадресацію всіх адрес, які завершуються на .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
    
  2. Налаштовуємо апач для автоматичних 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 за підказками.

Сподіваюся, нічого не забув:) Приємної праці.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *