AWS: 安装 LAMP Web 服务器

来源:互联网 发布:短小精悍恐怖故事知乎 编辑:程序博客网 时间:2024/05/21 11:17

    本文从AWS文档中拷贝而来,由于原文访问速度实在慢,故转载以便查阅。

    原文地址:https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/install-LAMP.html

教程:安装 LAMP Web 服务器

通过以下步骤,您可以将具有 PHP 和 MySQL 支持功能的 Apache Web 服务器(有时称为 LAMP Web 服务器或 LAMP 堆栈)安装到您 Amazon EC2 实例上。您可以使用此服务器来托管静态网站或部署能对数据库中的信息执行读写操作的动态 PHP 应用程序。

先决条件

本教程假定您已经启动具有可从 Internet 访问的公有 DNS 名称的实例。有关更多信息,请参见 启动 Amazon EC2 实例。还必须将安全组配置为允许 SSH(端口 22)、HTTP(端口 80)和 HTTPS(端口 443)连接。有关这些先决条件的更多信息,请参阅 Amazon EC2 的设置。

Important

这些步骤专门针对 Amazon Linux,但命令和文件位置与 Red Hat 和 CentOS 基本相同。有关其他发布版本的更多信息,请参阅其具体文档。如果您尝试在 Ubuntu 实例上设置 LAMP Web 服务器,则本教程不适合您。有关 Ubuntu 上的 LAMP Web 服务器的信息,请转到 Ubuntu 社区文档 ApacheMySQLPHP 主题。

安装和启动 LAMP Web 服务器

  1. 连接到您的实例。

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

    Note

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

    [ec2-user ~]$ sudo yum update -y
  3. 您的实例处于最新状态后,便可以安装 Apache Web 服务器、MySQL 和 PHP 软件包。使用 yum groupinstall 命令可同时安装多个软件包和所有相关依赖项。

    [ec2-user ~]$ sudo yum groupinstall -y "Web Server" "MySQL Database" "PHP Support"

    Note

    非 Amazon Linux 实例的组名称可能存在细微差异。如果以上命令因组名称无效而失败,请使用 yum grouplist 命令,在输出中查找类似的组(如“MySQL Database server”而不是“MySQL Database”),对您的分发版本使用适当的组名称。

  4. 安装 php-mysql 软件包。

    [ec2-user ~]$ sudo yum install -y php-mysql
  5. 启动 Apache Web 服务器。

    [ec2-user ~]$ sudo service httpd startStarting httpd:                                            [  OK  ]
  6. 使用 chkconfig 命令将 Apache Web 服务器配置为在每次系统启动时启动。

    [ec2-user ~]$ sudo chkconfig httpd on

    Tip

    当您成功启用服务时,chkconfig 命令不提供任何确认消息。您可以通过运行以下命令验证 httpd 是否已启用。

    [ec2-user ~]$ chkconfig --list httpdhttpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off

    在运行级别 2、3、4 和 5 下,httpd 为 on(您希望看到的状态)。

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

    Tip

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

    Important

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

    Note

    此测试页面仅在 /var/www/html 无内容时显示。将内容添加到文档根目录后,您的内容将显示在您实例的公有 DNS 地址中,而不显示在本测试页面。

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

[ec2-user ~]$ ls -l /var/wwwtotal 16drwxr-xr-x 2 root root 4096 Jul 12 01:00 cgi-bindrwxr-xr-x 3 root root 4096 Aug  7 00:02 errordrwxr-xr-x 2 root root 4096 Jan  6  2012 htmldrwxr-xr-x 3 root root 4096 Aug  7 00:02 icons

要允许 ec2-user 操作此目录中的文件,您需要修改其所有权和权限。有多种方法可以完成此任务;在本教程中,您可以将 www 组添加到您的实例,然后赋予该组 /var/www 目录的所有权并为该组添加写入权限。随后,该组的所有成员都将能够为 Web 服务器添加、删除和修改文件。

