在 Arch Linux 上使用/安装 webapps 的推荐方法是什么?

在 Arch Linux 上使用/安装 webapps 的推荐方法是什么?

我正在尝试找出在 Arch Linux + nginx 服务器上稳健地设置 webapps 的最佳方法。我以前的做法是下载并解压最新版本的 dokuwiki/wordpress /srv/http/,然后在将目录的所有权更改为用户后,通过编辑此位置的配置文件手动进行设置nginx。每次发布新版本的 webapp(没有内置升级机制的版本)时,我都会重复该过程,同时将现有的配置/数据文件从旧位置移动到新位置。

然而,肯定有更好的方法来维护(安装、升级、备份)这些 Web 应用程序,尤其是考虑到pacman其存储库中有许多这样的应用程序。

不过,我对这种方法有一些担忧,并且对在服务器上维护 Web 应用程序的最佳实践有一些疑问:

  • Arch 中安装的软件包中的文件通常位于 中/usr/share/webapps/。那么数据/配置文件呢?我也要把它们放在那里吗?或者我以某种方式将它们符号链接进去?每次更新后我是否以某种方式自动将应用程序从那里复制到/srv/http
  • 假设我符号链接这些目录或将 nginx 配置为直接从这些目录中读取,权限怎么办?chown -R root:nginx /usr/share/webapps/new_webapp每次更新/安装后我是否需要手动运行?或者它们的所有权是否自动设置为某个www组?
  • 最后但同样重要的一点是,当这些 webapp 的软件包升级时,它们的配置文件会怎么样?它们会被覆盖吗(在最坏的情况下)或者会创建pacman大量文件吗(在最好的情况下)?.pacnew

网络管理员通常如何解决这个问题?有哪些资源描述了这方面的最佳实践?我已经在使用 puppet 来管理各种软件包的配置,但我仍然找不到“正确”且易于维护的安装 webapps 的方法。

答案1

对于手动安装的应用程序,请考虑下载 Git 或 Hg 存储库(如果有)。您只需一个命令即可更新到最新(稳定或开发)版本如果您最终进行了任何代码更改,请跟踪您的代码更改。(如果有人找到方法将恶意软件散布到您的文件中,也需要花一些时间来清理。)

这将我们两个 Moodle 安装的更新时间从 30-60 分钟(下载;提取;备份;重新添加模块;重新应用本地补丁)缩短至仅 1-3 分钟(git pull)。

或者,您可以为 pacman 创建自己的包,然后它将负责删除旧文件并将新文件提取到正确的位置。


包裹也总是包含所有权信息,所以这通常不是问题。

手动更新意味着通常需要重置所有权,尽管这可以在某种程度上实现自动化:通过就地更新(例如 Git/Hg 或 rsync 等),你可以使用 在 web 应用的数据目录上设置“setgid”模式chmod g+s,然后团体(该:nginx部分)将自动应用到里面的所有新文件。

然而,当您提取新的 tarball 时,您总是需要手动修复文件。


对于主位置,/usr/share/webapps这样就很好了。您并不总是需要符号链接,通常直接在 httpd.conf 中配置位置更方便;例如:

Alias /myapp /usr/share/webapps/MyApp/public

对于配置,这取决于您的下载方法。系统打包的 webapps 通常将其配置文件符号链接到 /etc,主要是为了更好地符合 Linux 文件系统层次结构。

当从 tarball 安装时,每当您需要升级时,符号链接也会更加方便。

使用基于 Git/Hg 的更新,您的编辑无论如何都会被保留,因此这主要是一个偏好问题。

相关内容