Linux 中的 Web 应用程序应该放在哪里?

Linux 中的 Web 应用程序应该放在哪里?

以下是 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 路径以使其公开。

相关内容