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

исправил это для меня.