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

作者:青山常在人不老   阅读 (2036)  |  收藏 (0)  |  点赞 (0)

摘要

以下过程可帮助您在Amazon Linux 2实例(有时称为LAMP Web服务器或LAMP堆栈)上使用PHP和MariaDB(社区开发的MySQL分支)支持安装Apache Web服务器。您可以使用此服务器托管静态网站或部署动态PHP应用程序,以便将信息读取和写入数据库。


原文链接:在Amazon Linux 2上安装LAMP Web服务器

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

重要

如果您尝试在Ubuntu或Red Hat Enterprise Linux实例上设置LAMP Web服务器,本教程将不适合您。有关其他发行版的更多信息,请参阅其特定文档。有关Ubuntu上的LAMP Web服务器的信息,请参阅Ubuntu社区文档ApacheMySQLPHP主题。

第1步:准备LAMP服务器

先决条件

本教程假设您已使用Amazon Linux 2启动了一个新实例,其公用DNS名称可从Internet访问。有关更多信息,请参阅步骤1:启动实例。您还必须已将安全组配置为允许SSH(端口22),HTTP(端口80)和HTTPS(端口443)连接。有关这些先决条件的更多信息,请参阅设置Amazon EC2

注意

以下过程将安装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亚马逊的Linux Extras仓库拿到LAMP MariaDB的最新版本和PHP包亚马逊的Linux 2。

    [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)连接到您的实例(如果尚未这样做)。默认情况下, 在初始化期间为您的实例设置了启动向导N安全组。该组包含允许SSH连接的单个规则。

    • 类型:HTTP

    • 协议:TCP

    • 港口范围:80

    • 来源:自定义

    1. 通过以下网址打开Amazon EC2控制台: https://console.aws.amazon.com/ec2/

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

    3. 在“ 安全组”下,选择“ 查看入站规则”。

    4. 您应该在默认安全组中看到以下规则列表:

      Security Groups associated with i-1234567890abcdef0
      Ports     Protocol     Source     launch-wizard-N22        tcp          0.0.0.0/0          ✔

      使用向安全组添加规则中的过程,使用以下值添加新的入站安全规则:

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

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

    重要

    如果您不使用Amazon Linux,则可能还需要在实例上配置防火墙以允许这些连接。有关如何配置防火墙的详细信息,请参阅特定分发的文档。

  9. 
                        Apache测试页面

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

要允许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 ~]$ groupsec2-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上配置Apache Web服务器以使用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

    如果在尝试运行此命令时出现“权限被拒绝”错误,请尝试注销并重新登录以获取您在“设置文件权限”中配置的正确组权限

  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附加功能。

  3. 删除phpinfo.php文件。虽然这可能是有用的信息,但出于安全原因,不应将其广播到互联网。

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

您现在应该拥有功能齐全的LAMP Web服务器。如果向Apache文档根目录添加内容,则/var/www/html应该能够在实例的公共DNS地址中查看该内容。

第3步:保护数据库服务器

MariaDB服务器的默认安装有几个非常适合测试和开发的功能,但应该为生产服务器禁用或删除它们。该mysql_secure_installation命令引导您设置root密码,并从你的安装中删除不安全功能的过程。即使您不打算使用MariaDB服务器,我们也建议您执行此过程。

