一、环境与权限(比赛必写)
1. 操作系统
- 使用 Amazon Linux 2(最新稳定版)
- AMI 选择: Amazon Linux 2 AMI (AWS 官方)
2. 监听指定 TCP 端口(默认 80)权限

AWS 中国区(必记)
 
- 官网:https://www.amazonaws.cn/
- 控制台:https://console.amazonaws.cn/
- 免费套餐:https://www.amazonaws.cn/free
- 区域:北京(cn-north-1)、宁夏(cn-northwest-1)
 
AWS 国际区(Global)
 
- 官网:https://aws.amazon.com/
- 控制台:https://console.aws.amazon.com/
- 免费套餐:https://aws.amazon.com/free
- 常用亚太区域:香港(ap-east-1)、新加坡(ap-southeast-1)、东京(ap-northeast-1)
1. 安装依赖:
bash
yum install -y gcc make
 
2. 允许普通用户监听 80 端口
bash
sudo /usr/sbin/setcap cap_net_bind_service=+ep /usr/bin/python3.9

getcap /usr/bin/python3.9
3. 防火墙放行 80 端口
yum install -y firewalld

systemctl start firewalld
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --reload
 
4. AWS 安全组放行 TCP 80 入方向
 
二、配置文件要求(必须叫 server.ini)

kms->cmk:

key actions(cancel)再点enable

将effect:deny 改为effect:allow

session manager:sudo -i

s3 backets labstack->KeyToGetPassword

aws s3 cp +s3url(复制过来的)

enter_kms_key_id(替换成kms最上面复制的东西)

 cat outputpile获得秘钥的值

# 创建目录(-p 表示如果父目录不存在也一并创建)

sudo mkdir -p /etc/myapp # 再次查看,

确认目录已创建 ls /etc/myapp
touch /etc/myapp/server.ini

ls /etc/myapp

nano /etc/myapp/server.ini

# 服务器基础配置 [server] # 监听地址(0.0.0.0 表示允许所有IP访问) host = 0.0.0.0 # 监听端口(你之前配置了80端口权限,这里用80) port = 80 # 运行模式(debug为调试模式,生产环境可改为production) mode = debug # 最大连接数 max_connections = 1000 # 日志配置 [logging] # 日志级别:DEBUG/INFO/WARNING/ERROR/CRITICAL level = INFO # 日志文件路径 file_path = /var/log/myapp/server.log # 是否输出到控制台 console_output = True # 应用配置 [app] # 应用名称 name = MyWebApp # 静态文件目录(如前端页面、图片等) static_dir = /var/www/static # 模板文件目录(如HTML模板) template_dir = /var/www/templates

