Alpha Web3 & AI
Trang chủ › Điện Toán Đám Mây

Hướng dẫn triển khai ứng dụng Web lên AWS EC2 từ đầu

Ban biên tập Alpha Web3 & AI · · Cập nhật
Hướng dẫn triển khai ứng dụng Web lên AWS EC2 từ đầu

Để đưa một ứng dụng web lên AWS EC2 lần đầu, bạn cần làm bốn việc: tạo một máy ảo (instance) với hệ điều hành phù hợp, mở đúng cổng mạng, kết nối vào máy qua SSH để cài môi trường chạy, rồi khởi động ứng dụng phía sau một web server như Nginx. Bài này dành cho người chưa từng dùng AWS, giải thích từng lựa chọn trên màn hình tạo instance để bạn hiểu mình đang làm gì thay vì chỉ bấm theo.

EC2 là gì và khi nào nên dùng

Amazon EC2 (Elastic Compute Cloud) là dịch vụ cho thuê máy chủ ảo của AWS. Bạn chọn cấu hình CPU, RAM, hệ điều hành, trả tiền theo thời gian sử dụng và có toàn quyền quản trị như một máy chủ riêng. EC2 phù hợp khi bạn muốn kiểm soát môi trường, chạy phần mềm cần cài đặt đặc thù, hoặc đơn giản là học cách vận hành máy chủ Linux.

Nếu ứng dụng chỉ là vài hàm xử lý theo sự kiện, các dịch vụ không máy chủ có thể đơn giản hơn; bạn có thể so sánh trong bài serverless và AWS Lambda là gì. Còn nếu bạn muốn hiểu nền tảng hạ tầng, EC2 là điểm khởi đầu tốt.

Trước khi bắt đầu

  • Tài khoản AWS: đăng ký cần thẻ thanh toán. AWS có chương trình Free Tier cho người mới với một số loại instance nhỏ; điều kiện và thời hạn thay đổi theo thời gian nên hãy đọc trang Free Tier chính thức.
  • Bảo vệ tài khoản gốc: bật MFA cho tài khoản root ngay sau khi đăng ký, tạo người dùng quản trị riêng (qua IAM Identity Center hoặc IAM) để làm việc hằng ngày.
  • Cảnh báo chi phí: vào Billing tạo một budget với ngưỡng nhỏ để nhận email khi chi tiêu vượt mức. Đây là thói quen giúp tránh hóa đơn bất ngờ.
  • Ứng dụng mẫu: một ứng dụng web đơn giản (Node.js, Python Flask, PHP...) chạy được trên máy bạn, đã đẩy lên Git.

Bước 1: Chọn Region

Region là vùng địa lý đặt trung tâm dữ liệu. Ở góc trên bên phải bảng điều khiển, chọn region gần người dùng của bạn để giảm độ trễ. Với người dùng tại Việt Nam, các region ở Singapore hoặc khu vực châu Á lân cận thường là lựa chọn hợp lý. Lưu ý mỗi region độc lập: instance tạo ở Singapore sẽ không hiện khi bạn đang xem region khác, đây là lý do nhiều người mới tưởng "mất" máy chủ.

Bước 2: Launch instance và hiểu từng lựa chọn

Vào EC2, chọn Launch instance. Màn hình có nhiều mục:

Tên và AMI

AMI (Amazon Machine Image) là ảnh hệ điều hành dùng để tạo máy. Người mới nên chọn Ubuntu Server LTS hoặc Amazon Linux. Ubuntu có cộng đồng hướng dẫn rất lớn; Amazon Linux được AWS tối ưu và hỗ trợ trực tiếp.

Instance type

Loại instance quyết định CPU và RAM. Họ t (như t3, t4g) là loại "burstable", rẻ, phù hợp ứng dụng ít tải. Loại t4g dùng chip ARM Graviton, thường rẻ hơn nhưng cần phần mềm hỗ trợ ARM. Với ứng dụng thử nghiệm, một instance nhỏ là đủ; bạn có thể đổi loại sau.

Key pair

Tạo key pair mới, tải file khóa riêng (.pem) về và cất cẩn thận. AWS không lưu bản sao; mất file là mất cách đăng nhập SSH bằng khóa đó. Trên macOS hoặc Linux, đặt quyền chmod 400 cho file.

Network settings và Security Group

Security Group là tường lửa ảo của instance. Thiết lập tối thiểu:

CổngGiao thứcNguồnMục đích
22SSHChỉ địa chỉ IP của bạnQuản trị máy chủ
80HTTPMọi nơiTruy cập web
443HTTPSMọi nơiTruy cập web có mã hóa

Đừng mở cổng 22 cho toàn bộ Internet. Máy chủ có SSH mở công khai sẽ nhanh chóng bị quét và thử mật khẩu tự động. Một lựa chọn an toàn hơn là dùng AWS Systems Manager Session Manager để truy cập mà không cần mở cổng SSH.

Storage

