本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
教程:在 AL2 0 LAMP 23 上安装服务器
以下过程可帮助你在 023 实例(有时称为 LAMP Web 服务器或堆栈)上AL2安装支持 M ar
重要
这些程序旨在与 AL2 023 一起使用。如果您尝试在其他发行版(例如 Ubuntu 或红帽企业 Linux)上设置 LAMP Web 服务器,则本教程将无法运行。对于 Ubuntu,请参阅以下 Ubuntu 社区文档:。ApacheMySQLPHP
步骤 1:准备LAMP服务器
先决条件
-
本教程假设您已经使用 AL2 023 启动了一个新实例,该实例的公共DNS名称可以从互联网上访问。有关更多信息,请参阅 AL2亚马逊上的 023 EC2。您还必须将安全组配置为允许SSH(端口 22)、HTTP(端口 80)和HTTPS(端口 443)连接。有关这些先决条件的更多信息,请参阅 Amazon EC2 用户指南中的授权 Linux 实例的入站流量。
-
以下步骤安装 AL2 023 上可用的最新PHP版本,当前为 8.1。如果您计划使用本教程中描述的PHP应用程序以外的应用程序,则应检查它们与 8.1 的兼容性。
准备LAMP服务器
-
连接到您的实例。有关更多信息,请参阅 正在连接到 AL2 023 个实例。
-
为确保您的所有软件包都处于最新状态,请对您的实例执行快速软件更新。此过程可能需要几分钟的时间,但必须确保您拥有最新的安全更新和缺陷修复。
-y
选项安装更新时不提示确认。如果您希望在安装前检查更新,则可以忽略该选项。[ec2-user ~]$
sudo dnf upgrade -y
-
安装最新版本的 Apache Web 服务器和适用于 AL2 0 PHP 23 的软件包。
[ec2-user ~]$
sudo dnf install -y httpd wget php-fpm php-mysqli php-json php php-devel
-
安装 MariaDB 软件包。使用 dnf install 命令可同时安装多个软件包和所有相关依赖项。
[ec2-user ~]$
sudo dnf install mariadb105-server您可以使用以下命令查看这些程序包的当前版本:
[ec2-user ~]$
sudo dnf infopackage_name
例如:
[root@ip-172-31-25-170 ec2-user]# dnf info mariadb105 Last metadata expiration check: 0:00:16 ago on Tue Feb 14 21:35:13 2023. Installed Packages Name : mariadb105 Epoch : 3 Version : 10.5.16 Release : 1.amzn2023.0.6 Architecture : x86_64 Size : 18 M Source : mariadb105-10.5.16-1.amzn2023.0.6.src.rpm Repository : @System From repo : amazonlinux Summary : A very fast and robust SQL database server URL : http://mariadb.org License : GPLv2 and LGPLv2 Description : MariaDB is a community developed fork from MySQL - a multi-user, multi-threaded : SQL database server. It is a client/server implementation consisting of : a server daemon (mariadbd) and many different client programs and libraries. : The base package contains the standard MariaDB/MySQL client programs and : utilities.
-
启动 Apache Web 服务器。
[ec2-user ~]$
sudo systemctl start httpd
-
使用 systemctl 命令配置 Apache Web 服务器,使其在每次系统启动时启动。
[ec2-user ~]$
sudo systemctl enable httpd
您可以通过运行以下命令验证 httpd 是否已启用:
[ec2-user ~]$
sudo systemctl is-enabled httpd
-
如果您尚未添加安全规则,允许您的实例的入站HTTP(端口 80)连接。默认情况下,启动向导-
N
安全组是在启动期间为您的实例创建的。如果您未添加其他安全组规则,则该组仅包含一条允许SSH连接的规则。打开亚马逊EC2控制台,网址为https://console.aws.amazon.com/ec2/
。 在左侧的导航中,选择 Instances(实例),然后选择您的实例。
-
在安全选项卡上,查看入站规则。您应看到以下规则:
Port range Protocol Source 22 tcp 0.0.0.0/0
警告
使用
0.0.0.0/0
允许所有IPv4地址使用访问您的实例SSH。这在测试环境中可以接受一小段时间,但是在生产环境中并不安全。在生产环境中,您仅授权特定 IP 地址或地址范围访问您的实例。 -
如果没有允许HTTP(端口 80)连接的入站规则,则必须立即添加规则。选择安全组的链接。使用授权您的 Linux 实例的入站流量中的步骤,添加具有以下值的新入站安全规则:
-
类型:HTTP
-
协议:TCP
-
Port Range:80
-
Source:Custom
-
-
测试您的 Web 服务器。在 Web 浏览器中,键入您的实例的公有DNS地址(或公有 IP 地址)。如果
/var/www/html
中没有内容,您应该会看到 Apache 测试页面,该页面将显示消息 It works!(它工作正常!)。您可以使用 Amazon EC2 控制台公开DNS您的实例(选中 “公开 IPv4 DNS” 列;如果此列处于隐藏状态,请选择 “首选项”(齿轮形图标)并切换为 “公开 IPv4 DNS”)。
验证实例的安全组是否包含允许端口 80 上HTTP流量的规则。有关更多信息,请参阅向安全组添加规则。
重要
如果您使用的不是 Amazon Linux,则还可能需要在实例上配置防火墙才能允许这些连接。有关如何配置防火墙的更多信息,请参阅适用于特定分配的文档。
Apache httpd 提供的文件保存在名为 Apache 文档根目录的目录中。Amazon Linux Apache 文档根目录为 /var/www/html
,默认情况下归根用户所有。
要允许 ec2-user
账户操作此目录中的文件,必须修改其所有权和权限。有多种方式可以完成此任务。在本教程中,可将 ec2-user
添加到 apache
组,将 /var/www
目录的所有权授予 apache
组,并为该组指定写入权限。
设置文件权限
-
将您的用户 (这里指
ec2-user
) 添加到apache
。[ec2-user ~]$
sudo usermod -a -G apache
ec2-user
-
先退出再重新登录以选取新组,然后验证您的成员资格。
-
退出(使用 exit 命令或关闭终端窗口):
[ec2-user ~]$
exit
-
要验证您是否为
apache
组的成员,请重新连接到实例,然后运行以下命令:[ec2-user ~]$
groups
ec2-user adm wheel apache systemd-journal
-
-
将
/var/www
及其内容的组所有权更改到apache
组。[ec2-user ~]$
sudo chown -R ec2-user:apache /var/www
-
要添加组写入权限以及设置未来子目录上的组 ID,请更改
/var/www
及其子目录的目录权限。[ec2-user ~]$
sudo chmod 2775 /var/www && find /var/www -type d -exec sudo chmod 2775 {} \;
-
要添加组写入权限,请递归地更改
/var/www
及其子目录的文件权限:[ec2-user ~]$
find /var/www -type f -exec sudo chmod 0664 {} \;
现在,ec2-user
(以及该apache
群组中的任何 future 成员)都可以在Apache文档根目录中添加、删除和编辑文件,从而使您能够添加内容,例如静态网站或PHP应用程序。
保护您的 Web 服务器 (可选)
运行该HTTP协议的 Web 服务器无法为其发送或接收的数据提供传输安全性。当您使用网络浏览器连接到HTTP服务器时,网络路径上任何地方的窃听者都可以看到您访问的内容、收到的网页内容以及您提交的任何HTML表单的内容(包括密码)。URLs保护 Web 服务器的最佳做法是安装对 HTTPS (S HTTP ecure) 的支持,它使用SSL/TLS加密来保护您的数据。
有关在服务器HTTPS上启用的信息,请参阅教程:在 AL2023 上配置 SSL/TLS。
第 2 步:测试您的LAMP服务器
如果您的服务器已安装并正在运行,并且您的文件权限设置正确,则您的ec2-user
帐户应该能够在可从 Internet 访问的/var/www/html
目录中创建PHP文件。
测试您的LAMP服务器
-
在 Apache 文档根目录中创建一个文件。PHP
[ec2-user ~]$
echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php
尝试运行该命令时,如果出现“Permission denied (权限被拒绝)”错误,请尝试先注销,再重新登录,以获取您在 设置文件权限 中配置的适当组权限。
-
在 Web 浏览器中URL,键入您刚刚创建的文件。URL这是您的实例的公共DNS地址,后面是正斜杠和文件名。例如:
http://
my.public.dns.amazonaws.com
/phpinfo.php您应该会看到PHP信息页面:
如果您未看到此页面,请验证上一步中是否已正确创建
/var/www/html/phpinfo.php
文件。您还可以使用以下命令验证已经安装了所有必需的程序包。[ec2-user ~]$
sudo dnf list installed httpd mariadb-server php-mysqlnd
如果输出中未列出任何必需的程序包,请使用 sudo yum install
package
命令安装它们。 -
删除
phpinfo.php
文件。尽管此信息可能很有用,但出于安全考虑,不应将其传播到 Internet。[ec2-user ~]$
rm /var/www/html/phpinfo.php
现在,您应该拥有一台功能齐全LAMP的 Web 服务器。如果您在 Apache 文档根目录中添加内容/var/www/html
,则应该能够在您的实例的公共DNS地址上查看该内容。
步骤 3:确保数据库服务器的安全
MariaDB 服务器的默认安装提供有多种功能,这些功能对于测试和开发都很有帮助,但对于产品服务器,应禁用或删除这些功能。mysql_secure_installation 命令可引导您设置根密码并删除安装中的不安全功能。即使您不打算使用 MariaDB 服务器,我们也建议执行此步骤。
保护 MariaDB 服务器
-
启动 MariaDB 服务器。
[ec2-user ~]$
sudo systemctl start mariadb
-
运行 mysql_secure_installation。
[ec2-user ~]$
sudo mysql_secure_installation
-
在提示时,键入根账户的密码。
-
键入当前根密码。默认情况下,根账户没有设置密码。按 Enter。
-
键入
Y
设置密码,然后键入两次安全密码。有关创建安全密码的更多信息,请参阅https://identitysafe.norton.com/password-generator/。确保将此密码存储在安全位置。 设置 MariaDB 根密码仅是保护数据库的最基本措施。在您构建或安装数据库驱动的应用程序时,您通常可以为该应用程序创建数据库服务用户,并避免使用根账户执行除数据库管理以外的操作。
-
-
键入
Y
删除匿名用户账户。 -
键入
Y
禁用远程根登录。 -
键入
Y
删除测试数据库。 -
键入
Y
重新加载权限表并保存您的更改。
-
-
(可选) 如果您不打算立即使用 MariaDB 服务器,请停止它。您可以在需要时再次重新启动。
[ec2-user ~]$
sudo systemctl stop mariadb
-
(可选) 如果您希望每次启动时 MariaDB 服务器都启动,请键入以下命令。
[ec2-user ~]$
sudo systemctl enable mariadb
步骤 4:(可选)安装 phpMyAdmin
phpMyAdminphpMyAdmin
。
重要
除非您已在 Apache TLS 中启用SSL/,否则我们不建议使用phpMyAdmin
访问LAMP服务器;否则,您的数据库管理员密码和其他数据将不安全地通过 Internet 传输。有关开发人员提出的安全建议,请参阅保护您的 phpMyAdmin 安装
要安装 phpMyAdmin
-
安装所需的依赖项。
[ec2-user ~]$
sudo dnf install php-mbstring php-xml -y
-
重启 Apache。
[ec2-user ~]$
sudo systemctl restart httpd
-
重启
php-fpm
。[ec2-user ~]$
sudo systemctl restart php-fpm
-
导航到位于
/var/www/html
的 Apache 文档根。[ec2-user ~]$
cd /var/www/html
-
从 https://www.phpmyadmin.net/downloads
选择最新 phpMyAdmin 版本的源包。要将文件直接下载到您的实例,请复制链接并将其粘贴到 wget 命令,如本示例中所述: [ec2-user html]$
wget
https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz
-
使用以下命令创建
phpMyAdmin
文件夹并将程序包提取到其中。[ec2-user html]$
mkdir phpMyAdmin && tar -xvzf
phpMyAdmin-latest-all-languages.tar.gz
-C phpMyAdmin --strip-components 1 -
删除存储在设备上的
phpMyAdmin-latest-all-languages.tar.gz
tarball。[ec2-user html]$
rm
phpMyAdmin-latest-all-languages.tar.gz
-
(可选)如果 “我的SQL服务器” 未运行,请立即启动它。
[ec2-user ~]$
sudo systemctl start mariadb
-
在 Web 浏览器中,键入URL您的 phpMyAdmin 安装内容。URL这是您的实例的公有DNS地址(或公有 IP 地址),后跟正斜杠和安装目录的名称。例如:
http://
my.public.dns.amazonaws.com
/phpMyAdmin你应该会看到 phpMyAdmin 登录页面:
-
使用您之前创建的
root
用户名和 My SQL root 密码登录您的 phpMyAdmin 安装。您的安装仍需进行配置,然后才能投入使用。我们建议您首先手动创建配置文件,如下所示:
-
要从最小的配置文件开始,请使用您常用的文本编辑器创建一个新文件,然后将
config.sample.inc.php
的内容复制到该文件中。 -
将文件另存为
config.inc.php
包含的 phpMyAdmin 目录中index.php
。 -
有关任何其他设置,请参阅安装说明的 “使用 phpMyAdmin 安装脚本
” 部分中的文件创建后说明。
有关使用的信息 phpMyAdmin,请参阅《phpMyAdmin 用户指南》
。 -
故障排除
本节提供有关解决您在设置新LAMP服务器时可能遇到的常见问题的建议。
我无法使用 Web 浏览器连接到我的服务器
执行以下检查以查看您的 Apache Web 服务器是否正在运行且可以访问。
我无法使用连接到我的服务器 HTTPS
执行以下检查以查看您的 Apache Web 服务器是否配置为支持HTTPS。
-
Web 服务器配置是否正确?
安装 Apache 后,服务器就配置好了HTTP流量。要支持HTTPS,请在服务器TLS上启用并安装SSL证书。有关信息,请参阅教程:在 AL2023 上配置 SSL/TLS。
-
防火墙是否配置正确?
验证实例的安全组是否包含允许端口 443 上HTTPS流量的规则。有关更多信息,请参阅授权 Linux 实例的入站流量。
相关 主题
有关将文件传输到您的实例或在 Web 服务器上安装 WordPress 博客的更多信息,请参阅以下文档:
有关本教程中使用的命令和软件的更多信息,请参阅以下网页:
-
Apache Web 服务器:http://httpd.apache.org/
-
MariaDB 数据库服务器:https://mariadb.org/
-
PHP编程语言:http://php.net/
有关注册 Web 服务器域名或将现有域名转移到此主机的更多信息,请参阅 Amazon Route 53 开发人员指南中的创建域和子域并将其迁移到 Amazon Route 53。