保护MariaDB服务器

  1. 启动MariaDB服务器。

    [ec2-user ~]$ sudo systemctl start mariadb
  2. 运行mysql_secure_installation。

    [ec2-user ~]$ sudo mysql_secure_installation
    1. 输入当前的root密码。默认情况下,root帐户没有设置密码。按Enter键。

    2. 键入Y以设置密码,然后键入两次安全密码。有关创建安全密码的详细信息,请参阅https://identitysafe.norton.com/password-generator/。确保将此密码存储在安全的地方。

      注意

      为MariaDB设置root密码只是保护数据库的最基本措施。在构建或安装数据库驱动的应用程序时,通常会为该应用程序创建数据库服务用户,并避免将root帐户用于除数据库管理之外的任何其他操作。

    1. 出现提示时,键入root帐户的密码。

    2. 键入Y以删除匿名用户帐户。

    3. 键入Y以禁用远程root登录。

    4. 键入Y以删除测试数据库。

    5. 键入Y以重新加载权限表并保存更改。

  3. (可选)如果您不打算立即使用MariaDB服务器,请将其停止。您可以在需要时重新启动它。

    [ec2-user ~]$ sudo systemctl stop mariadb
  4. (可选)如果希望MariaDB服务器在每次启动时启动,请键入以下命令。

    [ec2-user ~]$ sudo systemctl enable mariadb

第4步:(可选)安装phpMyAdmin

phpMyAdmin是一个基于Web的数据库管理工具,可用于查看和编辑EC2实例上的MySQL数据库。按照以下步骤在phpMyAdminAmazon Linux实例上安装和配置。

重要

phpMyAdmin除非您在Apache中启用了SSL / TLS,否则我们不建议使用访问LAMP服务器; 否则,您的数据库管理员密码和其他数据将通过Internet不安全地传输。有关开发人员的安全建议,请参阅保护phpMyAdmin安装。有关在EC2实例上保护Web服务器的一般信息,请参阅教程:在Amazon Linux上配置Apache Web服务器以使用SSL / TLS

安装phpMyAdmin

  1. 安装所需的依赖项。

    [ec2-user ~]$ sudo yum install php-mbstring -y
  2. 重启Apache。

    [ec2-user ~]$ sudo systemctl restart httpd
  3. 重启php-fpm。

    [ec2-user ~]$ sudo systemctl restart php-fpm
  4. 导航到Apache文档根目录/var/www/html。

    [ec2-user ~]$ cd /var/www/html
  5. https://www.phpmyadmin.net/downloads中选择最新phpMyAdmin版本的源包。要将文件直接下载到您的实例,请复制该链接并将其粘贴到wget 命令中,如下例所示:

    [ec2-user html]$ wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz
  6. phpMyAdmin使用以下命令创建文件夹并将包解压缩到其中。

    [ec2-user html]$ mkdir phpMyAdmin && tar -xvzf phpMyAdmin-latest-all-languages.tar.gz -C phpMyAdmin --strip-components 1
  7. 删除phpMyAdmin-latest-all-languages.tar.gz tarball。

    [ec2-user html]$ rm phpMyAdmin-latest-all-languages.tar.gz
  8. (可选)如果MySQL服务器未运行,请立即启动它。

    [ec2-user ~]$ sudo systemctl start mariadb
  9. 在Web浏览器中,键入phpMyAdmin安装的URL。此URL是实例的公共DNS地址(或公共IP地址),后跟正斜杠和安装目录的名称。例如:

    http://my.public.dns.amazonaws.com/phpMyAdmin

    您应该看到phpMyAdmin登录页面:

  10. 使用root您之前创建的用户名和MySQL root密码登录到phpMyAdmin安装。

    在将其投入使用之前,仍必须配置您的安装。要配置phpMyAdmin,您可以手动创建配置文件使用安装控制台或组合这两种方法。

    有关使用phpMyAdmin的信息,请参阅phpMyAdmin用户指南

故障排除

本节提供了解决在设置新LAMP服务器时可能遇到的常见问题的建议。

我无法使用网络浏览器连接到我的服务器。

执行以下检查以查看Apache Web服务器是否正在运行且可访问。

  • Web服务器是否正在运行?

    您可以通过运行以下命令来验证httpd是否已打开:

    [ec2-user ~]$ sudo systemctl is-enabled httpd

    如果httpd进程未运行,请重复准备LAMP服务器中描述的步骤。

  • 防火墙是否正确配置?

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

分类   默认分组
字数   6407

博客标签    Linux 2 安装PHP   Linux 2 install php   亚马逊服务器安装php  

评论