Назад | Перейти на главную страницу

Помогите запустить несколько веб-сайтов на apache2

Apache newb здесь. Я прочитал несколько руководств и не уверен, что делаю не так.

У меня включен сайт по умолчанию, и он отлично работает:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </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

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

Итак, я хотел добавить второй сайт, www.example.com. Я обновил свой файл hosts:

192.168.1.148   sam-NV53    # Added by NetworkManager
127.0.0.1   localhost.localdomain   localhost
::1 sam-NV53    localhost6.localdomain6 localhost6
127.0.1.1   sam-NV53
www.example.com localhost.localdomain localhost

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

И я определил свой новый сайт

<VirtualHost *>
    ServerAdmin sam@foo.com
    ServerName www.example.com
    ServerAlias example.com

    DirectoryIndex index.html
    DocumentRoot /var/www/
</VirtualHost>

Поскольку DocumentRoot для моего нового сайта такой же, как и для моего сайта по умолчанию, я бы ожидал увидеть index.html с моего сайта по умолчанию. Но вместо этого я вижу example.com из Интернета. Что мне здесь не хватает?

редактировать

По-видимому, никто не заметил, что моя запись в моем файле hosts перевернута. Я изменил его на:

127.0.0.1 geekspeak.dev

Теперь это работает. Спасибо всем за ваш вклад :)

что бы ни было в вашем

<VirtualHost>

должно соответствовать тому, что вы указали для

 NameVirtualHost

Итак, если у вас есть

 NameVirtualHost *:80

Все ваши записи виртуального хоста для порта 80 должны выглядеть так:

<VirtualHost *:80>

Поэтому переключите * на *: 80, как в вашем первом примере, и он должен перейти в правильное место

Вот несколько вещей, которые вы можете попробовать:

  1. Как упоминалось в rjacks, не используйте example.com для имени вашего сайта.
  2. Не добавляйте запись в свой hosts файл. В некоторых случаях это может быть полезно, но я не понимаю, как это нужно в данном случае.
  3. Обновите свой DNS, чтобы указать новое имя сервера на IP-адрес вашего веб-сервера. Например, если у вас есть somesite.com вы можете свободно создать поддомен test.somesite.com или любое количество других по желанию.
  4. Не забудьте перезапустить Apache после любых изменений в его файле конфигурации.
  5. Я бы обслужил новый веб-сайт в другом каталоге, чем сайт по умолчанию, по крайней мере временно, чтобы проверить, какой VirtualHosts действительно соответствует и обслуживает его.

Попробуйте использовать что-то другое, кроме example.com, www.example.com или других производных. Эти имена зарезервированы IANA для использования в документации. Я использовал свой собственный сервер Apache, чтобы попытаться настроить виртуальный хост на www.example.com, и меня ВСЕГДА перенаправляли на страницу IANA, но потом я изменил ее на www.someserver.dev и все было хорошо.

Удачи

Я пробовал это с помощью виртуального бокса. ОС хоста - Win7, гостевая ОС - сервер Ubuntu.

1) создайте www.yourdomain.com в / etc / apache2 / sites-available /

<virtualhost *:80> # i recommend adding your interface IP here
    ServerAdmin webmaster@yourdomain.com
    ServerName yourdomain.com
    ServerAlias www.yourdomain.com
    DirectoryIndex index.html
    DocumentRoot /var/www/main/htdocs
    LogLevel warn
    ErrorLog /var/www/main/logs/error.log
    CustomLog /var/www/main/logs/access.log combined
</virtualhost>

2) создать каталоги внутри / var / www

mkdir -p /var/www/main/htdocs
mkdir -p /var/www/main/logs

изменить разрешения для этих каталогов

3) включить сайт в apache2

a2ensite www.yourdomain.com

4) отредактируйте / etc / apache2 / sites-available / default и удалите все строки между DocumentRoot и последней строкой.

5) перезапустите или перезагрузите apache2

6) отредактируйте файл хостов www.yourdomain.com, затем попробуйте.

Это сработало на моем тестовом сервере.