返回博客

使用 Ansible 在 Ubuntu 20.04 上安装和配置 LAMP

使用 Ansible 在 Ubuntu 20.04 上安装和配置 LAMP

服务器自动化是一种以高效且精通技术的方式管理和监控服务器的安全且可靠的过程。与由专门专家团队控制的数据中心管理服务器的传统方式不同,所有服务器都使用自动化进行管理。因此,人为错误被降至最低。

Ansible, Puppet, Terraform 等配置管理工具,通常用于自动化服务器。这些工具通过为新服务器建立标准程序来使用自动化设置服务器,同时消除手动操作时可能出现的错误。

Ansible 是一个强大的开源项目。它灵活、易于使用,并且具有最简化的架构。使用 Ansible playbook 不需要编程背景,也不需要在节点上安装软件。最重要的是,它具有出色的功能,可以编写脚本并简化自动化。

在本指南中,我们将 引导您完成在 Ubuntu 20.04 上使用 Ansible 安装和配置 LAMP 的步骤.

前提条件

要学习本教程,您需要:

Ansible Playbook 的目的是什么?

此 Ansible playbook 是运行我们指南中概述的步骤的另一种方法 LAMP 栈设置 Linux Apache MySQL PHP.

运行 Ansible playbook 将在您的 Ansible 主机上执行以下操作:

  • 安装 aptitude,这是 apt 包管理器,这是 Ansible 首选的。

  • 安装所有必要的 LAMP 包。

  • 创建一个新的 Apache VirtualHost 并配置专用的文档根目录。

  • 开启 开启 新的 VirtualHost.

  • 关闭 关闭 默认的 Apache 网站,即设置 disable_default 变量为 true.

  • 为 MySQL root 用户选择密码。

  • 删除匿名 MySQL 帐户和测试数据库。

  • 设置 UFW 以允许配置端口上的 HTTP 流量,默认值为 80.

  • 设置 PHP 测试脚本。

Ansible playbook 运行完成后,您将看到一个根据我们设置的配置在 Apache 之上运行的 Web PHP 环境。

使用 Ansible Playbook

首先,从 do-community/ansible-playbooks 仓库获取 LAMP playbook 及其依赖项。接下来,将带有 LAMP playbook 的仓库克隆到 Ansible 控制节点内的本地文件夹中。

运行 git pull 命令,以确保您可以访问我们将在本教程中使用的正确内容:

如果您是第一次使用 do-community/ansible-playbooks 仓库,请考虑将该仓库克隆到您的主文件夹中:

转到 lamp_ubuntu2004 文件夹,您将看到以下结构:

以下是这些文件含义的概述:

  • files/info.php.j2:这是一个模板文件,您可以在其中在 Web 服务器的根目录下设置 PHP 测试页面。

  • files/apache.conf.j2:另一个用于设置 Apache VirtualHost 的模板文件。

  • vars/default.yml:这是一个用于自定义 playbook 设置的变量文件。

  • playbook.yml:此文件包含要在远程服务器上执行的任务的所有内容。

  • readme.md: 包含有关此 playbook 信息的自读文件。

让我们通过修改 playbook 的变量文件来定制 MySQL 和 Apache 配置。导航到 lamp_ubuntu2004 目录并打开 vars/default.yml 文件,使用 nano 编辑器:

打开 vars/default.yml 文件后,将显示需要修改的变量列表:

让我们详细了解每个变量:

  • mysql_root_password: 存储 root MySQL 账户的密码。

  • app_user: 它是 Ansible 主机上的远程非 root 用户,作为应用程序文件的所有者。

  • http_host: 显示您的域名。

  • http_conf: 显示在 Apache 中创建的配置文件名称。

  • http_port: 它是此虚拟主机的 HTTP 端口,并且 80 是默认值。

  • disable_default: 用于撤销 Apache 自带的默认选项。

然后,保存并关闭 vars/default.yml 文件。

一旦完成所有设置,我们就可以在服务器上运行此 playbook 了。默认情况下,playbook 中的大多数服务器都配置为在清单中的每台服务器上执行。让我们使用 -l 标志,以仅影响受 playbook 影响的单个服务器或选定的组子集。或者,我们可以使用 -u 标志,以详细查看正在连接哪个远程服务器并在远程主机上执行。

让我们在一台服务器上执行 playbook server1 并使用一个用户进行连接,如 justin:

您将获得类似于以下内容的输出:

一旦看到 playbook 运行完成,请导航到您的 Web 浏览器并访问服务器的主机。不要忘记附加 /info.php 在 IP 的末尾:

点击此 URL 后,您将看到如下页面:

警告: 显示的页面包含有关您的 PHP 环境的敏感信息。因此,建议使用以下命令从服务器中删除您的个人信息:

rm -f /var/www/info.php

Playbook 中包含什么?

接下来,让我们了解一下在 中使用的文件的含义和重要性ansible-playbook 内容:

  • vars/default.yml

default.yml 变量文件包含 MySQL 的域名和密码 root 账户。这些是用于 中的默认值ansible-playbook 任务:

  • files/apache.conf.j2

apache.conf.j2 文件是一个 Jinja 2 模板文件,用于配置新的 Apache VirtualHost。此模板中使用的变量必须在 vars/default.yml 变量文件:

  • files/info.php.j2

类似于 files/apache.conf.j2info.php.j2 文件也是一个 Jinja 模板。我们使用此文件在新建配置的 LAMP 服务器的文档根目录中设置一个测试 PHP 脚本:

  • playbook.yml

playbook.yml 文件是定义此设置中所有任务的地方。在此文件中,配置了所有的 LAMP 栈。它首先定义目标服务器组,并将其设置为 all。此外,它将 become 值设为 true ( become: true),并定义了所有需要执行的任务。接下来, yaml 文件包含默认文件,即 vars/default.yml 变量文件,以加载配置选项:

您可以根据项目的需求和要求修改这些文件。

结论

在本教程中,我们介绍了使用 Ansible 在远程服务器上安装和配置 LAMP 的步骤。您还可以尝试许多其他自定义选项。例如,使用 Ansible 官方文档 并使用 mysql_user(来自 Ansible 模块)的案例是提升技能的绝佳方式。此外,请按照本指南中讨论的步骤,使用其他配置管理工具和操作系统练习自动化,以增加难度。

您是 LAMP 栈的新手并想深入探讨这个话题吗?请在我们的博客上探索以下教程:

祝您使用愉快!

author

Hark Labs

作者 · CloudSigma

Preslav Dobrev 是 CloudSigma 的创意设计师,专注于通过传统和创新营销渠道打造一致的企业形象。他擅长将艺术愿景与战略营销相融合,创造具有影响力的品牌叙事。

评论

暂无评论。发表第一条评论吧。