Ổ đĩa EBS mặc định đủ cho thử nghiệm. Loại gp3 là lựa chọn đa dụng phổ biến.

Bấm Launch và chờ trạng thái chuyển sang Running.

Bước 3: Kết nối vào máy chủ

Lấy Public IPv4 address trong trang chi tiết instance, rồi từ terminal chạy lệnh dạng ssh -i duong-dan/khoa.pem ubuntu@dia-chi-ip. Tên người dùng mặc định là ubuntu với Ubuntu và ec2-user với Amazon Linux. Nếu không kết nối được, kiểm tra lại Security Group có cho phép IP hiện tại của bạn không; IP nhà mạng có thể thay đổi.

Việc đầu tiên sau khi vào: cập nhật hệ thống bằng trình quản lý gói (sudo apt update rồi sudo apt upgrade trên Ubuntu).

Bước 4: Cài môi trường và chạy ứng dụng

  1. Cài Git và runtime của ngôn ngữ bạn dùng, ví dụ Node.js qua kho chính thức hoặc trình quản lý phiên bản như nvm, Python qua gói hệ thống kèm venv.
  2. Clone mã nguồn từ kho Git.
  3. Cài phụ thuộc và tạo file cấu hình môi trường. Không commit file chứa mật khẩu lên Git.
  4. Chạy thử ứng dụng ở cổng nội bộ, ví dụ 3000, và kiểm tra bằng curl localhost:3000 ngay trên máy chủ.

Bước 5: Đặt Nginx phía trước ứng dụng

Không nên để ứng dụng Node.js hay Flask nhận trực tiếp lưu lượng từ Internet ở cổng 80. Nginx đóng vai trò reverse proxy: nhận yêu cầu ở cổng 80/443, chuyển vào ứng dụng ở cổng nội bộ, phục vụ file tĩnh hiệu quả và xử lý HTTPS.

  1. Cài Nginx bằng trình quản lý gói.
  2. Tạo file cấu hình site, trong khối location / dùng chỉ thị proxy_pass trỏ tới địa chỉ nội bộ của ứng dụng.
  3. Kiểm tra cú pháp bằng sudo nginx -t, rồi tải lại Nginx.
  4. Mở trình duyệt, truy cập địa chỉ IP công khai của instance.

Nếu thấy trang của bạn, chúc mừng: ứng dụng đã lên mạng.

Những lỗi người mới hay gặp

  • Trang không tải được: quên mở cổng 80 trong Security Group, hoặc ứng dụng chỉ lắng nghe trên địa chỉ khác với cấu hình proxy.
  • Ứng dụng tắt khi đóng terminal: tiến trình chạy trực tiếp trong phiên SSH sẽ dừng khi phiên kết thúc. Cần chạy dưới dạng dịch vụ systemd hoặc trình quản lý tiến trình.
  • IP thay đổi sau khi stop/start: IP công khai mặc định không cố định. Cần Elastic IP nếu muốn giữ địa chỉ.
  • Hóa đơn bất ngờ: quên terminate instance thử nghiệm, hoặc Elastic IP không gắn vào máy nào.

Bước tiếp theo

Bạn vừa có một máy chủ chạy được, nhưng chưa sẵn sàng cho người dùng thật: chưa có tên miền, chưa có HTTPS, chưa tự khởi động lại, chưa có sao lưu và giám sát. Những phần này được trình bày trong bài triển khai ứng dụng lên EC2 từ A đến Z cho môi trường production. Khi quy trình thủ công đã ổn, bạn có thể tự động hóa việc deploy bằng pipeline CI/CD.

Câu hỏi thường gặp

Dùng EC2 có tốn tiền khi đã stop instance không?

Khi instance ở trạng thái stopped, bạn không trả phí giờ chạy máy nhưng vẫn trả phí ổ đĩa EBS và Elastic IP nếu có. Muốn ngừng hoàn toàn chi phí, hãy terminate instance và xóa các tài nguyên đi kèm.

Mất file .pem thì làm sao đăng nhập lại?

AWS không khôi phục được khóa riêng. Bạn có thể dùng EC2 Instance Connect hoặc Session Manager nếu đã được cấu hình, hoặc tách ổ đĩa gắn sang một instance khác để thêm khóa công khai mới vào file authorized_keys.

Nên chọn Ubuntu hay Amazon Linux?

Cả hai đều ổn định. Ubuntu thuận lợi khi bạn theo các hướng dẫn phổ biến trên mạng; Amazon Linux tích hợp sẵn công cụ AWS và được AWS hỗ trợ. Với người mới, chọn hệ điều hành bạn quen thao tác hơn.

Có cần biết Linux để dùng EC2 không?

Cần một số lệnh cơ bản như di chuyển thư mục, sửa file, cài gói và xem log. Bạn có thể học dần trong quá trình triển khai, nhưng nên làm quen với terminal trước khi đưa ứng dụng thật lên.

Bài liên quan