在 AWS EC2 中托管 Web 应用程序






4.40/5 (10投票s)
在 EC2 中托管 Web 应用程序文件并通过 FTP 访问它们的所有步骤
引言
在 AWS 环境中有许多托管 Web 应用程序的方法。您的 Web 应用程序可以是传统的网站或 API 项目。从现在开始,这两种类型的 Web 项目都将称为 Web 应用程序。以下是可以在 AWS 中托管 Web 应用程序的一些方法:
- 在 S3 存储桶中托管 Web 应用程序
- 在 ECS、EKS 或 Fargete 的容器中托管 Web 应用程序
- 使用 Elastic BeansTalk 托管 Web 应用程序
- 直接在 EC2 中托管 Web 应用程序
尽管 1、2、3 是在 AWS 中托管 Web 内容的现代方法,但我们正在处理一些内容,适用于在传统系统上做了大量工作,但想以旧习惯跳入 AWS 环境的人!
目标是快速介绍 Route53、应用程序负载均衡器、安全组等与 EC2 结合的流程。
因此,在本文中我们将深入研究最后一个。EC2 中可以使用许多操作系统。我们将使用 Free Tier 中能达到的最低配置的 Linux。有关 AWS Free Tier 的更多信息,请点击此处。
Amazon EC2 可直接用于托管 Web 应用程序。在本文中,将一步一步地介绍完成此类任务的所有步骤。
背景
要做什么
主要架构如下图所示
假设目标是将您的网站托管在 AWS EC2 实例上。为了简化应用程序,将使用 Apache Web 服务器将静态 HTML 页面发布到 AWS EC2。我们将通过 FTP 使 Apache 默认的 www 文件夹可访问。除了这些要求外,还将通过 AWS Route53 将一个域重定向到此 Web 应用程序。
要设计图 Image-001 中所示的架构,我们将按照灰色圆圈中的数字顺序创建 AWS 资源。
假设我们的域名是 WELR.com,我们想在 EC2 中托管其运行项。
在 AWS EC2 中托管 WELR.com 内容的所有步骤如下。
步骤 1:在 AWS 中创建安全组(SG-for-EC2-for-WELR)
此安全组将用于 EC2。安全组可以看作是其所绑定内容的防火墙。
按如下方式设置所有入站端口
- 20-21 (FTP)
- 1024-1048 (FTP),可选
- 22 (SSH)
- 80 (HTTP)
- 8080 (HTTP 自定义),可选
- 443 (HTTPS)
下图中的红色矩形对于显示从 ALB 到 EC2 通过相关安全组的流量非常重要。
步骤 2:使用 SG-for-EC2-for-WELR 创建 EC2 (EC2-for-WELR)
在 AWS 中创建 EC2 实例是一项直接的操作。下图右上角的连接按钮将用于连接到 EC2。
在 EC2-for-WELR 中安装所有必需项。
首先,您应该连接到 EC2 命令提示符。要执行此步骤,有许多方法。但最简单的方法是通过 AWS Web 控制台直接连接。
按下连接按钮后,您将以 ec2-user
身份连接到 EC2 命令提示符。
2.1- 安装 Apache
> sudo s
> yum update -
> yum install -y httpd.x86_6
> systemctl start httpd.servic
> systemctl enable httpd.service
所有 Web 应用程序文件将存放在 Apache 默认 Web 文件夹中。
Apache 的默认 Web 文件夹是 /var/www/html。
2.2 - 安装 FTP
> sudo su
> yum update -y
> yum install vsftpd
> sudo vi /etc/vsftpd/vsftpd.conf
您应该在 ftp 配置文件中进行一些更改,如下所示。
所有这些行都应存在于配置文件中,如下所示。要使用 vi 编辑器,您应该知道如何使用它。如果您是第一次使用 vi 编辑器,请在此处查看 此处。
# remove all # of the lines below
anonymous_enable=NO
#
local_enable=YES
#
write_enable=YES
#
local_umask=022
#
dirmessage_enable=YES
#
xferlog_enable=YES
#
connect_from_port_20=YES
#
chroot_local_user=YES
write_enable=YES
allow_writeable_chroot=YES
#
listen=NO
#
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1048
pasv_address=18.170.116.xxx
要重新启动 vsftpd
,可以使用以下命令之一。
> /etc/init.d/vsftpd restart
或者
> systemctl restart vsftpd
要为 FTP 添加用户,请在 EC2 命令提示符中执行以下操作。
> adduser awsftpuse
> passwd awsftpuse
> usermod -a -G root awsftpuser
> usermod -d /var/www/html/ awsftpuse
> chown -R awsftpuser /var/www/htm
> systemctl restart vsftpd
2.3 - 安装 FTP 客户端
例如,Windows 上的 Filezilla 客户端。
在 AWS 中创建所有资源后,尝试使用 FTP 客户端连接并上传文件。您应该能够将 index.html 上传到 EC2 中的 FTP Web 文件夹。
步骤 3:创建安全组 (SG-for-ALB-for-WELR)(将用于 ALB)
按如下方式设置所有入站端口
- 20-21 (FTP)
- 1024-1048 (FTP),可选
- 22 (SSH)
- 80 (HTTP)
- 8080 (HTTP 自定义),可选
- 443 (HTTPS)
步骤 4:创建包含 EC2-for-WELR 的目标组 TG-for-WELR
步骤 5:创建名为 ALB-for-WELR 的应用程序负载均衡器
此 ALB 应具有目标组 TG-for-WELR
。
目标组是 EC2 的一组。但现在它只包含 EC2-for-WELR
。
此外,此 ALB 应具有 SG-for-ALB-for-WELR
。
步骤 6:允许 SG-for-ALB-for-WELR 到 SG-for-EC2-for-WELR 的所有 TCP 请求
向 SG-for-EC2-for-WELR
添加入站规则,使其接受来自 SG-for-ALB-for-WELR
的所有 TCP 请求。
步骤 7:创建 Route53 托管区域
它应具有如下四个记录
- NS 和 SOA 是自动创建的
- 创建记录 A。如下图所示
- 创建 CNAME 记录 - 指向 welr.com
NS 地址可用于域管理 UI,将域名重定向到您在 EC2 Apache 中托管的 Web 应用程序。
结论
正如本文开头所述,在任何云环境中都有许多托管 Web 应用程序的方法。我们在 AWS EC2 中进行了一些调查。如您所见,我们假设手动通过 FTP 将 Web 应用程序的运行项部署到 Apache。但是,通过任何 CI/CD 工具,也可以使用 FTP 命令自动完成。
本文的主要目的是展示如何在 Route53 和负载均衡器后面的 EC2 中托管 Web 应用程序。
历史
- 2022 年 9 月 26 日:初始版本