SED: удалить виртуальный хост из httpd-vhosts.conf - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь удалить элемент виртуального хоста из httpd-vhosts.conf с помощью sed с правильным совпадающим регулярным выражением.

Я хочу удалить блок, подобный этому:

<VirtualHost *:80>
    ServerName local.testsite.org
    DocumentRoot "/home/sites/local.testsite.org/www"
    ErrorLog "/home/sites/local.testsite.org/logs/error_log"
    CustomLog "/home/sites/local.testsite.org/logs/access_log" common
    <Directory "/home/sites/local.testsite.org/www">
        AllowOverride All
        Order Allow,Deny
        Allow from All
    </Directory>
</VirtualHost>

Мое регулярное выражение соответствует ему (https://regex101.com/r/Owis8w/3):

/<VirtualHost \*:80>\n\tServerName local.duudaduu.com(.|\n)*<\/VirtualHost>/

Как использовать это выражение с sed, я не могу понять, как заставить это работать с sed ...

sed '/<VirtualHost \*:80>\n\tServerName local.testsite.org(.|\n)*<\/VirtualHost>/' /usr/local/etc/httpd/extra/httpd-vhosts.conf

1 Ответ

0 голосов
/ 14 марта 2019

В конце концов я отказался от этого метода из-за гораздо более простого способа создания и удаления virtualHosts на apache, используя отдельные файлы .conf для каждого хоста.Таким образом, я могу просто создать или удалить файл вместо поиска многострочной строки в файле.

Я хотел загрузить отдельный файл .conf для каждого виртуального хоста в apache на моем Mac (apache и т. Д. Устанавливаются сhomebrew).

Это было легко настроить в моем httpd.conf.Вместо того, чтобы искать файл, просто ищите все файлы в каталоге с etc/httpd/vhosts/*.conf:

# Virtual hosts
# Include /usr/local/etc/httpd/extra/httpd-vhosts.conf  # Original rule
Include /usr/local/etc/httpd/vhosts/*.conf              # New rule

Это ищет и включает все файлы .conf в этой папке.Мои имена файлов такие: local.website.com.conf, содержащие что-то вроде этого:

<VirtualHost *:80>
    ServerName local.website.com
    DocumentRoot "/Users/john/Sites/local.website.com/www"
    <Directory "/Users/john/Sites/local.website.com/www">
        AllowOverride All
        Order Allow,Deny
        Allow from All
    </Directory>
</VirtualHost>

При таком подходе вы можете просто удалить файл .conf, перезапустить apache и все готово!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...