当前位置: 首页 > news >正文

亚麻云之轻云直上EC2

本文作者: 封磊

Eclicktech SA | AWS Community Builder DevTool | AWS UGL | 亚马逊云科技云博主

阿里云&InfoQ&CSDN签约作者

前言

在上一篇《亚麻云之平步"轻"云》中,我们体验了Amazon Lightsail的简单易用。当你的应用需要更多灵活性和控制权时,就是时候"轻云直上",进入Amazon EC2的世界了。EC2是AWS的核心计算服务,掌握它是云计算进阶的必经之路。

什么是Amazon EC2?

Amazon EC2(Elastic Compute Cloud)是AWS提供的可扩展计算服务,让你可以在云中运行虚拟服务器。与Lightsail相比,EC2提供了更多的配置选项和控制权。

从Lightsail到EC2的主要区别

特性LightsailEC2
易用性简单,预配置灵活,需要配置
实例类型固定套餐丰富的实例类型
网络简化网络完全可控的VPC
存储固定SSD多种存储类型
定价固定月费按需付费
扩展性有限无限扩展

从Lightsail迁移到EC2

方法一:快照迁移(推荐)[也可控制台操作]

最简单的迁移方式是使用Lightsail的快照导出功能:

# 1. 创建Lightsail快照
aws lightsail create-instance-snapshot \--instance-name my-lightsail-instance \--instance-snapshot-name migration-snapshot# 2. 导出快照到EC2
aws lightsail export-snapshot \--source-snapshot-name migration-snapshot# 3. 在EC2中使用导出的AMI启动实例

方法二:手动迁移

对于简单应用,也可以手动迁移:

  1. 备份数据和配置文件
  2. 在EC2中创建新实例
  3. 安装相同的软件
  4. 恢复数据和配置

EC2基础概念

实例类型选择

EC2提供多种实例类型,适合不同的工作负载:

通用型(推荐入门)

  • t3.micro:1 vCPU, 1GB RAM - 免费套餐
  • t3.small:1 vCPU, 2GB RAM - 轻量应用
  • t3.medium:2 vCPU, 4GB RAM - 中等负载

计算优化型

  • c5.large:2 vCPU, 4GB RAM - CPU密集型应用

内存优化型

  • r5.large:2 vCPU, 16GB RAM - 内存密集型应用

网络基础

VPC(虚拟私有云)

  • 你的私有网络空间
  • 可以创建子网、配置路由表
  • 比Lightsail的网络更灵活

安全组

  • 虚拟防火墙
  • 控制入站和出站流量
  • 可以引用其他安全组

存储选项

EBS(弹性块存储)

  • gp3:通用SSD,性价比高【默认使用,若默认选择gp2建议换为gp3】
  • io2:高性能SSD,适合数据库
  • st1:吞吐优化HDD,适合大文件,做存储使用

创建你的第一个EC2实例

使用控制台创建【以俄勒冈为例】

控制台链接:https://us-west-2.console.aws.amazon.com/ec2/home?region=us-west-2#Home:

  1. 选择AMI:Amazon Machine Image(操作系统镜像)
    • Amazon Linux 2023(推荐)
    • Ubuntu Server
    • Windows Server
  2. 选择实例类型:建议从 t3.micro 开始
  3. 配置网络
    • 选择VPC和子网
    • 启用公有IP(如果需要从互联网访问)
  4. 配置存储
    • 根卷大小(默认8GB)
    • 存储类型(推荐gp3)
  5. 配置安全组
    • SSH (22端口)
    • HTTP (80端口)
    • HTTPS (443端口)
  6. 选择密钥对:用于SSH连接

使用命令行创建

# 创建密钥对
aws ec2 create-key-pair \--key-name my-ec2-key \--query 'KeyMaterial' \--output text > my-ec2-key.pemchmod 400 my-ec2-key.pem# 创建安全组
aws ec2 create-security-group \--group-name my-web-sg \--description "Web server security group"# 添加规则
aws ec2 authorize-security-group-ingress \--group-name my-web-sg \--protocol tcp \--port 22 \--cidr 0.0.0.0/0aws ec2 authorize-security-group-ingress \--group-name my-web-sg \--protocol tcp \--port 80 \--cidr 0.0.0.0/0# 启动实例
aws ec2 run-instances \--image-id ami-0abcdef1234567890 \--count 1 \--instance-type t3.micro \--key-name my-ec2-key \--security-groups my-web-sg

实战案例:在EC2上部署WordPress

连接到实例

# 使用SSH连接
ssh -i my-ec2-key.pem ec2-user@your-instance-ip

安装LAMP环境

# 更新系统
sudo yum update -y# 安装Apache、MySQL、PHP
sudo yum install -y httpd mysql php php-mysql# 启动服务
sudo systemctl start httpd
sudo systemctl enable httpd
sudo systemctl start mysqld
sudo systemctl enable mysqld

安装WordPress

