GLEP 11:Web 应用程序安装
作者 | Troy Dack <tad@gentoo.org>,Stuart Herbert <stuart@gentoo.org> |
---|---|
类型 | 标准跟踪 |
状态 | 最终 |
版本 | 1 |
创建 | 2003-08-02 |
上次修改 | 2022-11-02 |
发布历史 | 2003-08-07, 2003-08-12, 2003-08-13, 2006-09-03 |
GLEP 源代码 | glep-0011.rst |
内容
状态
截至 2006-09-03,webapp eclass 已经存在一段时间了。
鸣谢
根据 gentoo-dev 邮件列表中发布的评论 [1] [2] [3],由
Stuart Herbert <stuart at gentoo.org>,Max Kalika <max at gentoo.org>,Robin H.Johnson <robbat2 at gentoo.org> 以及其他人
定义
- Web 应用程序
- 需要 Web 服务器才能正常运行,并通过浏览器与用户进行交互的应用程序。
- Web 应用程序实例
- 通过 Web 服务器提供服务的 Web 应用程序的明显安装。每个 Web 应用程序可能存在任意数量的实例。这是 Web 应用程序的主要用途。我们的 Gentoo Zope 设置已经提供了实例,可以用于此方面的某些概念。
- Web 应用程序设置程序
- 类似于 zope-config 功能的脚本,用于设置实例。
- 文档根目录
- 文件系统中一个位置,形成从 Web 看到的文档主树。
约定
在描述文件系统中目录位置时,将显示 *带* 尾部斜杠,例如
/foo/bar/在描述特定文件(不考虑任何文件扩展名)的位置时,将显示 *不带* 尾部斜杠,例如
/foo/blah
摘要
定义 Gentoo 应该在哪里以及如何安装基于 Web 的应用程序。
动机
目前,Gentoo 中没有关于安装基于 Web 的应用程序的标准定义。这导致 ebuild 作者创建了各种方法来确定
- 应用程序应该安装在哪里
- 应用程序应该被授予什么用户和权限
- 与应用程序相关的任何配置文件应该安装在哪里。
由于缺乏标准安装方法,配置文件有被升级期间覆盖的风险,这可能导致系统管理员停机,因为他们在升级后必须重新配置 Web 应用程序。
原理
关于 gentoo-dev 邮件列表上的讨论 [1] 提出以下关于 Gentoo 如何处理基于 Web 的应用程序安装的要点
Gentoo 安装的 Web 应用程序(例如:horde、phpbb、cacti、phpmysql)不应安装在 Web 服务器的文档根目录中。
Web 应用程序不应将其配置文件安装在 Web 服务器的文档根目录下。
- Web 应用程序必须按其完整版本号进行槽化,以进一步避免在需要真正配置更改时出现停机时间。
Web 应用程序不应由与 Web 服务器相同的用户拥有。
应该很容易拥有 Web 应用程序的多个实例,而无需任何源文件重复。
应该立即清楚如何控制 Web 应用程序的实例。
实现
Max Kalika <max at gentoo.org> 表示他有一个初步的 eclass,它实现了该 GLEP 的很大一部分。
Stuart Herbert <stuart at gentoo.org> 已经提交了
webapp-apache.eclass
到 CVS,这是一个在最终确定该 GLEP 之前采取的权宜之计。
1. Web 服务器
应该选择一个通用的默认 Web 服务器。选择默认 Web 服务器将有助于减少报告的错误数量。
鉴于 Apache Web 服务器的流行程度,建议选择 Apache 作为 Gentoo 的默认 Web 服务器。
虚拟主机配置工具(见下文)将透明地支持不同的 Web 服务器,从而使 Web 应用程序能够安装在 Gentoo 系统上,无论安装了哪个 Web 服务器。
1.1 默认文档根目录
Gentoo 当前的默认文档根目录是 /home/httpd/,这很不合适,原因如下
- /home/ 可能通过 nfs 导出到许多其他主机,与许多主机共享公开访问的文件是不可接受的。
- 存在用户名称冲突的可能性(尽管很小)
为了确保在安装应用程序时具有最大的灵活性,将使用以下 *文档根目录* 位置
对于单主机安装
/var/www/localhost/对于多个虚拟主机安装
/var/www/<fully qualified domain name>/ eg: /var/www/www.gentoo.org/
此外,选择的位置(/var/www/)似乎正在成为 Linux 发行版的实际标准。
1.2 Apache 2
所有 Web 应用程序 .ebuilds 将遵守任何旨在添加对 Apache 2 支持的 USE 标志,以及支持 Apache 1 安装。
2. 应用程序安装
Gentoo 当前接受的标准文档根目录是 /home/httpd/。讨论表明这不是安装基于 Web 的应用程序的最佳位置。
2.1 应用程序 SLOT
所有 ebuilds 应按如下所示设置 SLOT 变量
SLOT="${PV}"
如所示设置 SLOT 变量将允许同一 Web 应用程序的不同版本由一台服务器同时提供服务。
2.2 安装路径
Web 应用程序应安装在文档根目录之外,使用以下默认值
对于要提供给客户端的文件
/usr/share/webapps/${PF}/htdocs/ /usr/share/webapps/${PF}/cgi-bin/在以下位置安装 *站点默认* 配置文件
/etc/webapps/${PF}/对于文档文件(不提供给客户端)
/usr/share/doc/${PF}/
3. 虚拟主机支持
轻松配置和管理多个虚拟主机的能力是必不可少的。
3.1 新的 "vhost" USE 标志
为了启用对多个虚拟主机安装的支持,需要向 Portage 添加一个新的 USE 标志。USE 标志将为
vhost
当 *vhost* 被 _设置_ 时,Web 应用程序的安装位置和配置将受到影响,有关更多详细信息,请参见下文。
3.2 虚拟主机配置工具
为了帮助管理多个虚拟主机,需要开发和实现一个“虚拟主机配置工具”。有关虚拟主机配置工具和建议用法的初步讨论可以在 [4] 中找到。
虚拟主机配置工具集的工作是使 Web 应用程序的本地实例在特定的 Web 服务器下运行。
虚拟主机配置实用程序需要成为一个单独的包,由 Gentoo 维护。
Web 服务器 .ebuilds 将需要虚拟主机配置工具作为依赖项 (DEPEND)。
错误 #26293 将用于跟踪虚拟主机配置工具的初始进度。
vhost-config 必须执行三个主要操作
- 创建目录(在大多数情况下复制一个骨架目录)。
- 创建 Web 服务器 vhost 配置文件。
- HUP Web 服务器以便它读取新配置而无需停止。
最初,虚拟主机配置工具应提供对 Apache Web 服务器的支持。随着工具的成熟,可以添加对其他 Web 服务器的支持。
3.3 单主机安装
对于单主机安装,.ebuild 将使用虚拟主机配置工具进行必要的配置更改和符号链接,以确保 Web 应用程序可供从以下位置提供服务
/var/www/localhost/htdocs/${PF}/
在这种情况下,虚拟主机配置工具可能只需按适当的方式从 /usr/share/webapps/${PF}/ 符号链接目录即可。
3.4 虚拟主机安装
对于支持多个虚拟主机的安装,.ebuild 将将 Web 应用程序安装到默认位置,然后通过虚拟主机配置工具将配置留给用户。
在这种情况下,Web 应用程序文件将由虚拟主机配置工具从 /usr/share/webapps/${PF}/ 复制到 /var/www/<FQDN>/。
3.5 配置文件
如上所述,Web 应用程序 *站点默认* 配置文件应安装到
/etc/webapps/${PF}/
然后,此目录中的文件将由虚拟主机配置工具复制(不进行符号链接!)到每个安装的应用程序实例的文档根目录。
这将要求虚拟主机工具集模拟 Portage 的 CONFIG_PROTECT 行为以用于 Web 应用程序。
4. 应用程序权限
安装 Web 应用程序并让 Web 服务器拥有文件是一个安全风险。这可能会导致应用程序配置文件被不希望的第三方访问。
所有 Web 应用程序应由 *root* 拥有,除非应用程序在执行时绝对需要对其安装目录进行写入访问权限。
向后兼容性
可能存在与 Web 应用程序的现有安装相关的某些兼容性问题。如果默认文档根目录从被认为是当前标准的位置 (/home/httpd/) 移动,情况尤其如此。
- 主要问题是
- 将现有配置文件迁移到 /etc/webapps/${PF}/ 目录。
- 修改/重新配置应用程序,使其了解配置文件的位置。
- 创建虚拟主机配置工具集,以使 Web 应用程序的安装和配置不受 Web 服务器的影响。
参考资料
[1] | (1,2) Stuart Herbert。 “民意调查:Web 应用程序应该安装在哪里?” gentoo-dev 邮件列表,2003-07-23,邮件 ID 200307231512.51710.stuart@gentoo.org,https://archives.gentoo.org/gentoo-dev/message/18e8a6aacd202e117d1876d249d51af8 |
[2] | Troy Dack。 "[GLEP] Web 应用程序安装"。gentoo-dev 邮件列表,2003-08-02,消息 ID 1059843010.5023.80.camel@carbon.internal.lan,https://archives.gentoo.org/gentoo-dev/message/a94608da1bd57f387fb1091764f5226c |
[3] | Max Kalika。 "Re: [GLEP] Web 应用程序安装"。gentoo-dev 邮件列表,2003-08-04,消息 ID 86960000.1060038977@valkyrie.lsit.ucsb.edu,https://archives.gentoo.org/gentoo-dev/message/523c8123b7e4a179f6ae3aab74db66e2 |
[4] | Robin H. Johnson。 "Re: [GLEP] Web 应用程序安装。绘制 VHOST 配置工具"。gentoo-dev 邮件列表,2003-08-06,消息 ID 20030806043741.GF27029@cherenkov.orbis-terrarum.net,https://archives.gentoo.org/gentoo-dev/message/1386ab5e25ee17f3a72490145877d124. |
版权
本作品采用知识共享署名-相同方式共享 3.0 未移植许可协议授权。要查看此许可协议的副本,请访问 https://creativecommons.org/licenses/by-sa/3.0/.