#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 😉