碰巧 apache2 conf 文件包含带有密码和其他有价值数据的环境变量。apache2 启动后,我删除了我的 conf 文件。我知道要重新启动,我将不得不再次创建这些文件。
apache2 将按预期继续工作多长时间(显示我的站点)?apache2 启动后是否读取 conf 文件?
我问是因为碰巧我没有重新启动服务器,但它们显示了 apache ubuntu 默认页面
ps-辅助 | grep 阿帕奇
www-data 27019 0.0 0.0 424372 12780 ? S 15:52 0:00 /usr/sbin/apache2 -k start
www-data 27963 0.0 0.0 424372 12800 ? S 16:46 0:00 /usr/sbin/apache2 -k start
www-data 27964 0.0 0.0 423968 12500 ? S 16:46 0:00 /usr/sbin/apache2 -k start
www-data 28159 0.0 0.0 423968 12424 ? S 16:59 0:00 /usr/sbin/apache2 -k start
www-data 28607 0.0 0.0 423968 11044 ? S 17:19 0:00 /usr/sbin/apache2 -k start
ubuntu 28688 0.0 0.0 12948 956 pts/0 R+ 17:23 0:00 grep --color=auto apache
root 28766 0.0 0.2 423888 34928 ? Ss 2018 06:14 /usr/sbin/apache2 -k start
UPD:我知道这是删除 conf 文件的糟糕方法。
一旦 apache 启动,您就可以删除这些文件,它会继续运行,直到它需要再次读取文件(例如,如果您重新启动守护程序)。
这似乎是一个X->Y问题,您实际上并没有说明您的问题,只是问了一个您可能认为是解决方案的问题。然而,这不是一个可取的解决方案。
正如 @djsmiley2k 所说,如果配置文件在启动时存在,Apache 将在没有配置文件的情况下继续运行。不,这不是一个好的解决方案,正如他所说,你也知道。
也就是说,在回答 apache2 是否会工作时......我会说“不”。
大多数系统会出于各种原因自动重启 Apache 和/或重新加载 Apache 配置。例如,Apache 通常会在其日志文件轮转时重新启动。许多这些自动化任务对于基于 Apache 的 Web 服务器的正常运行是必需的。您还必须自动重新创建配置文件......这意味着您必须将密码存储在其他地方,此时您已经破坏了删除配置文件的目的。
此外,还有计划外的重启......例如当 apache2 崩溃时。Apache 虽然稳定,但并非万无一失。SOP 是要有一些方法来监视 Apache 进程并在它挂起或崩溃时自动重新启动它。许多现代系统为此使用 systemd。同样,您可以将配置文件的自动重建添加到重启过程中……但这样做仍然无法达到删除配置文件的目的。
这里真正的解决方案是保护您的敏感数据。环境变量应该由您用来管理 Apache 进程的任何工具来设置。Systemd(例如)为此提供了 工具。用于本地身份验证的密码应该被加密并存储在只能由运行 Apache 的用户(即
root
)读取/写入的文件中,尤其是它读取文件的用户(即www-data
)。如果您有用于远程身份验证的密码(即从您的网络服务器到另一台服务器或服务的身份验证...例如数据库),那么您应该考虑将它们替换为预共享的公钥/私钥,例如用于 ssh 身份验证...更不用说远程服务器之间的加密(说真的,ssh 隧道,好东西)......同样,存储在只有启动 Apache 的特权用户才能访问的文件中。而且,老实说,Apache 本身不应该处理对另一个服务的身份验证任务......
虽然我同意不将关键数据直接存储在 apache conf 文件中,但这是一个不同的想法。绝对不是任何类型的密码。
您可以在 conf.d 文件夹中创建自己的 *.conf 文件。Apache 仍会加载它们。
然后将所有有价值的数据迁移到一个新的 .conf 文件中。现在您只有 1 个文件要删除并重新建立。
因此 apache 仍然会有一些可用的配置数据,而不是作为一个空白的 apache 安装启动。显然 documentRoot 文件夹是最重要的。