云计算
9分钟阅读

在AWS EC2上托管Web应用程序

在AWS EC2上托管Web应用程序的完整指南,包括Apache安装、FTP配置、负载均衡器和Route53集成。

N
Necmettin Demir
2023年7月21日
加载中...

在AWS EC2上托管Web应用程序

AWS EC2 Web Hosting
AWS EC2 Web Hosting
在AWS环境中托管Web应用程序有多种方式。您的Web应用程序可以是传统网站或API项目。以下两种类型都将称为"Web应用程序"(web app)。

简介

在AWS环境中托管Web应用程序有多种方式。您的Web应用程序可以是传统网站或API项目。以下两种类型都将称为"Web应用程序"(web app)。以下列出了我们可以在AWS中托管Web应用程序的一些方式:
  1. 在S3存储桶中托管Web应用程序
  2. 在ECS、EKS或Fargate容器中托管Web应用程序
  3. 使用Elastic Beanstalk托管Web应用程序
  4. 直接在EC2上托管Web应用程序
[!NOTE] 虽然选项1、2和3是AWS中托管内容的现代方法,但在本文中,我们面向那些在旧系统上工作过但希望以旧习惯迁移到AWS环境的人!
我们的目标是快速介绍Route53、Application Load Balancer、Security Groups等与EC2的协作流程。
在本文中,我们将检查最后一个选项。 EC2可使用多种操作系统。我们将使用"Free Tier"(免费层)中可用的最低配置Linux。有关AWS Free Tier的更多信息,请点击此处
Amazon EC2可直接用于托管Web应用程序。本文将逐步解释完成此任务所需的所有步骤。

背景知识

我们要做什么?

基本架构如下图所示:
系统架构
系统架构
图片-001:主系统视图
假设您的目标是在AWS EC2机器上托管您的网站。为了简化应用程序,将在AWS EC2上的Apache Web服务器上发布静态HTML页面。我们将使FTP能够访问Apache的默认www文件夹。除了这些要求外,还将通过AWS Route53将域名定向到此Web应用程序。
为了设计图片-001中显示的架构,我们将按照灰色圆圈内的编号顺序创建AWS元素。
假设我们的域名是WELR.com,我们想在EC2上托管其运行元素。
在AWS EC2上托管WELR.com内容的所有步骤如下。

步骤1:在AWS中创建安全组

此安全组将用于EC2。安全组可以被视为其所附加对象的防火墙。
如下所示设置所有入站(inbound)端口:
  • 20-21(FTP)
  • 1024-1048(FTP),可选
  • 22(SSH)
  • 80(HTTP)
  • 8080(HTTP自定义),可选
  • 443(HTTPS)
下图中的红色矩形对于显示通过相关安全组从ALB到EC2的流程很重要。
入站规则
入站规则
图片-002:SG-for-EC2-for-WELR的入站规则

步骤2:创建EC2实例

在AWS中创建EC2实例是一个简单的过程。下图右上角的Connect(连接)按钮将用于连接到EC2。
创建EC2
创建EC2
图片-003:EC2-for-WELR
将所有需求安装到EC2-for-WELR。
首先,您应该连接到EC2命令行。有多种方法可以执行此步骤,但最简单的是直接通过AWS Web控制台连接。
EC2连接
EC2连接
图片-004:连接到EC2-for-WELR
按下Connect按钮后,您将以ec2-user的身份连接到EC2命令行。

2.1- Apache安装

TEXT
> 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安装

TEXT
> sudo su
> yum update -y
> yum install vsftpd
		
> sudo vi /etc/vsftpd/vsftpd.conf
您应该在FTP配置文件中进行如下所示的一些更改。
配置文件中的所有这些行应如图所示存在。您需要知道如何使用vi编辑器。如果您是第一次使用vi编辑器,请点击这里查看。
TEXT
# 取消以下所有行的#号注释
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服务:
TEXT
> /etc/init.d/vsftpd restart
或者:
TEXT
> systemctl restart vsftpd
在EC2命令行中执行以下操作为FTP添加用户:
TEXT
> 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:为ALB创建安全组

如下所示设置所有入站(inbound)端口:
  • 20-21(FTP)
  • 1024-1048(FTP),可选
  • 22(SSH)
  • 80(HTTP)
  • 8080(HTTP自定义),可选
  • 443(HTTPS)
ALB入站规则
ALB入站规则
图片-005:SG-for-ALB-for-WELR的入站规则

步骤4:创建Target Group

Target Group
Target Group
图片-006:Target Group TG-for-WELR

步骤5:创建Application Load Balancer

此ALB应包含TG-for-WELR目标组。
目标组(Target group)是一组EC2。但目前只包含EC2-for-WELR实例。
此外,此ALB应包含SG-for-ALB-for-WELR安全组。
图片-007:Application Load Balancer ALB-for-WELR
创建ALB
创建ALB

步骤6:安全组之间的权限

SG-for-EC2-for-WELR添加入站规则,以接受来自SG-for-ALB-for-WELR的所有TCP请求。
安全组之间的流程
安全组之间的流程
图片-008:允许通过安全组从ALB到EC2的流程

步骤7:创建Route53托管区域

应该有如下四条记录:
  • NS和SOA会自动创建
  • 创建Record A。如下图所示
  • 创建Record CNAME - 用于welr.com
图片-009 - Route53记录
Route53记录
Route53记录
NS地址可在域名管理界面中使用,将域名指向您在EC2 Apache上托管的Web应用程序。

结论

如本文开头所述,在任何云环境中托管Web应用程序都有多种方式。我们在AWS EC2上进行了一些研究。如您所见,我们假设通过FTP手动将Web应用程序的运行元素部署到Apache。但是,可以使用任何CI/CD工具通过FTP命令自动执行此过程。
本文的主要目的是展示如何在Route53和负载均衡器后面的EC2上在AWS环境中托管Web应用程序。

我们学到的内容:

  • 创建和配置EC2实例
  • Apache Web服务器安装
  • FTP配置和添加用户
  • Security Group设置
  • Application Load Balancer设置
  • 使用Route53进行域名定向

☁️ 云计算服务

我们在AWS、Azure和Google Cloud平台上提供基础设施设计、迁移、管理和优化服务。

查看我们的服务

📞 联系我们

如需了解有关AWS和我们云计算解决方案的详细信息,请与我们的团队交流。

联系