自动化创建Apache虚拟主机文件

87次阅读
没有评论

问题描述

在使用Ubuntu-LAMP环境中创建新的Web应用程序时,按照一定的步骤手动创建虚拟主机文件。用户想知道是否有一种自动化或简化这个过程的方法,而不需要额外的软件或工具的参与。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

你可以使用a2ensite命令来替代你脚本中的最后一行ln命令。a2ensite命令的作用是在/etc/apache2/sites-enabled目录下创建符号链接,Apache httpd默认会在这个目录下查找配置文件。具体细节可能因发行版而异。
然而,这只是对你的脚本进行了微小的更改。你还需要解决更大的问题。
首先,Docker几乎肯定不是你想要的解决方案。Docker在容器编排层(如Kubernetes)中使用效果最佳。虽然我可以很容易地想象一个使用单个Docker镜像来接收参数以创建不同虚拟主机的架构,但这是一个比你的单主机系统更复杂的系统,并且需要对所有工作方式进行重大更改。Docker是一个时髦的新东西,但许多人没有意识到它解决了一系列已知问题并引入了一系列新的、不太理解的问题,而且你可能没有这样的架构需要解决的问题。所以我们暂时将其搁置。
你的第一个问题是,你正在手动编写Apache配置文件,使用bash进行模板化和有限的验证。实际上,在你的示例中,这不是一个大问题,因为它是一个小而简单的配置,但很容易从这种方式开始,最终得到一大堆seded命令(我从经验中知道这一点)。
更大的问题在于你的更改是多么短暂。你配置了所有这些虚拟主机,很好。然后你的服务器崩溃了。会发生什么?你可能会花费很多时间尝试重新构建它。希望你有一个最近的备份来帮助,但这里的重点是,过去几十年,我们已经习惯了将配置与代码一样对待的想法 – 而不是手动设置,你将所有的配置写入文本文件中,然后一个程序将其转换为服务器上的配置。这有很多好处,包括备份、代码审查和可以回顾的更改历史。大多数配置管理工具还提供了方便的抽象层。这里有一个示例,展示了如何将Apache虚拟主机文件转换为Ansible模板,然后你只需要向变量列表中添加新条目并重新运行配置。至于数据库密码等信息,可以使用Ansible Vault或类似产品进行存储和版本控制。

方案2

如果你只是在Apache中进行了少量的配置管理,那么你可能需要一个配置管理工具,比如Ansible、Chef或Puppet。其中最轻量的是Ansible。你需要编写一个小的playbook,其中包含一些变量和模板操作,以维护这个配置。
以上是对问题的更详细回答。你可以使用a2ensite命令来替代你脚本中的最后一行ln命令。然而,你还需要解决更大的问题,即如何将配置管理自动化,并将配置与代码一样对待。你可以使用配置管理工具(如Ansible)来实现这一点,并将Apache虚拟主机文件转换为模板,然后通过添加新的变量条目并重新运行配置来添加新的虚拟主机。这样可以更好地管理你的配置,并提供备份和更改历史记录的好处。

正文完