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

258

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

<VirtualHost *:80>
    ServerAdmin [email protected]
    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)

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

Теги:
apache2
virtualhost

10 ответов

491
Лучший ответ

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

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

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

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

sudo a2ensite mysite.com

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

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

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

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

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

Success

  • 22
    Weird! Раньше это работало нормально без расширения в Ubuntu 12.04 и 12.10.
  • 0
    Мне то же самое. Как говорит Гильерме, apache2.conf изменился между версиями Ubuntu или Apache.
Показать ещё 6 комментариев
79

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

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

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

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

Если вы получили ошибку "Разрешить отказ", добавьте "sudo" перед вашими командами терминала.

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

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

a2ensite cmsplus.dev.conf

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

service apache2 reload

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


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

27

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

IncludeOptional sites-enabled/*. conf

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

IncludeOptional sites-enabled/*

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

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

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

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

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

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

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

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

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

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

Вероятно, это просто способ принудительного использования .conf -suffix.

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..

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

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

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

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

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

debian или ubunto [имя службы для этого потока - apache2]

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

другие os оставлены как excersize для читателя.

4

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

1

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

В самом деле, как сказано выше, расширение .conf для Apache 2.4.x необходимо для файлов vhost веб-сайтов, которые находятся в каталоге, доступном на сайтах.

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

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

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

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. После этого я смог a2ensite site2.conf.

0

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

-3

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

NameVirtualHost *:80
<VirtualHost *:80>
    ServerAdmin [email protected]
    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..

  • 0
    Теперь это дает мне по умолчанию It works страницы вместо настроек.
  • 0
    У вас есть несколько виртуальных хостов? Можете ли вы опубликовать весь файл?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню