На сайте не существует ошибки для a2ensite


275

У меня есть cmsplus.devпод /etc/apache2/sites-availableследующим кодом,

<VirtualHost *:80>
    ServerAdmin master@server.com
    ServerName www.cmsplus.dev
    ServerAlias cmsplus.dev

    DocumentRoot /var/www/cmsplus.dev/public

    LogLevel warn
    ErrorLog /var/www/cmsplus.dev/log/error.log
    CustomLog /var/www/cmsplus.dev/log/access.log combined
</VirtualHost>

Теперь, когда я использую sudo /usr/sbin/a2ensite cmsplus.dev, я получаю ошибку,

ERROR: Site cmsplus.dev does not exist!

Мой веб-сервер Apache/2.4.6 (Ubuntu)

Как решить эту проблему?

Ответы:


577

Решил проблему, добавив .confрасширение в файлы конфигурации сайта.

Apache a2ensiteприводит к:

Ошибка! Сайт не существует

Проблема; Если вы обнаружили ошибку при попытке включить сайт с помощью:

sudo a2ensite example.com

но это возвращает:

Ошибка: example.com не существует

a2ensite это просто Perl-скрипт, который работает только с именами файлов, заканчивающимися .conf

Поэтому я должен переименовать мой файл настроек для того, example.comчтобы example.com.confдостичь следующего:

mv /etc/apache2/sites-available/example.com /etc/apache2/sites-available/example.com.conf

успех


25
Weird! Раньше это работало нормально без расширения в Ubuntu 12.04 и 12.10.
FloatingRock

Мне то же. Как говорит Гильерме, apache2.conf изменился между версиями Ubuntu или Apache.
Николас Зозол

7
В качестве альтернативы я считаю, что вы можете просто отредактировать файл apache.conf. Соответствующая строка «IncludeOptional sites-enabled / *. Conf». Удалите файл .conf в конце, и вы вернетесь к тому, что работало в 12.04. Я думаю, что это может быть изменение, которое Debian внес в Ubuntu, но я не уверен.
Иосия

2
Почему это ответы 3-го? Это правильный способ сделать это.
Ниши

Я уже сдался после того, как изменил почти все ... Я не
забуду

91

Вы, вероятно, обновили установку Ubuntu, и одно из обновлений включало обновление Apache до версии 2.4.x

В Apache 2.4.x файлы конфигурации vhost, расположенные в каталоге / etc / apache2 / sites-available, должны иметь расширение .conf.

Используя терминал (команда mv), переименуйте все существующие файлы конфигурации и добавьте расширение .conf ко всем из них.

mv /etc/apache2/sites-available/cmsplus.dev /etc/apache2/sites-available/cmsplus.dev.conf

Если вы получили сообщение об ошибке «Отказано в доступе», добавьте «sudo» перед командами вашего терминала.

Вам не нужно вносить какие-либо другие изменения в файлы конфигурации.

Включить vhost (s):

a2ensite cmsplus.dev.conf

А затем перезагрузите Apache:

service apache2 reload

Ваши сайты должны быть запущены сейчас.


UPDATE: Как уже упоминалось здесь , дистрибутив , который вы установили изменили конфигурацию Включить * .conf только. Поэтому это не имеет ничего общего с Apache 2.2 или 2.4


28

Есть еще один хороший способ, просто отредактируйте файл apache2.confв конце строки

Включить дополнительные сайты с поддержкой / *. Conf

просто удалите .confв конце, как это

Включить дополнительные сайты с поддержкой / *

и перезапустите сервер.

(Я пробовал это только в Ubuntu 13.10, когда обновлял его.)


1
Хм ... Я попробовал это на Ubuntu 14.04, и это не сработало. Добавление .confк файлам конфигурации сделало, все же.
Клифтон Лабрум

странно, у меня была эта ошибка, когда я обновил свою Ubuntu 12.04 до 13.10 (потому что я непреднамеренно заменил конфигурационные файлы apache). В обновлении 14.04 я вспомнил, чтобы не заменить, и у меня были какие-то проблемы.
Гильерме

Это действительно не очень хороший способ. Файлы с включенными сайтами являются символическими ссылками на соответствующие файлы на доступных сайтах, и их нужно просто удалить, чтобы отключить сайт - это фактически то, что a2dissite делает с помощью a2ensite соответственно.
Докбуа

8

У меня просто была такая же проблема. Я бы сказал, что это не имеет ничего общего с apache.conf.

a2ensite, должно быть, изменился - строка 532 - это строка, которая применяет суффикс .conf:

else {
    $dir    = 'sites';
    $sffx   = '.conf';
    $reload = 'reload';
}

Если вы измените его на:

