Как отключить все виртуальные хосты apache?

#apache #virtualhost

Вопрос:

Я пишу сценарий оболочки для настройки веб-сервера. Мне нужно отключить все активные в данный момент виртуальные хосты. a2dissite не принимает несколько аргументов, поэтому я не могу этого сделать

 a2dissite `ls /etc/apache2/sites-enabled`
 

Должен ли я использовать find ? Безопасно ли вручную удалять символические ссылки в /etc/apache2/sites-enabled ?

Ответ №1:

ubuntu 12.04 lts / ubuntu 16.04 lts

Вы можете просто сделать следующее [ПРИМЕЧАНИЕ: вам может потребоваться разрешение root sudo a2dissite]

 a2dissite *
 

Или

 a2dissite
 

И он подскажет вам, что вы хотите сделать

когда вы полностью отключите сайты, перезапустите сервер apache2

 sudo systemctl restart apache2
 

или просто перезагрузите конфигурацию apache без полной перезагрузки:

 sudo service apache2 reload
 

Комментарии:

1. Это работает только в том случае, если вы находитесь в /etc/apache/sites-enabled (или аналогичном каталоге).

Ответ №2:

После небольшого дополнительного исследования я выяснил, что a2dissite это всего лишь сценарий оболочки, и он в основном просто вызывает rm . Поэтому, как и в других ответах, я согласен с тем, что это безопасно делать

 rm /etc/apache2/sites-enabled/*
 

Ответ №3:

Ваш сценарий только для Debian? Если это так, вы можете безопасно удалить все символические ссылки с включенными сайтами, которые будут работать до тех пор, пока все сайты были написаны правильно, в каталоге «Доступные сайты».

Например:

  find /etc/apache2/sites-enabled/ -type l -exec rm -i "{}" ;
 

защитит вас от кого-то, кто на самом деле написал файл вместо символической ссылки в этом каталоге.

(конечно, удалите-i из rm для автоматического сценария)

Комментарии:

1. РЕДАКТИРОВАНИЕ моего предыдущего комментария — Обновлено для Debian Stretch: Основываясь на вашем ответе, я бы рекомендовал продолжить, find /etc/apache2/sites-available/ -type f -exec basename '{}' ; | xargs -n 1 a2dissite чтобы вы были в безопасности, если сценарий a2dissite изменится в будущем…

Ответ №4:

Чтобы удалить файл хоста, просто удалите его. Если вы просто хотите удалить сайт, используйте

 sudo a2dissite sitename
 

Перезапустить apache2

 sudo /etc/init.d/apache2 reload
 

Еще раз, чтобы удалить (удалить)его полностью из системы,

 sudo rm /etc/apache2/sites-available/sitename
 

Я бы также сначала отключил его, прежде чем удалять файл

Ответ №5:

Вы можете просто удалить символические ссылки или переместить весь каталог. Кроме этих ссылок, нет никакой специальной базы данных или других метаданных.

Комментарии:

1. Я не знаю, почему это было отклонено. Все a2ensite a2dissite , что делает or,-это создает или удаляет ссылки в каталоге /etc/apache2/с поддержкой сайтов. Однако для большинства людей перемещение каталога может быть немного чрезмерным.

Ответ №6:

Я никогда не использую «a2dissite» и всегда удаляю и создаю ссылки в /etc/apache2/сайты с поддержкой вручную, так что да, я бы сказал, что это довольно безопасно.

Ответ №7:

Вот мой обходной путь, первый тип:

# a2dissite (введите эту команду без каких-либо аргументов, она предложит вам выбрать следующую строку)

Ваш выбор таков: SiteA SiteB siteC расположен

Какой сайт(ы) вы хотите отключить (подстановочные знаки ок)?

Теперь вы просто копируете весь приведенный выше список сайтов (SiteA SiteB siteC) и вставляете в качестве ответа, затем вводите.

Выходным результатом будет:

 removing dangling symlink /etc/apache2/sites-enabled/siteA.conf
removing dangling symlink /etc/apache2/sites-enabled/siteB.conf
removing dangling symlink /etc/apache2/sites-enabled/siteC.conf
removing dangling symlink /etc/apache2/sites-enabled/siteD.conf
 

Такой подход поможет нам по желанию выбрать, чтобы длинный список названий сайта был удален или нетронут.

Ответ №8:

вы можете отредактировать httpd.conf и удалить строку включения для виртуальных хостов (внизу файла).

Комментарии:

1. ну, это делается с помощью сценария оболочки, и нет никакой уверенности в том, какова структура файла httpd.conf

2. он может использовать регулярные выражения. включить-это почти то же самое. он мог бы передать адрес vhosts в качестве аргумента и на основе этого построить регулярное выражение

3. также нет гарантии, что все vhosts определены в файлах конфигурации, связанных из каталога с поддержкой сайтов.

4. Однако это помешало бы возможности быстро активировать некоторые из этих хостов в будущем.

Ответ №9:

По-видимому, вы можете просто установить последнюю версию Ubuntu 😉