# 下载WordPress
cd /var/www/html
sudo wget https://wordpress.org/latest.tar.gz
sudo tar -xzf latest.tar.gz
sudo mv wordpress/* .
sudo rm -rf wordpress latest.tar.gz# 设置权限
sudo chown -R apache:apache /var/www/html
sudo chmod -R 755 /var/www/html

配置数据库

# 登录MySQL
sudo mysql# 创建数据库和用户
CREATE DATABASE wordpress;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

配置WordPress

# 复制配置文件
sudo cp wp-config-sample.php wp-config.php# 编辑配置文件
sudo nano wp-config.php

在配置文件中修改数据库信息:

define('DB_NAME', 'wordpress');
define('DB_USER', 'wpuser');
define('DB_PASSWORD', 'password');
define('DB_HOST', 'localhost');

现在访问你的实例IP地址,就可以看到WordPress安装页面了!

EC2的基本管理

实例生命周期

# 查看实例状态
aws ec2 describe-instances --instance-ids i-1234567890abcdef0# 启动实例
aws ec2 start-instances --instance-ids i-1234567890abcdef0# 停止实例
aws ec2 stop-instances --instance-ids i-1234567890abcdef0# 重启实例
aws ec2 reboot-instances --instance-ids i-1234567890abcdef0# 终止实例
aws ec2 terminate-instances --instance-ids i-1234567890abcdef0

创建快照备份

# 创建EBS快照
aws ec2 create-snapshot \--volume-id vol-1234567890abcdef0 \--description "My backup snapshot"# 查看快照
aws ec2 describe-snapshots --owner-ids self

监控实例

# 查看CPU使用率
aws cloudwatch get-metric-statistics \--namespace AWS/EC2 \--metric-name CPUUtilization \--dimensions Name=InstanceId,Value=i-1234567890abcdef0 \--start-time 2023-01-01T00:00:00Z \--end-time 2023-01-01T23:59:59Z \--period 3600 \--statistics Average

成本管理基础

定价模式

按需实例

  • 按小时计费
  • 无长期承诺
  • 适合测试和开发

预留实例

  • 1年或3年承诺
  • 最多节省75%成本
  • 适合稳定的生产环境

Spot实例

  • 利用空闲容量
  • 最多节省90%成本
  • 可能被中断,适合容错应用

成本优化建议

  1. 选择合适的实例类型:从小开始,根据需要扩展
  2. 使用预留实例:对于长期运行的工作负载
  3. 定期审查:删除不需要的资源
  4. 使用标签:便于成本分配和管理
# 为实例添加标签
aws ec2 create-tags \--resources i-1234567890abcdef0 \--tags Key=Environment,Value=Production Key=Project,Value=WebApp

安全基础

基本安全实践

  1. 使用密钥对:禁用密码登录
  2. 配置安全组:只开放必要端口
  3. 定期更新:保持系统和软件最新
  4. 使用IAM角色:避免在实例中存储访问密钥

系统安全配置

# 更新系统
sudo yum update -y# 配置防火墙
sudo systemctl enable firewalld
sudo systemctl start firewalld
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload# 禁用root登录
sudo sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
sudo systemctl restart sshd

常见问题解决

无法连接实例

  1. 检查安全组是否允许SSH(22端口)
  2. 确认使用正确的密钥文件
  3. 检查实例是否在运行状态
# 检查实例状态
aws ec2 describe-instances --instance-ids i-1234567890abcdef0 \--query 'Reservations[*].Instances[*].State.Name'

性能问题

  1. 检查CPU使用率
  2. 监控内存使用
  3. 考虑升级实例类型
# 修改实例类型(需要先停止实例)
aws ec2 stop-instances --instance-ids i-1234567890abcdef0
aws ec2 modify-instance-attribute \--instance-id i-1234567890abcdef0 \--instance-type Value=t3.medium
aws ec2 start-instances --instance-ids i-1234567890abcdef0

下一步学习方向

掌握了EC2基础后,你可以继续学习:

  1. 负载均衡器:分发流量到多个实例
  2. Auto Scaling:自动调整实例数量
  3. RDS数据库:托管数据库服务
  4. CloudWatch:详细监控和告警
  5. VPC高级功能:NAT网关、VPN连接

结语

从Lightsail到EC2,你已经迈出了云计算进阶的重要一步。EC2虽然比Lightsail复杂一些,但它为你提供了更多的灵活性和控制权。

记住几个关键点:

  • 从小实例开始,根据需要扩展
  • 重视安全配置,定期更新系统
  • 合理使用标签,便于管理和成本控制
  • 定期备份重要数据

EC2是AWS的核心服务,掌握它将为你打开更广阔的云计算世界。继续实践,不断学习,你将很快成为云计算的行家!


准备好探索EC2的强大功能了吗?开始创建你的第一个EC2实例,体验真正的云计算灵活性!

http://www.lryc.cn/news/616215.html

相关文章:

  • 硬件开发_基于STM32单片机的智能电梯系统
  • 关键基础设施中的新兴技术如何扩大网络风险
  • Java .class文件反编译成 .java文件
  • LeetCode 括号生成
  • 机器学习数学基础:46.Mann-Kendall 序贯检验(Sequential MK Test)
  • AtomicStampedReference解决方案
  • QT常用控件三
  • 浏览器CEFSharp88+X86+win7 之js交互开启(五)
  • 深入理解C语言一维数组的本质:数组名、指针常量与访问细节
  • 女子试穿4条裤子留下血渍赔50元引争议:消费责任边界在哪?
  • 无须炮解,打开即是Pro版
  • (LeetCode 每日一题) 869. 重新排序得到 2 的幂 (哈希表+枚举)
  • Python中随机化列表元素的详细方法
  • LintCode第604题-滑动窗口内数的和
  • DAY36打卡
  • 自创论述类文本阅读:论温泉
  • ubuntu 安装内核模块驱动 DKMS 介绍
  • 基于Ubuntu20.04的环境,编译QT5.15.17源码
  • ubuntu22.04+samba
  • 正则表达式常用语法参考
  • 零基础学Java第三讲---运算符
  • CSS优先级、HTTP响应状态码
  • ​Microsoft Store 离线下载软件
  • Unity笔记(四)——Camera、碰撞检测函数、刚体加力、音频
  • 电脑使用“碎片整理”程序的作用
  • Java I/O 流:从字节流到 NIO 的进化与应用
  • idea中使用maven造成每次都打印日志
  • IDEA官网下载及其他版本软件下载地址
  • Ubuntu 安装 Elasticsearch
  • 【0基础PS】PS工具详解--缩放工具