网络服务器文件系统的标准配置

网络服务器文件系统的标准配置

我想尝试让我的 Web 服务器更易于管理、备份和复制。我的网站、配置文件、 SSL 证书、虚拟主机分散在各处。将它们全部放在一个地方似乎合乎逻辑。我考虑在根目录中创建一个目录,如下所示

/data

其中包含此 Web 服务器上我的数据的所有目录,如下所示:

/data 
    /websites                    [websites directories]
    /ssl_certs                   [secure certificates for sites]
    /vhosts                      [virtual host files for sites]
    /config                      [Software config files (apache, mod_security etc.)
        /apache2                 [Apache Server Config files]
        /proftpd                 [FTP Server Config files]
    /utilities                   [Misc Bash Scripts]

这意味着如果我必须复制此服务器,我可以安装和配置所需的包,然后复制包含我所有数据的文件夹。此外,我可以轻松快速地备份服务器上的所有内容,以便在需要恢复时,我可以将所有数据放在一个地方。

所以我有 3 个问题:

这是一个好主意吗?或者它会带来比其价值更多的麻烦?

这样做会有什么安全隐患吗?

如果上述方法不可行,那么标准方法是什么?

答案1

不同的站点做不同的事情;如果您有一个备份系统和详尽记录的灾难恢复计划,并且您的配置文件已正确设置,那么放置文件的位置就无关紧要了。

“标准”……有太多了,这个名字太蠢了。典型的但即使如此,也因发行版和网络服务器而异。

最后,如果您已妥善记录并备份,这应该不是问题。做最适合您的业务/工作流程的事情,不要担心。

答案2

我有类似的东西:

  • /ETC/
    • 阿帕奇2/
      • 站点可用/
      • 已启用站点/
    • SSL/
      • *.crt
      • 私人的/
        • *。钥匙
  • /srv/
    • 万维网/
      • $站点/
        • htdocs/
        • 日志/
        • cgi-bin/

答案3

通常配置位于 /etc/appname 中(因此证书位于 /etc/nginx/certs/ 中,密码位于 /etc/nginx/passwords 中,各个 vhost 配置位于 /etc/nginx/sites/ 中,等等)。这并不算混乱或“到处都是”;所有内容都在 /etc/nginx/ 目录中。

网站内容通常存放在 /var/www/site1、/var/www/site2 中,但这是根据每个网站进行配置的,不需要遵守此约定。(如果您愿意,每个网站可以位于完全不同的位置,只要 httpd 有访问权限即可。)

注意:我通常使用 nginx,但 apache 的配置目录应该是 /etc/apache2/。同样适用。

注意:使用 /etc/apache2/sites-enabled/ 和 sites-available/ 是另一种常见惯例,但我个人不喜欢这种方法。

答案4

与其他受访者不同,我认为有充分的理由不使用默认文件布局 - 就像有很好的理由不使用默认权限模型一样。

我对于您提议的问题是,您将目录命名为“数据” - 我希望将所有配置和 SSL 证书与内容完全分开。而且由于默认配置大部分都是 /etc,因此将其保留在那里似乎是合乎逻辑的。

您可能会遇到问题的地方是添加会更改配置的包(例如添加 apache 模块)。智能使用目录软链接可以帮助解决这个问题。

相关内容