Dlaczego wirtualne hosty Apache na Ubuntu 14.04 nie działają?

23

Zainstalowałem Apache 2.4 na Ubuntu 14.04 i działał dobrze pod http://localhost/adresem. Ale kiedy próbowałem dodać nowy wirtualny host, na przykład http://bow.loci ponownie uruchomić apache, nowy adres nie był dostępny http://bow.loci dostępny w dniu http://localhost.

Moja konfiguracja to:

<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>

Jak mogę uzyskać swoją witrynę http://bow.loc?

Victor Bocharsky
źródło
Powiązane: askubuntu.com/a/362992/8698
Dan.
Sprawdź moją odpowiedź tutaj . Mam podobny problem i okazuje się, że jest to problem z konfiguracją DNS systemu.
jmarceli

Odpowiedzi:

29

Od Apache 2.4 każdy plik hosta wirtualnego powinien mieć rozszerzenie .conf.

Możesz zmienić nazwę każdego wirtualnego pliku hosta, aby uwzględnić rozszerzenie .conf:

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

Użyj polecenia a2ensite, aby dodać host wirtualny:

a2ensite example.com.conf

I przeładuj Apache:

service apache2 reload
Ari Pratomo
źródło
Dzięki! A po tych czynnościach nie muszę ręcznie modyfikować /etc/hostspliku i dodawać do niego hostów? Czy Apache automatycznie napisze nowe hosty?
Victor Bocharsky,
Apache nie pisze nowych hostów automatycznie, powinieneś pisać ręcznie. CMIIW
Ari Pratomo
Więc moja konfiguracja jest prawidłowa i problem, że zapomniałem dodać hosta/etc/hosts
Victor Bocharsky
innym sposobem jest zmodyfikowanie apache2.conf i usunięcie rozszerzenia „.conf” z dyrektywy „IncludeOptional sites-enabled / *”. Używam domen witryn jako nazw plików, więc nie podoba mi się dodatkowy wymóg „.conf”.
lepe
17

Zapomniałem dodać hosta w /etc/hosts:

127.0.0.1   localhost
127.0.0.1   bow.loc

Myślałem, że Apache robi to automatycznie.

Victor Bocharsky
źródło
Nigdy wcześniej nie musiałem tego robić na serwerze. Cały czas robię to od klienta w celach testowych. Czy możesz wyjaśnić, co tu mówisz?
flickerfly
@flickerfly Co masz na myśli? Udało mi się, aby moje wirtualne hosty wskazywały na moją lokalną maszynę do obsługi ich z zainstalowanym Apacheserwerem
Victor Bocharsky
Zapomniałem też to dodać! : P
Rishi Kulshreshtha,
Cholera, zmarnowałem jeden na tym na maszynie wirtualnej Debiana 8! Dzięki!!!
lucaferrario,
@lucaferrario haha, ja też. Proste błędy trudne do ujawnienia;) Nie ma za co!
Victor Bocharsky,
3

Cóż, próbowałem wszystkich tych rozwiązań .. ale niestety nic nie działało! Niestety edytowałem

    /etc/hosts

zrobić wpis

    127.0.1.1 example.com test.com

i zadziałało !!

(Przepraszam, jeśli nie mówię dużo technicznie!)

Vineeth Vijayan
źródło
1

Napisałem skrypt Pythona, który zautomatyzuje kroki tworzenia wirtualnego hosta Apache ... ten film wyjaśnia, jak pobrać / kod na GitHub

rakibtg
źródło
-3
Options FollowSymLinks MultiViews

Need char '+': + FollowSymLinks + Multiviews

Order allow,deny
Allow from all

Teraz = Wymagaj wszystkich przyznanych

Valentin
źródło
Proszę wyjaśnić, gdzie to umieścić i co robi. Nie publikuj tylko poleceń ani artefaktów konfiguracji. Zobacz Jak napisać dobrą odpowiedź?
David Foerster,
1
Musisz wstawić + lub - przed różnymi Opcjami, jeśli używasz -, aby je wykluczyć. W przeciwnym razie są dobre. Wymagane wszystkie przyznane dotyczy Apache 2.4. Wiersze Order, Allow są składnią 2.2.
flickerfly