![Linux 中的 Web 应用程序应该放在哪里?](https://linux22.com/image/113186/Linux%20%E4%B8%AD%E7%9A%84%20Web%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E5%BA%94%E8%AF%A5%E6%94%BE%E5%9C%A8%E5%93%AA%E9%87%8C%EF%BC%9F.png)
以下是 Linux 发行版的文件结构示例: https://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-filesystem-fhs.html
每个目录都有特定的用途,似乎 Web 应用程序应该分布在不同的目录中,而不是封装在一个文件夹中。
我的网络应用程序的初始结构如下:
/home/username/appname/appsource...
/home/username/appname/appconfiguration...
/home/username/appname/apptempdata...
/home/username/appname/applogdata...
/home/username/appname/appdata...
/home/username/public_html/appname/appsite/...
该应用程序封装在 Linux 系统内的最少目录中,一个用于网络源/网站(页面、javascript、css、网站图像),另一个目录(/home/username/appname/.. .) 是其余的应用程序文件。
该应用程序最初放置在用户文件夹中,只是因为这是 Web 应用程序通过某些 Web 工具开始开发的地方,但现在需要将应用程序与 Web 工具和服务器用户分离,并且需要创建安装方法(最终,如果Linux系统中获得许可,给定Linux服务器的不同管理员用户将轮流管理应用程序文件)。
根据我的研究(参见FHS规格),据我了解,必须按如下方式重新分发应用程序文件:
/usr/lib/appname/appsource...
/etc/appname/appconfiguration...
/var/www/html/appname/appsite...
/var/tmp/appname/apptempdata...
/var/log/appname/applogdata...
/var/lib/appname/appdata...
如果我现在想让事情正常工作,我只需将所有内容放在 /var/lib 和 /var/www/html 目录中:
/var/lib/appname/appsource...
/var/lib/appname/appconfiguration...
/var/www/html/appname/appsite...
/var/lib/appname/apptempdata...
/var/lib/appname/applogdata...
/var/lib/appname/appdata...
我应该这样做吗?如果没有,请解释主要原因是什么,以及示例文件应该如何定位?
答案1
我不是这个主题的专家,但我通过阅读 FHS 规范得出的原始解决方案似乎实际上是正确的(或非常接近),我什至发现了这个文章,它说随着 RPM 的出现,不再需要/opt
和目录,该文章说这些目录现在已经过时,并使系统管理员和用户的生活变得不那么轻松。/usr/local
我所有的Web应用程序都是用PHP编写的,这意味着我的应用程序不包含任何二进制文件,所以我只是将所有应用程序放在/usr/lib
.如果您的应用程序有二进制文件,您将需要/usr/bin
或/usr/sbin
。我既不使用/usr/share/doc
也不使用/usr/share/man
,因为我的应用程序不包含文档或手册(目前)。
/var/www
不是 FHS 的一部分,因此位于的文件/var/www/html/appsite
可以放置在其他地方,这取决于您如何配置 Web 服务器应用程序(Apache、Nginx 或其他)。
另一方面,OP 中的第二种方法被丢弃,因为它只是懒惰并且没有真正尝试遵守 FHS。
所以我的结论仍然是:
/usr/lib/appname/appsource...
/etc/appname/appconfiguration...
/var/www/html/appname/appsite...
/var/tmp/appname/apptempdata...
/var/log/appname/applogdata...
/var/lib/appname/appdata...
更新:
将许多公共文件放在源代码文件夹内的公共文件夹中也是有意义的,因为其中许多是脚本(甚至 html、js、css),因此是源代码的一部分,而其余公共文件将进入不同的公用文件夹:
/usr/lib/appname/appsourceprivatefiles... (ej: php classes and functions)
/usr/lib/appname/www/appsourcepublicfiles... (ej: php scripts)
/usr/share/appname/appprivateresources... (images, raw text, xml resources, json resources, audio...)
/usr/share/appname/www/apppublicresources... (images, raw text, xml resources, json resources, audio...)
/etc/appname/appconfiguration...
/var/tmp/appname/apptempdata...
/var/log/appname/applogdata...
/var/lib/appname/appdata...
可以将 Apache 等 Web 服务器应用程序配置为映射 www 路径以使其公开。