Ubuntu 11.04 установлена с apache2, и все соответствующие пакеты установлены. Я попробовал большинство блогов и сделал Google и другие форумы моими лучшими друзьями, все же я не могу решить эту проблему.
Я Потребность настроить именованный виртуальный хост в моей локальной системе для разработки.
Я создал каталог "vivek" в /var/www
и скопированный index.html по умолчанию и отредактированный некоторые элементы.
Я добавил файл vivek.com
в /etc/apache2/sites-available
следующим образом:
# Ensure that Apache listens on port 80
Listen 80
# Listen for virtual host requests on all IP addresses
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.vivek.com
DocumentRoot /var/www/vivek
# Other directives here
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/vivek/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
<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>
Т.е. я добавил эти после строк
# Ensure that Apache listens on port 80
Listen 80
# Listen for virtual host requests on all IP addresses
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.vivek.com
DocumentRoot /var/www/vivek
# Other directives here
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/vivek/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
В файл по умолчанию, который уже присутствовал в "доступной сайтам" папке (поднял заднюю часть файла по умолчанию прежде, чем отредактировать его),
Добавленный это в файле hosts, существующем в/etc/hosts
127.0.0.1 localhost
127.0.1.1 vivek-PC
127.0.0.1 www.vivek.com
Выполненный следующие операции без ошибок:
root@vivek-PC:~# a2ensite vivek.com
Enabling site vivek.com.
Run '/etc/init.d/apache2 reload' to activate new configuration!
root@vivek-PC:~# /etc/init.d/apache2 reload
* Reloading web server config apache2
Когда я вошел www.vivek.com
, это дало мне index.html по умолчанию в /var/www
но не одно существующее в папке,/var/www/vivek, который редактируется.
Позже, я отредактировал index.html от /var/www
но я все еще получал тот же index.html (значение по умолчанию - прежде, чем отредактировать). Все index.htmls были отредактированы, но Apache, кажется, имеет некоторых скрытый, который продолжает подходить, когда я запрашиваю на www.vivek.com
И ироническая вещь состоит в том после того, как я перезапускаю - Apache подошел прекрасный, но мой сайт- www.vivek.com
не удалось обнаружиться (даже с index.html, который является скрытым богом, знает где!!).. Теперь мой браузер показывает "Не могущий соединиться"
Помогите. Я пытался настроить это с недели без успешного результата.
Позже, я отредактировал index.html от/var/www, но я все еще получал тот же index.html (значение по умолчанию - прежде, чем отредактировать). Все index.htmls были отредактированы, но Apache, кажется, имеет некоторых скрытый, который продолжает подходить, когда я запрашиваю на www.vivek.com
Путем чтения этого я предполагаю, что Вы просматриваете кэшируемый файл. Вместо того, чтобы нажатие F5 или поразить Кнопку Обновить, пропустите кэш на обновлении путем нажатия Ctrl + F5.
Alternatiely, используйте программу командной строки curl
(который не установлен по умолчанию). Использование в качестве примера:
$ curl -i http://localhost/
HTTP/1.1 200 OK
Date: Sat, 02 Jul 2011 00:42:01 GMT
Server: Apache/2.2.17 (Ubuntu)
Last-Modified: Fri, 01 Jul 2011 04:12:49 GMT
ETag: "4507-b1-4a6fa3b114149"
Accept-Ranges: bytes
Content-Length: 177
Vary: Accept-Encoding
Content-Type: text/html
<html><body><h1>It works!</h1>
<p>This is the default web page for this server.</p>
<p>The web server software is running but no content has been added, yet.</p>
</body></html>
Одно примечание: Я сделал следование чистой апачской установки:
/etc/apache2/sites-available/vivek.com
/etc/apache2/sites-available/default
нетронутый)sudo a2ensite vivek.com
sudo /etc/init.d/apache reload
Я получаю те же сообщения как Вы. Однако серверу не удалось запуститься. При остановке использования сервера sudo /etc/init.d/apache2 stop
и запуск его снова использование sudo /etc/init.d/apache2 start
, это отказалось запускаться вообще. Взгляд в журнале ошибок /var/log/apache2/error.log
показанный некоторые ошибки:
[Sat Jul 02 00:48:09 2011] [notice] Graceful restart requested, doing restart
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
[Sat Jul 02 00:48:09 2011] [warn] NameVirtualHost *:80 has no VirtualHosts
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Таким образом, порт 80, кажется, используется. Но если Apache еще не запускается, я могу подтвердить, что ничто не слушает на порте 80 путем выполнения sudo netstat -tpln
. Я рассмотрел конфигурацию и пришел к заключению что строка Listen 80
должен быть удален из Вашего конфигурационного файла /etc/apache2/sites-available/vivek.com
. После этого я мог запустить сервер снова и использование curl
, Я подтвердил, что сервер правильно отвечает на запросы.
KISS, Ваш второй vhost блок избыточен, поскольку он покрыт /etc/apache2/sites-available/default
. Следующий конфигурационный файл /etc/apache2/sites-available/vivek.com
:
<VirtualHost *:80>
ServerName www.vivek.com
DocumentRoot /var/www/vivek
# Other directives here
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/vivek/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
Существует сценарий, который делает это простым для Вас - https://github.com/RoverWire/virtualhost
Это в конечном счете делает то же, утончается, как объяснено данными ответами, но выполняет в нем всего одна команда, например, -
sudo virtualhost create mysite.local my_site
Это также позволяет Вам удалять хост, который Вы создали
sudo virtualhost delete mysite.local my_site
Просто обратите внимание, что "my_dir" предполагает, что запускается после/var/www
Таким образом, если Ваша папка сайта находится в/var/www/my_site
Необходимо работать, это (передайте путь к каталогу без/var/www) -
sudo virtualhost create mysite.local my_site
Можно также изменить файл сценария и удалить путь по умолчанию "/var/www" так, чтобы можно было передать полный путь каталогу сайта