在 Amazon Linux 2 上安装 LAMP Web 服务器

步骤 1:准备 LAMP 服务器

先决条件

  • 本教程假定您已经使用 Amazon Linux 2 启动具有可从 Internet 访问的公有 DNS 名称的新实例。有关更多信息,请参阅步骤 1:启动实例。您还必须配置安全组,以便允许 SSH (端口 22)、HTTP (端口 80) 和 HTTPS (端口 443) 连接。有关这些先决条件的更多信息,请参阅 为您的 Linux 实例授权入站流量

  • 以下过程将安装 Amazon Linux 2 上可用的最新 PHP 版本(当前为 PHP 7.2)。如果您计划使用本教程中所述的 PHP 应用程序之外的 PHP 应用程序,则应检查其与 PHP 7.2 的兼容性。

准备 LAMP 服务器

  1. 连接到您的实例

  2. 为确保您的所有软件包都处于最新状态,请对您的实例执行快速软件更新。此过程可能需要几分钟的时间,但必须确保您拥有最新的安全更新和缺陷修复。

    -y 选项安装更新时不提示确认。如果您希望在安装前检查更新,则可以忽略该选项。

    [ec2-user ~]$ sudo yum update -y
  3. 安装 lamp-mariadb10.2-php7.2 和 php7.2 Amazon LinuxExtras 存储库,以获取适用于 Amazon Linux 2 的 LAMP MariaDB 和 PHP 程序包的最新版本。

    [ec2-user ~]$ sudo amazon-linux-extras install -y lamp-mariadb10.2-php7.2 php7.2

    如果您收到指示 sudo: amazon-linux-extras: command not found 的错误,则表示您的实例未使用 Amazon Linux 2 AMI 启动(可能您使用的是 Amazon Linux AMI)。您可以使用以下命令查看 Amazon Linux 的版本。

    cat /etc/system-release
    

    要在 Amazon Linux AMI 上设置 LAMP Web 服务器,请参阅教程:使用 Amazon Linux AMI 安装 LAMP Web 服务器

  4. 您的实例处于最新状态后,便可以安装 Apache Web 服务器、MariaDB 和 PHP 软件包。

    使用 yum install 命令可同时安装多个软件包和所有相关依赖项。

    [ec2-user ~]$ sudo yum install -y httpd mariadb-server

    您可以使用以下命令查看这些程序包的当前版本:

    yum info package_name
  5. 启动 Apache Web 服务器。

    [ec2-user ~]$ sudo systemctl start httpd
  6. 使用 systemctl 命令配置 Apache Web 服务器,使其在每次系统启动时启动。

    [ec2-user ~]$ sudo systemctl enable httpd

    您可以通过运行以下命令验证 httpd 是否已启用:

    [ec2-user ~]$ sudo systemctl is-enabled httpd
  7. 如果您尚未这样做,请添加安全规则以允许与您的实例的入站 HTTP (端口 80) 连接。默认情况下,初始化期间将为您的实例设置 launch-wizard-N 安全组。此组包含一条允许 SSH 连接的规则。

    1. 打开 Amazon EC2 控制台 https://console.aws.amazon.com/ec2/

    2. 选择 Instances 并选择您的实例。

    3. 安全选项卡上,查看入站规则。您应看到以下规则:

      Port range Protocol Source 22 tcp 0.0.0.0/0
      
    4. 选择安全组的链接。使用 在安全组中添加规则 中的过程,添加具有以下值的新入站安全规则:

      • Type:HTTP

      • Protocol:TCP

      • Port Range:80

      • Source:Custom

  8. 测试您的 Web 服务器。在 Web 浏览器中,键入您的实例的公有 DNS 地址 (或公有 IP 地址)。如果 /var/www/html 中没有内容,您应该会看到 Apache 测试页面。您可以使用 Amazon EC2 控制台获取实例的公有 DNS(选中 Public DNS (公有 DNS) 列;如果此列处于隐藏状态,请选择 Show/Hide Columns (显示/隐藏列)(齿轮状图标)并选择 Public DNS (公有 DNS))。

    如果您未能看到 Apache 测试页面,请检查您使用的安全组是否包含允许 HTTP(端口 80)流量的规则。有关将 HTTP 规则添加到安全组的信息,请参阅在安全组中添加规则