else {
    $dir    = 'sites';
    #$sffx   = '.conf';
    $sffx   = '';
    $reload = 'reload';
}

... это будет работать без суффикса.

Конечно, вы не захотите менять скрипт a2ensite, но изменение суффикса файла conf является правильным способом.

Вероятно, это просто способ применения суффикса ".conf".


Смотрите и этот вопрос: askubuntu.com/questions/362682/…
cslotty

7

Итак ... самый быстрый способ - переименовать имена конфигураций сайта, заканчивающиеся на ".conf"

mv /etc/apache2/sites-available/mysite /etc/apache2/sites-available/mysite.conf

a2ensite mysite.conf

другие примечания к предыдущим комментариям:

  • IncludeOptional не был представлен, пока apache 2.36 - внесение изменений выше с последующим перезапуском на 2.2 оставит ваш сервер недоступным!

  • Кроме того, версия 2.2 a2ensite не может быть взломана, как описано

Кроме того, поскольку файл, доступный для вашего сайта, на самом деле является файлом конфигурации, его в любом случае следует называть таким образом.


В общем случае не перезапускайте сервисы (веб-серверы - это один из видов сервисов):

  • люди не могут найти их, если они не бегут! Думаю, Linux не MS Windows ..

Серверы могут работать в течение многих лет - обновление в режиме реального времени, перезагрузка конфигурации и т. Д.

Облако не означает, что вам нужно перезапустить, чтобы загрузить файл конфигурации.

  • При изменении конфигурации службы используйте «перезагрузка», а не «перезагрузка».

  • restart останавливает службу, затем запускает службу - если при изменении конфигурации у вас возникнут проблемы, служба не будет перезапущена.

  • перезагрузка выдаст ошибку, но служба никогда не отключится, что даст вам возможность исправить ошибку конфигурации, которая может быть только с плохим синтаксисом.

debian или ubunto [имя службы для этой темы - apache2]

service {service-name} {start} {stop} {reload} ..

другой ос оставлен в качестве упражнения для читателя.


5

Сработало после того как я добавил .confв файл конфигурации


2

Я только что обновил версию Ubuntu Server с 12.04 LTS до 14.04 LTS.

Действительно, как уже говорилось выше, расширение .conf для Apache 2.4.x необходимо для файлов vhost веб-сайтов, которые находятся в каталоге sites-available.

Прежде чем прочитать этот вопрос, я понятия не имел, что происходит с сервером.

Довольно приятное решение.

Подводя итог, я сделал следующие шаги в терминале:

1) Доступ к сайтам с включенной папкой

$ cd /etc/apache2/sites-enabled

2) Поскольку команда a2dissite не будет работать с устаревшими файлами (без .conf), удалите старые файлы сайта, которые были опубликованы

$ sudo rm <my-old-website-without-.conf>

3) Переименуйте файлы vhost сайта, изменив его расширение, добавив .conf в конец

$ sudo mv /etc/apache2/sites-available/mywebsite /etc/apache2/sites-available/mywebsite.conf

4) Опубликуйте новый и правильный файл vhost

$ sudo a2ensite mywebsite.conf

5) Проверьте сайт в браузере и получайте удовольствие! :)


1

В моем случае с Ubuntu 14.04.3 и Apache 2.4.7 проблема заключалась в том, что я скопировал site1.conf, чтобы сделать site2.conf доступным, и, скопировав, что-то случилось, и я не смог a2ensite site2.conf с ошибкой, описанной в теме ,

Решением для меня было переименовать site2.conf в site2, а затем снова переименовать site2 в site2.conf. После этого мне удалось зайти на сайт site2.conf.


1

Я понимаю, что это не тот случай, но это может кому-то помочь.

Дважды проверьте, что вы не создали файл conf в / etc / apache2 / sites-enabled по ошибке. Вы получаете ту же ошибку.


-2

Попробуй вот так ..

NameVirtualHost *:80
<VirtualHost *:80>
    ServerAdmin master@server.com
    ServerName www.cmsplus.dev
    ServerAlias cmsplus.dev

    DocumentRoot /var/www/cmsplus.dev/public

    LogLevel warn
    ErrorLog /var/www/cmsplus.dev/log/error.log
    CustomLog /var/www/cmsplus.dev/log/access.log combined
</VirtualHost>

и добавьте запись в / etc / hosts

127.0.0.1 www.cmsplus.dev

перезагрузите apache ..


Теперь он дает мне It worksстраницу по умолчанию вместо настроек.
Дево

У вас есть несколько виртуальных хостов? Можете ли вы опубликовать весь файл?
Balaji Perumal

3
Спасибо, решил эту проблему, просто добавив .confрасширение к этим файлам конфигурации сайта.
Дево
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.