当我设置一个新的网络服务器(apache/mysql/nodejs/mongodb)时,我习惯将每个与 www 相关的资产(apache www 文件、node js 应用程序、mysql/mongodb 数据库文件)存储到/srv/www
我符号链接到的文件中/home/srv
。
这样做是为了轻松备份所有内容(因为所有内容都在 /home 中)并将所有内容存储在一个大的隔离分区中(通常为 / 50G,除交换到 /home 之外的所有其他内容)。
我读到过,这样做可能会遇到一些问题。
这算是不好的做法吗?
mkdir --mode=0755 /home/srv; rm -rf /srv; ln -s /home/srv /srv && chown root:root /home/srv
mkdir --mode=0770 /srv/www; chown www-data:www-data /srv/www
答案1
您会从 C:\Users 提供您的 IIS 内容吗?
这里的问题是路径的语义。
/home
在 unix 中被很好地理解为包含用户数据的路径,因此一些系统会对其中的数据类型做出假设(SELinux 是我能想到的一个很大的系统,但在 Ubuntu 中这并不是什么大问题)。
例如,如果您执行了此操作并且突然对用户有自动挂载要求,则可能会出现其他问题。
我通常会尝试遵循发行版的“规范”。Redhat 倾向于将服务特定数据放入其中/var/lib
。
当然,这里也存在灰色地带。
- 当其用户主要只是用于传输 Web 内容的 SFTP 用户时,您会怎么做?
- mod_userdir 如何适应这一切。
对于第一点,就我个人而言,如果用户只不过是服务用户,我会让他们的主目录指向其网站文档根目录的适当位置。
至于 mod_userdir,这意味着它是一个真实的用户,作为外围设备拥有一个 Web 文件夹,所以我会将该 Web 内容保存在 中/home
。
从“系统管理员团队”的角度来看,我认为这种设置充其量是草率和混乱的,或者最坏的情况是缺乏能力。你需要有充分的理由去做这样的事情。
纯粹是出于对系统的自豪感——将它们设置为使用有意义的路径(并且尚未预加载功能)。我认为将内容放在上下文之外的位置并不是组织服务的好方法。
这样做是为了轻松备份所有内容(因为所有内容都在 /home 中)。
你不能把所有数据都放在另一个目录中/var/lib
吗/srv
?坦白说,备份多个路径真的需要这么多努力吗?
并将所有内容存储在一个大的独立分区中(通常为 / 50G,除交换到 /home 之外的所有其他内容)。
嗯,只需提供/var/lib
或/srv
作为大分区即可。
我并不想说得那么苛刻,但在我的经历中,我发现其他人看到系统管理员做这样的事情时往往会感到不快。我的意思不是“重大问题警报”,而是这往往是人们会记住但没人告诉你的事情,这最终可能会在同事眼中抹黑你。
答案2
“不良做法”很大程度上是相对的。
在大多数 Unix 系统上/var/www
是“包含主/默认网站的目录”,并且/home/user/public_html
是您访问http://example.com/~user
(通过mod_userdir
)时提供的目录。
一般来说,您应该遵守该惯例,因为这是人们所期望的。
如果你因为某种原因不能遵循这个惯例,通常最好使用符号链接,以便它们至少似乎将它们放置在它们应该在的位置,但您需要注意其他因素(例如 SELinux),这些因素可能会导致问题,具体取决于您的服务器的配置方式。
作为最佳实践的一部分,您还应该观察合理的分区方案这将帮助您决定备份磁盘的哪些分区/部分,以及每个分区/部分要占用多少空间。
从这个意义上讲,我并不真正同意Mlfe 的建议改为“只配置/var/lib
或/srv
改为大分区”,或者你的布局为“50G 用于/
”,一个交换分区,以及“其他一切都到/home
”——你应该使用类似这样的参考来确定你特定系统(Ubuntu)上东西的标准位置。手册hier
页,然后正确构建分区布局以支持您的特定需求。
这样可以避免 Mlfe 所说的情况,即您实施了一些非标准的东西,并永远被人们记住为“把网页放到下面去的傻瓜/home
”或类似的东西。