Почему виртуальные хосты Apache в Ubuntu 14.04 не работают?

23

Я установил Apache 2.4 на Ubuntu 14.04, и он работал нормально по http://localhost/адресу. Но когда я попытался добавить новый виртуальный хост, например, http://bow.locи перезапустить apache, новый адрес был недоступен http://bow.locи недоступен http://localhost.

Моя конфигурация:

<VirtualHost *:80>
    ServerName www.bow.loc
    ServerAlias bow.loc
    DocumentRoot /var/www/html/bow/web

    <Directory /var/www/html/bow>
        AllowOverride All
        Options FollowSymLinks MultiViews
        Order allow,deny
        Allow from all
        <IfModule mod_rewrite.c>
            RewriteEngine On
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteRule ^(.*)$ /app.php [QSA,L]
        </IfModule>
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Как я могу получить свой сайт http://bow.loc?

Виктор Бочарский
источник
Связанный: askubuntu.com/a/362992/8698
Дан
Проверьте мой ответ здесь . Возникла похожая проблема, и оказалось, что это проблема с настройкой системы DNS.
jmarceli

Ответы:

29

Начиная с Apache 2.4 каждый файл виртуального хоста должен иметь расширение .conf.

Вы можете переименовать каждый файл виртуального хоста, чтобы включить расширение .conf:

mv /etc/apache2/sites-available/example.com /etc/apache2/sites-available/example.com.conf

Используйте команду a2ensite, чтобы добавить виртуальный хост:

a2ensite example.com.conf

И перезагрузите Apache:

service apache2 reload
Ари Пратомо
источник
Благодарность! И после этих действий мне не нужно вручную изменять /etc/hostsфайл и добавлять хосты к нему? Apache будет писать новые хосты автоматически?
Виктор Бочарский
Apache не пишет новые хосты автоматически, вы должны написать это вручную. CMIIW
Ари Пратомо
Итак, мой конфиг правильный, и проблема в том, что я забыл добавить хост/etc/hosts
Виктор Бочарский
Другой способ - изменить apache2.conf и удалить расширение «.conf» из директивы IncludeOptional sites-enabled / *. Я использую доменные имена в качестве имен файлов, поэтому мне не нравится дополнительное требование «.conf».
Лепе
17

Я забыл добавить хост в /etc/hosts:

127.0.0.1   localhost
127.0.0.1   bow.loc

Я думал, что Apache делает это автоматически.

Виктор Бочарский
источник
Я не должен был делать это в любое время на сервере. Я делаю это с клиента для тестирования все время, хотя. Можете ли вы уточнить, что вы говорите здесь?
flickerfly
@flickerfly Что ты имеешь в виду? Я указал виртуальным хостам на мою локальную машину, чтобы обработать их с установленным Apacheсервером
Виктор Бочарский,
Я также забыл добавить это! : P
Риши Кульшрешта
Черт, я потратил впустую на нашу виртуальную машину Debian 8! Благодарность!!!
Lucaferrario
@lucaferrario хаха, я тоже. Простые ошибки трудно выявить;) Всегда пожалуйста!
Виктор Бочарский
3

Ну, я пытался все эти решения, предлагаемые .. но, к сожалению, ничего не получалось! Увы я отредактировал

    /etc/hosts

сделать запись

    127.0.1.1 example.com test.com

и это сработало !!

(Извините, если я не говорю много технически!)

Винет Виджаян
источник
1

Я написал скрипт на Python, который будет автоматизировать шаги создания виртуального хоста Apache ... В этом видео объясняется, как загрузить / написать код на GitHub.

rakibtg
источник
-3
Options FollowSymLinks MultiViews

Нужен символ '+': + FollowSymLinks + Multiviews

Order allow,deny
Allow from all

Сейчас = требуется все предоставлено

Valentin
источник
Пожалуйста, объясните, где поставить это и что оно делает. Не просто публиковать команды или артефакты конфигурации. Смотрите, как мне написать хороший ответ?
Дэвид Фёрстер,
1
Вам нужно только поставить + или - перед различными опциями, если вы используете -, чтобы исключить один. В противном случае они хороши, чтобы пойти. Обязательно все предоставлено для Apache 2.4. Строки Order, Allow - это синтаксис 2.2.
flickerfly