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, как в вашем первом примере, и он должен перейти в правильное место
Вот несколько вещей, которые вы можете попробовать:
example.com
для имени вашего сайта. hosts
файл. В некоторых случаях это может быть полезно, но я не понимаю, как это нужно в данном случае.somesite.com
вы можете свободно создать поддомен test.somesite.com
или любое количество других по желанию.Попробуйте использовать что-то другое, кроме 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, затем попробуйте.
Это сработало на моем тестовом сервере.