碰巧的是,apache2 conf 文件包含带有密码和其他有价值数据的环境变量。启动 apache2 后,我删除了我的 conf 文件。我知道重新启动时我必须再次创建这些文件。
apache2 能按预期继续工作多久(显示我的网站)?apache2 启动后会读取 conf 文件吗?
我之所以问这个问题,是因为我没有重启服务器,但它们却显示了 apache ubuntu 默认页面
ps -aux |删除 Apache
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:我知道这是删除配置文件的错误方法。
答案1
正如 @djsmiley2k 所说,如果配置文件在启动时存在,Apache 将继续在没有配置文件的情况下运行。不,这不是一个好的解决方案,正如他所说,您也知道。
尽管如此,在回答 apache2 是否会工作或者不……我会说“不“。
大多数系统会因为各种原因自动重启 Apache 和/或重新加载 Apache 配置。例如,Apache 通常在日志文件轮换时重启。许多此类自动化任务对于基于 Apache 的 Web 服务器的正常运行必不可少。您还必须自动重新创建配置文件……这意味着您必须将密码存储在其他地方,此时您就失去了删除配置文件的目的。
此外,还会发生意外重启……例如当 apache2 崩溃时。Apache 虽然很稳定,但并非万无一失。标准操作程序是采用某种方法来监视 Apache 进程,并在其挂起或崩溃时自动重新启动它。许多现代系统都使用 systemd 来实现这一点。同样,您可以将配置文件的自动重建添加到重启过程中……但这样做仍然违背了删除配置文件的初衷。
真正的解决方案是保护您的敏感数据。环境变量应由您用来管理 Apache 进程的任何工具设置。例如 Systemd提供 工具为此。密码用于本地认证应该加密并存储在仅可由运行 Apache 的用户读取/写入的文件中(即root
),尤其是不能以它读取文件的形式(即www-data
)。
如果您有用于远程身份验证的密码(即从您的 Web 服务器到另一台服务器或服务的身份验证……例如数据库),那么您应该考虑用预共享的公钥/私钥替换它们,例如用于 ssh 身份验证的密码……更不用说远程服务器之间的加密(认真的说,ssh 隧道,好东西)……同样,存储在只有启动 Apache 的特权用户才能访问的文件中。而且,老实说,Apache 本身不应该处理对另一项服务的身份验证任务……
答案2
你能一旦 apache 启动,就删除这些文件,它会继续运行,直到需要再次读取这些文件(例如,如果你重新启动了守护进程)。
这似乎是一个X->Y问题,你并没有真正陈述你的问题,只是问了一个你认为可以解决的问题。然而,这不是一个明智的解决方案。
答案3
虽然我同意不要将关键数据直接存储在 Apache conf 文件中,但这里有一个不同的想法。绝对不是任何类型的密码。
您可以在 conf.d 文件夹中创建自己的 *.conf 文件。Apache 仍会加载它们。
然后将所有有价值的数据迁移到新的 .conf 文件。现在您只需删除并重新建立 1 个文件。
因此 apache 仍会有一些可用的配置数据,而不是以空白的 apache 安装启动。显然 documentRoot 文件夹是最重要的。