我必须设置一个服务器来运行一个Web应用程序,它本身由各种“标准”软件包(Apache、PHP、MariaDB、几种编程语言)以及几个Web应用程序(包括Moodle)和从git存储库安装的组件组成(因为打包版本要么太旧,要么不存在)。
目前,我们为此使用 Debian,但是(为了更好地适应其他内部服务器)一旦基础软件包更新到足以供我们使用,我们可能会在将来的某个时候切换到 Scientific Linux。
与许多系统一样,第一个版本开始时(在最小操作系统安装之后)是一个快速而肮脏的 shell 脚本,用于安装软件包并从 git 存储库下载等,并且没有项目时间来尝试研究任何更好的方法安装解决方案。
随着时间的推移,第二次迭代逐渐建立在这个基础上,现在已经演变成一个 1100 行(!)的交互式 shell 脚本,它下载所有必要的组件,配置 Web 和 DB 服务器,设置 Moodle 等等。
我认为这个脚本相当健壮且非黑客行为,但我确信这不是执行此过程的理想方法。我考虑过的一件事是将脚本分解为每个功能的单独文件(至少它有功能),以便于阅读/编辑/更新,然后将它们连接到一体式安装文件中。
或者我创造了一个怪物,我应该有更好的方法来管理此类软件的安装和配置?
我考虑过的其他可能性包括:
是否可以将我的软件安装过程转换为某种 Debian 软件包,使用 dpkg-reconfigure (或类似的东西?)从管理员查询所需的设置,但不幸的是我没有这方面的经验(并且不知道这是否可行,因为某些必需的“包”必须从 git 存储库下载,而不是能够作为 Debian 包依赖项添加)。
我是否应该考虑其他已经存在的软件管理或脚本系统来完成此特定任务,而不是依赖 shell 脚本?