从当前运行的 Apache 获取 Apache Vhost

Posted

技术标签:

【中文标题】从当前运行的 Apache 获取 Apache Vhost【英文标题】:Get Apache Vhosts from Currently Running Apache 【发布时间】:2013-11-03 11:02:08 【问题描述】:

所以...我不小心删除了站点可用文件夹中的 vhosts 文件。

我想找回我的虚拟主机。有没有办法从当前运行的 apache 配置中获取它?我还没有重新启动。

这个人说不,但这是几年前的事了。

Apache : Recover "sites-enabled" config files

【问题讨论】:

尝试在底层文件系统上恢复可能是更好的选择。 @ChristianTernus 嘿,谢谢你的帮助。你能扩展一下你的意思吗? 几个问题:您可以物理访问您的服务器吗?您的 vhosts 文件所在的分区(已存在?:( )是否与您的引导分区不同?您是否碰巧有一个磁盘附加的可用空间大于您的 vhosts 文件所在的分区的大小? 1.带有 linode 的 VPS,因此没有物理访问。 2.没有 3.没有 还有一件事要尝试:lsof | grep /path/to/vhosts_dir/ 【参考方案1】:

在 VPS 上进行远程磁盘恢复——我们开始吧!

首先,尝试:

lsof | grep /etc/apache2。如果您看到类似的内容:

apache 1224 www-data 22r REG 8,5 1282410 1294349 /etc/apache2/sites-available/foo

你很幸运!来自extundelete's website:

如果您认为文件可能仍被某些程序打开(例如, 如果它是电影播放器​​当前正在播放的电影文件),以及 您知道文件名,然后首先按照以下步骤操作:

lsof | grep "/path/to/file"

progname 5559 user 22r REG 8,5 1282410 1294349 /path/to/file

请注意,第二列中的数字是 5559,而 第四列中的数字是 22。恢复该文件的命令 是:

cp /proc/5559/fd/22 restored.file

如果这不起作用,好吧。 Lots 的 people 相信你被搞砸了。但我觉得还是有希望的!

请注意,我认为这是一个

尽快关闭系统。 Make a full bit-for-bit backup of your disk image over the network。 在第二台 Linux 机器上,执行 apt-get install extundelete。 在该磁盘映像上运行 extundelete,看看您能得到什么。

如果您无法通过网络备份您的磁盘(空间不足,无法访问另一个 Linux 机器),您可以尝试booting into Linode recovery mode 并尝试直接在磁盘上进行 extundelete。这可能会导致数据损坏,因此如果您真的很重视磁盘,请不要这样做 - 或者再次备份它。

当然 - 唠叨时间 - 最好的解决方案是首先打开备份。

【讨论】:

没有尝试,因为它需要太长时间。 :) 但是感谢您的出色回答。

以上是关于从当前运行的 Apache 获取 Apache Vhost的主要内容,如果未能解决你的问题,请参考以下文章

apache的配置文件中,哪个字段定义了访问日志的路径

从客户端 Apache 和 Php 获取 IP

未在运行状况检查请求中设置 SNI 扩展 (Apache v.2.4.35)

如何从 Apache 重定向到 Tomcat?

PHP 在Apache或IIS中使用PHP获取当前URL

尝试从 Apache Beam 中的选项获取值时出现空指针异常