修复路由

 route print | findstr "161.189.116.17"
      route print | findstr "169.254.169.254"
      route delete 169.254.169.254(删除错误路由)
      $ifIndex = (Get-NetIPAddress -AddressFamily IPv4 | Where-Object { $_.IPAddress -like '10.*' }).InterfaceIndex(主网卡接口)
      route add 169.254.169.254 mask 255.255.255.255 10.0.1.1 metric 1 if $ifIndex(添加正确路由)
      route add 161.189.116.17 mask 255.255.255.255 10.0.1.1 metric 1 if $ifIndex
     $token = Invoke-RestMethod -Method Put -Uri "http://169.254.169.254/latest/api/token" -Headers @{"X-aws-ec2-metadata-toke
n-ttl-seconds" = "21600"}(重点获取token)
     iwr -Uri "http://169.254.169.254/latest/meta-data/" -Headers @{"X-aws-ec2-metadata-token" = $token} -UseBasicParsing(重点返回200)

三、目录权限(服务器必须能写)
1. 日志目录(写 app_log)

mkdir -p /var/log/myapp

sudo chown -R ec2-user:ec2-user /var/log/myapp

nano /var/log/myapp/app_log

import configparser
import logging
import os
from datetime import datetime

# 1. 读取配置文件(和你的server.ini关联)
config = configparser.ConfigParser()
config.read('/etc/myapp/server.ini')

# 2. 获取日志配置(从server.ini中读取路径)
log_dir = config['server']['log_dir']  # /var/log/myapp
log_file = config['server']['log_file']  # app_log
log_path = os.path.join(log_dir, log_file)  # 拼接成 /var/log/myapp/app_log

# 3. 确保日志目录存在(避免写入失败)
os.makedirs(log_dir, exist_ok=True)

# 4. 配置日志格式(大赛规范:时间+级别+模块+内容)
logging.basicConfig(
    level=logging.INFO,  # 日志级别(和配置文件一致)
    format='%(asctime)s [%(levelname)s] %(module)s: %(message)s',
    datefmt='%Y-%m-%d %H:%M:%S',  # 时间格式
    handlers=[
        logging.FileHandler(log_path, encoding='utf-8'),  # 写入日志文件
        logging.StreamHandler()  # 同时输出到控制台(方便调试)
    ]
)

# 5. 示例:在程序中记录日志(大赛中按需调用)

负载均衡器不会自动监听特定端口的流量,你必须添加一个监听器

  1. 选择资源映射标签,查看无监听器并配置规则
  2. 选择“监听者与规则”标签

选择并按照以下步骤配置听众:

规程:HTTP

移植版:80

默认作:转发到目标群体

ipv6拒绝外部攻击:

vpc 创建子网的时候选10.0.16.0 第三位为16的倍数 子网编辑网络自动创建ipv6

安全组出站规则无 入站tcp ipv6 实例类似

nslookup -query=AAAA ipv6.baidu.com
logger = logging.getLogger(__name__)

# 记录服务启动日志
logger.info(f"Web服务启动成功,监听端口:{config['server']['port']}")

# 记录数据库连接日志
try:
    logger.info(f"尝试连接MySQL:{config['mysql']['host']}:{config['mysql']['port']}")
    # 这里写实际的MySQL连接代码
    logger.info("MySQL连接成功")
except Exception as e:
    logger.error(f"MySQL连接失败:{str(e)}")

# 记录Redis连接日志
try:
    logger.info(f"尝试连接Redis:{config['redis']['host']}:{config['redis']['port']}")
    # 这里写实际的Redis连接代码
    logger.info("Redis连接成功")
except Exception as e:
    logger.error(f"Redis连接失败:{str(e)}")

cat /var/log/myapp/app_log

2. 缓存存储区域
mkdir -p /var/cache/myapp
chown -R ec2-user:ec2-user /var/cache/myapp

四、Redis 访问要求

使用应用负载均衡器提供高可用性:

让负载均衡的目标群组,注册ec2实例之后为健康 路径/health(多实例加多可用区)

负载均衡vpc和子网至少两个可用区

① 进入 EC2 控制台,打开「目标群体」列表,选中目标群体;
② 切换到「属性」标签,点击「编辑」;
③ 在「负载均衡算法」下拉菜单中选择目标算法(轮询/最小未完成请求数/源 IP 粘性)
1. 安装客户端

yum install -y redis6

2.测试连通性
redis6-cli -h 127.0.0.1 -p 6379 ping

五、MySQL 访问要求(指定表结构)

  1. 导航至 VPC -> 路由表
  2. 选择一个路由
  3. 前往子网关联标签页
  4. 点击右侧的“编辑子网关联”
  5. Select 一个子网
  6. 点击保存关联
  7. 对其他路由表和子网关联也一样

监听协议选择https 协议版本http1

刷新在自动缩放组中运行的实例

  1. 将可用性设置为终止并启动
  2. 取消选择启用跳过匹配

增加自动缩放组中期望实例数量 

将所需容量更新为2

1. 安装客户端
yum install -y mariadb105-server mariadb105
2. 测试连接

mysql -u root

-- 1. 创建数据库
CREATE DATABASE IF NOT EXISTS app_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 2. 切换到新数据库
USE app_db;

-- 3. 创建用户表
CREATE TABLE `user_info` (
  `id` INT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT '用户唯一ID,自增主键',
  `username` VARCHAR(50) NOT NULL COMMENT '用户名,最大50字符',
  `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间,默认当前时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户基础信息表';

-- 4. 验证表是否创建成功
SHOW TABLES;
DESC user_info;

https://docs.aws.amazon.com/zh_cn/

- RDS PostgreSQL:https://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/USER_ConnectToPostgreSQLInstance.html

- EC2:https://docs.aws.amazon.com/zh_cn/ec2/

- IAM:https://docs.aws.amazon.com/zh_cn/iam/

- VPC:https://docs.aws.amazon.com/zh_cn/vpc/

堡垒机配置它的安全组放行rdp 外部windows连接

更多推荐