设置文件权限

  1. 将 www 组添加到您的实例。

    [ec2-user ~]$ sudo groupadd www
  2. 将您的用户(这里指 ec2-user)添加到 www 组。

    [ec2-user ~]$ sudo usermod -a -G www ec2-user

    Important

    您必须先退出,再重新登录,然后才能接受新组。您可以使用 exit 命令,也可以关闭终端窗口。

  3. 注销后重新登录,验证您在 www 组中的成员资格。

    1. 退出。

      [ec2-user ~]$ exit
    2. 重新连接到实例,然后运行以下命令,验证您在 www 组中的成员资格。

      [ec2-user ~]$ groupsec2-user wheel www
  4. 将 /var/www 及其内容的组所有权更改到 www 组。

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

    [ec2-user ~]$ sudo chmod 2775 /var/www[ec2-user ~]$ find /var/www -type d -exec sudo chmod 2775 {} +
  6. 递归更改 /var/www 及其子目录的文件权限,以添加组写入权限。

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

现在,ec2_user(以及 www 组的任何未来成员)可以在 Apache 文档根目录中添加、删除和编辑文件。现在您已准备好添加内容,例如静态网站或 PHP 应用程序。

测试您的 LAMP Web 服务器

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

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

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

    Tip

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

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

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

    您应该可以看到 PHP 信息页面。

    Note

    如果看不到上图,而是看到 phpinfo() 源代码,请验证是否正确安装了 php 包。您的输出可能稍有不同,但请在 Installed Packages 部分中查找 php

    [ec2-user wordpress]$ yum list installed phpLoaded plugins: priorities, security, update-motd, upgrade-helperamzn-main                                                | 2.1 kB     00:00amzn-updates                                             | 2.3 kB     00:00Installed Packagesphp.x86_64                       5.3.27-1.0.amzn1                  @amzn-updates

    如果此包没有列为已安装,请使用以下命令安装它,重新启动 httpd 服务,然后重新加载 phpinfo.php 页面。

    [ec2-user wordpress]$ sudo yum install -y php[ec2-user wordpress]$ sudo service httpd restart
  3. 删除 phpinfo.php 文件。尽管此信息可能对您很有用,但出于安全考虑,不应将其传播到 Internet。

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

保障 MySQL 服务器的安全

MySQL 服务器的默认安装提供有多种功能,这些功能对于测试和开发都很有帮助,但对于产品服务器,应禁用或删除这些功能。mysql_secure_installation 命令可引导您设置根密码并删除安装中的不安全功能。即使您不打算使用 MySQL 服务器,执行此步骤也是一个不错的建议。

  1. 启动 MySQL 服务器,以便可以运行 mysql_secure_installation

    [ec2-user ~]$ sudo service mysqld startInitializing MySQL database:  Installing MySQL system tables...OKFilling help tables...OKTo start mysqld at boot time you have to copysupport-files/mysql.server to the right place for your systemPLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !...Starting mysqld:                                           [  OK  ]

  2. 运行 mysql_secure_installation

    [ec2-user ~]$ sudo mysql_secure_installation
    1. 在系统提示时,输入 root 账户的密码。

      1. 输入当前 root 密码。默认情况下,root 账户没有设置密码,因此按 Enter

      2. 键入 Y 设置密码,然后输入两次安全密码。有关创建安全密码的更多信息,请转至 http://www.pctools.com/guides/password/。确保将此密码存储在安全位置。

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

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

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

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

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

    [ec2-user ~]$ sudo service mysqld stopStopping mysqld:                                           [  OK  ]
  4. (可选)如果您希望每次启动时 MySQL 服务器都启动,请输入以下命令。

    [ec2-user ~]$ sudo chkconfig mysqld on

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

相关主题

有关将文件传输到您的实例或在 Web 服务器上安装 WordPress 博客的更多信息,请参阅以下主题:

  • 使用 WinSCP 将文件传输到您的 Linux 实例

  • 使用 SCP 将文件从 Linux 传输到 Linux 实例

  • 教程:使用 Amazon EC2 托管 WordPress 博客

有关 Apache Web 服务器的更多信息,请转至 http://httpd.apache.org/。有关 MySQL 数据库服务器的更多信息,请转至 http://www.mysql.com/。有关 PHP 编程语言的更多信息,请转至http://php.net/。

如果您想注册 Web 服务器的域名或将现有域名转移到此主机,请参阅 Amazon Route 53 开发人员指南 中的创建域和子域并将其迁移到 Amazon Route 53。


0 0
原创粉丝点击