Apache httpd 提供的文件保存在名为 Apache 文档根目录的目录中。Amazon Linux Apache 文档根目录为 /var/www/html,默认情况下归根用户所有。

要允许 ec2-user 账户操作此目录中的文件,必须修改其所有权和权限。有多种方式可以完成此任务。在本教程中,可将 ec2-user 添加到 apache 组,将 apache 目录的所有权授予 /var/www 组,并为该组指定写入权限。

设置文件权限

  1. 将您的用户 (这里指 ec2-user) 添加到 apache

    [ec2-user ~]$ sudo usermod -a -G apache ec2-user
  2. 先退出再重新登录以选取新组,然后验证您的成员资格。

    1. 退出(使用 exit 命令或关闭终端窗口):

      [ec2-user ~]$ exit
    2. 要验证您是否为 apache 组的成员,请重新连接到实例,然后运行以下命令:

      [ec2-user ~]$ groups ec2-user adm wheel apache systemd-journal
  3. 将 /var/www 及其内容的组所有权更改到 apache 组。

    [ec2-user ~]$ sudo chown -R ec2-user:apache /var/www
  4. 要添加组写入权限以及设置未来子目录上的组 ID,请更改 /var/www 及其子目录的目录权限。

    [ec2-user ~]$ sudo chmod 2775 /var/www && find /var/www -type d -exec sudo chmod 2775 {} \;
  5. 要添加组写入权限,请递归地更改 /var/www 及其子目录的文件权限:

    [ec2-user ~]$ find /var/www -type f -exec sudo chmod 0664 {} \;

这样,ec2-user (和 apache 组的任何未来成员) 可以添加、删除和编辑 Apache 文档根目录中的文件,允许您添加内容,如静态网站或 PHP 应用程序。

保护您的 Web 服务器 (可选)

运行 HTTP 协议的 Web 服务器不为其发送或接收的数据提供传输安全。当您使用 Web 浏览器连接 HTTP 服务器时,对于您访问的 URL、您接收的网页内容以及您提交的任何 HTML 表的内容 (包括密码),窃取者可在网络路径上的任何位置看到。保护您的 Web 服务器的最佳实践是安装 HTTPS (HTTP Secure) 支持,它将使用 SSL/TLS 加密保护您的数据。

有关在服务器上启用 HTTPS 的信息,请参阅 教程:在 Amazon Linux 2 上配置 SSL/TLS

步骤 2:测试 LAMP 服务器

如果服务器已安装并运行,且文件权限设置正确,则 ec2-user 账户应该能够在 /var/www/html 目录 (可从 Internet 访问) 中创建 PHP 文件。

测试您的 LAMP 服务器

  1. 在 Apache 文档根目录中创建一个 PHP 文件。

    [ec2-user ~]$ echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php

    尝试运行该命令时,如果出现“Permission denied (权限被拒绝)”错误,请尝试先注销,再重新登录,以获取您在 设置文件权限 中配置的适当组权限。

  2. 在 Web 浏览器中,键入您刚刚创建的文件的 URL。此 URL 是实例的公用 DNS 地址,后接正斜杠和文件名。例如:

    http://my.public.dns.amazonaws.com/phpinfo.php

    您应该会看到 PHP 信息页面。

    如果您未看到此页面,请验证上一步中是否已正确创建 /var/www/html/phpinfo.php 文件。您还可以使用以下命令验证已经安装了所有必需的程序包。

    [ec2-user ~]$ sudo yum list installed httpd mariadb-server php-mysqlnd

    如果输出中未列出任何必需的程序包,请使用 sudo yum install package 命令安装它们。另请验证在 amazon-linux-extras 命令的输出中启用了 php7.2 和 lamp-mariadb10.2-php7.2 Extras。

  3. 删除 phpinfo.php 文件。尽管此信息可能很有用,但出于安全考虑,不应将其传播到 Internet。

    [ec2-user ~]$ rm /var/www/html/phpinfo.php

现在,您应该有了一个功能完善的 LAMP Web 服务器。如果您将内容添加到 Apache 文档根目录 (位于 /var/www/html),您应该能够在您的实例的公有 DNS 地址中看到该内容。

参照:https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2-lamp-amazon-linux-2.html

猜你喜欢

转载自blog.csdn.net/figosoar/article/details/109738493
今日推荐