На сайті не існує помилки для 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
Дивно! Це нормально працювало без розширення в Ubuntu 12.04 та 12.10.
FloatingRock

Те саме для мене. Як каже Гільгерм, апарат apache2.conf змінився між версіями ubuntu або Apache.
Ніколя Зозол

7
Як альтернатива, я вважаю, що ви можете просто відредагувати файл apache.conf. Відповідний рядок "Включити необов'язкові сайти / *. Conf" Видаліть .conf наприкінці, і ви повернетесь до того, що працювало в 12.04. Я думаю, що це може бути зміна, яку Debian вніс, коли він перейшов в Ubuntu, але я не впевнений.
Йосія

2
Чому це відповідь 3-й? Це правильний спосіб зробити це.
nish

Я вже відмовився, змінивши майже все ... Я буду пам'ятати, щоб додати розширення .conf відтепер ...
wtf8_decode

91

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

У Apache 2.4.x файли конфігурації vhost, що знаходяться у доступному каталозі / etc / apache2 / sites, повинні мати розширення .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

Зараз ваші веб-сайти мають працювати.


ОНОВЛЕННЯ: Як уже згадувалося тут , встановлений вами дистрибутив Linux змінив конфігурацію лише на Include * .conf. Тому це не має нічого спільного з Apache 2.2 або 2.4


28

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

Включити необов'язкові сайти / *. Конф

просто видаліть .confкінець, як це

Включити необов'язкові сайти / *

та перезавантажте сервер.

(Я спробував це лише в Ubuntu 13.10, коли оновив його.)


1
Гм ... Я спробував це на Ubuntu 14.04, і це не вийшло. Додавання .confдо конфігураційних файлів, проте.
Кліфтон Лабрум

Дивно, що у мене виникла помилка, коли я оновив свою 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, але зміна суфікса файлу conf - це правильний спосіб.

Це, мабуть, лише спосіб примусового суфіксу ".conf".


Дивіться також це питання: askubuntu.com/questions/362682/…
cslotty

7

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

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

a2ensite mysite.conf

інші примітки до попередніх коментарів:

  • Включити Необов'язково не було введено доти, поки apache 2.36 - внесення змін вище та перезапуск 2.2 не залишить ваш сервер вниз!

  • також, версію 2.2 a2ensite не можна зламати, як описано

також, оскільки доступний для ваших веб-сайтів файл - це фактично файл конфігурації, його все одно слід назвати ..


В загальному , не перезапускайте сервіси (веб-сервери - це один із видів послуг):

  • люди не можуть їх знайти, якщо вони не запущені! Подумайте, що Linux не MS Windows ..

Сервери можуть працювати протягом багатьох років - оновлення в реальному часі, перезавантаження конфігурації тощо.

Хмара не означає, що вам потрібно перезапустити, щоб завантажити файл конфігурації.

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

  • перезапуск зупиняє послугу, потім запускає службу - якщо в зміні конфігурації є якісь проблеми, служба не буде перезапуститься.

  • Перезавантаження призведе до помилки, але сервіс ніколи не вимикається, що дає вам можливість виправити помилку конфігурації, яка може бути лише поганим синтаксисом.

debian або ubunto [ім'я служби для цієї теми - apache2]

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

інші ос ліві як чудовий для читача.


5

Працював після того, як я додав .confу файл конфігурації


2

Я щойно оновив версію сервера Ubuntu з 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, щоб зробити сайт2.conf доступним, і, скопіювавши щось, відбулося, і я не зміг a2ensite site2.conf з помилкою, описаною в потоці .

Для мене рішенням було перейменувати site2.conf на site2, а потім знову перейменувати site2 на site2.conf. Після цього мені вдалося a2ensite site2.conf.


1

Я розумію, що це не так, але це може комусь допомогти.

Двічі перевірте, чи не ви створили конф-файл у / etc / apache2 / sites-включеному помилково. Ви отримуєте ту ж помилку.


-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

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


Тепер це дає мені It worksсторінку за замовчуванням замість налаштувань.
дев

У вас є кілька конфігурацій віртуальних хостів? Чи можете ви розмістити весь вміст файлу?
Баладжі Перумал

3
Дякуємо, вирішили цю проблему, просто додавши .confрозширення до цих файлів конфігурації сайту.
дев
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.