Есть ли способ заставить веб-сервер Apache отображать текущую текущую конфигурацию из памяти, то есть не путем анализа файлов в каталогах конфигурации?
Мне только что удалось случайно перезаписать конфигурацию vhost на сервере (да, я знаю, должна была быть резервная копия!), И хотя я могу легко ее восстановить (очень новый сервер, такая простая конфигурация и, следовательно, нет резервной копии еще - это была задача завтрашнего дня), интересовался, есть ли вообще способ заставить Apache отображать свою текущую рабочую конфигурацию, а не просто анализировать файлы (как, похоже, делает httpd -S).
Пробовали поиск в Google и поиск здесь на ServerFault, но ничего не нашли. Я могу представить, что со временем это могло бы спасти некоторых людей. :)
Вот как восстановить конфигурацию Apache2 из памяти:
в Дамп памяти процесса Linux в файл
#!/bin/bash
grep rw-p /proc/$1/maps | sed -n 's/^\([0-9a-f]*\)-\([0-9a-f]*\) .*$/\1 \2/p' | while read start stop; do gdb --batch --pid $1 -ex "dump memory $1-$start-$stop.dump 0x$start 0x$stop"; done
./dump-all-memory-of-pid.sh [pid]
pid-startaddress-stopaddress.dump
gdb
получить pid вашего процесса apache
pgrep -uroot apache2
сбросить память процесса
mkdir /tmp/apache_dump && cd /tmp/apache_dump
sh /path/to/dump-all-memory-of-pid.sh <PID>
grep все файлы дампа для того, что, по вашему мнению, должно быть в файле конфигурации apache.
grep DocumentRoot *
откройте соответствующий файл (ы) дампа в vim и найдите строку.
vim 24374-7f159d56c000-7f159d72c000.dump
Выполните поиск, набрав «/», например «/ DocumentRoot», а затем просто скопируйте нужный текст.