Apache не использует DocumentRoot после обновления до Ubuntu 13.10 (использует страницу по умолчанию, в которой говорится: "Это работает!" )
У меня есть различные виртуальные хосты для моей работы в области веб-разработки, в том числе
УНМ.
sites-available/cnm
Мой файл говорит очень просто:
<VirtualHost *:80>
ServerName cnm
DocumentRoot /var/www/cnm/public_html
</VirtualHost>
Я обновился до Ubuntu 13.10, и когда я укажу свой браузер на cnm/, я вижу
/var/www/index.html, который, как представляется, указан в файле по умолчанию
sites-available/000-default.conf
который говорит (между прочим):
<VirtualHost *:80>
DocumentRoot /var/www
Что мне нужно сделать, чтобы Apache мог читать мой корневой каталог cnm, когда я просматриваю cnm/?
ПРИМЕЧАНИЯ:
-
Я уже пробовал переименовать мой сайт-доступный/cnm файл на сайты-available/cnm.conf и включить его с помощью a2ensite cnm
и service apache2 reload
. Это хорошо, но ничего не меняет.
-
Я уже пробовал изменить <VirtualHost *:80>
на <VirtualHost cnm.localhost>
или на <VirtualHost cnm>
. Это ничего не делало.
Ответы
Ответ 1
Я нашел ответ на мою проблему. Мне нужно было удалить файлы в /etc/apache 2/sites-enabled.
- Удалить файлы в /etc/apache 2/sites-enabled
- Переименуйте файлы конфигурации в /etc/apache 2/sites - для завершения окончания .conf
- Для каждого файла в доступных сайтах запустите
sudo a2ensite mysite
.
- Выполнить
sudo service apache2 reload
Ответ 2
Ubuntu 13.10 использует apache 2.4, вы должны проверить всю конфигурацию вашего Apache. Но для этого случая вы должны заметить, что команды a2ensite
и a2dissite
не смогут видеть ваши файлы в /etc/apache 2/sites-available, если они не заканчиваются на .conf
, поэтому переименуйте его в sites-available/cnm.conf
и запустите a2ensite cnm
.
Тогда ваше определение Virtualhost, безусловно, лучше с *:80
, это означает, что этот виртуальный хост активирован для всех IP-интерфейсов (*
) на порту 80. cnm.localhost
или cnm
здесь недопустимые значения, только номера IP (Ip вашего сервера apache) или *
для всех и номер порта.
Затем проверьте, как конфигурация читается apache, запуская команды theses:
# load apache env
# be careful, there is a dot and a space
. /etc/apache2/envvars
# Check apache Virtualhosts config
apache2 -S
Вы должны получить что-то вроде:
VirtualHost configuration:
*:80 is a NameVirtualHost
default server something (/etc/apache2/sites-enabled/000-default.conf:1)
port 80 namevhost something (/etc/apache2/sites-enabled/000-default.conf:1)
port 80 namevhost cnm (/etc/apache2/sites-enabled/cnm.conf:4)
Если это нормально, и если у вас есть правильный Ip в файле hosts для cnm
, и вы можете проверить это с помощью ping, то с помощью http://cnm/
следует использовать Virtualhost с cnm в ServerName.
Если у вас есть ответ от Virtualhost по умолчанию, это означает, что apache не находит имя, используемое в заголовке вашего хоста, в списке ServerName и ServerAlias, доступном для этого IP/порта, и возвращается к виртуальному хосту по умолчанию. Если вы действительно застряли (и вы не забыли перезапустить), вы всегда можете удалить виртуальный хост по умолчанию и сохранить только тот, над которым работаете.
Ответ 3
Я не мог найти пошаговое руководство о том, как заставить его работать на моей стороне. Я собирал кусочки здесь и там, поэтому для тех, кому нужны все шаги, чтобы следовать, здесь есть:
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/local-mydefault.conf
$ sudo gedit /etc/apache2/sites-available/local-mydefault.conf
Вставьте следующее в файл local-mydefault.conf(измените путь "/ваш/полный/путь" туда, где вы хотите иметь свои файлы. И измените имя пользователя на свое собственное имя пользователя):
# ------------------------------------------------------
<VirtualHost *:80>
ServerName localhost
ServerAdmin [email protected]
DocumentRoot /your/full/path
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /your/full/path>
DirectoryIndex index.php
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Require all granted
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
User username
Group username
# ------------------------------------------------------
Затем введите следующие команды
$ cd /etc/apache2/sites-available/
$ sudo a2ensite local-mydefault.conf
$ sudo a2dissite 000-default.conf
$ sudo /etc/init.d/apache2 restart
Ответ 4
Я нашел ответ на этот вопрос:
При обновлении до Ubuntu 13.10
DocumentRoot
, похоже, не имеет значения.
Это связано с тем, что Apache 2.4 переместил конфигурацию Directory в другое место. В ваших старых файлах .conf
все еще есть следующие строки:
DocumentRoot "/var/www/myVhost"
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory "/var/www/myVhost">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
Удалите (или закомментируйте) директивы <Directory>
, чтобы у вас было только:
DocumentRoot "/var/www/myVhost"
Теперь перезагрузите настройки: service apache2 reload
и DocumentRoot
.:)
Ответ 5
Переименуйте конфигурацию файла "cnm" с расширением .conf
mv sites-available/cnm sites-available/cnm.conf
a2ensite sites-available/cnm.conf
И готов!
service apache2 reload
Ответ 6
У меня такая же проблема
на пути - отключить 000-default и перезагрузить apache, но это не решение, потому что вы должны иметь только один vhost в одно и то же время: (
sudo a2dissite 000-default.conf
sudo service apache2 reload
Ответ 7
У меня возникла аналогичная проблема. Имя моего сервера и мое полное доменное имя были одинаковыми по умолчанию, запущен в каталог /var/www/html. Я отключил настройку по умолчанию, и мой сайт работал как легкий ветерок. Спасибо @regilero.
sudo a2dissite 000-default.conf
исправил это для меня.