Giới thiệu:
Amazon EC2 là dịch vụ cung cấp máy chủ ảo mạnh mẽ và linh hoạt trên nền tảng AWS, cho phép người dùng dễ dàng triển khai ứng dụng. Bài viết này hướng dẫn chi tiết cách khởi tạo một EC2 instance, cài đặt môi trường để chạy ứng dụng Golang, và tích hợp quy trình CI/CD đơn giản sử dụng GitHub Actions – giúp tự động hóa việc triển khai mỗi khi cập nhật mã nguồn.
1. Tạo EC2 Instance
- Truy cập AWS Console
Truy cập AWS Console, trên thanh tìm kiếm gõEC2
và chọn EC2.
- Khởi tạo Instance
Chọn Launch Instance.
Cấu hình Instance
- Nhập tên server, ví dụ:
helloAWS
. - Chọn hệ điều hành: Ubuntu (hoặc Amazon Linux).
Chọn hệ điều hành - Nhập tên server, ví dụ:
Tạo SSH Key
- Ở mục Key pair (login), chọn Create key pair.
- Name:
my-key
(tùy chọn). - File format:
.pem
(dành cho Linux/macOS). - Tải file
.pem
về máy để đăng nhập vào server sau này.
Tạo SSH Key pair Cấu hình tường lửa (Security Group)
Chọn Security Group > Create security group.
Tên:
my-security-group
.Mô tả:
my-security-group
.Thêm 2 rule trong Inbound Security Group Rules:
Rule 1 – Cho phép SSH (để login EC2)
- Type:
SSH
- Port range:
22
- Source:
0.0.0.0/0
- Description:
Allow SSH from anywhere
Rule 2 – Cho phép HTTP (để truy cập web)
- Type:
HTTP
- Port range:
8080
- Source:
0.0.0.0/0
- Description:
Allow HTTP from anywhere
- Type:
Set Rules cho phép SSH login và Http truy cập trang web Khởi chạy Instance
Nhấn Launch instance.- Đợi vài phút để EC2 sẵn sàng.
- Sao chép Public IPv4 address để sử dụng cho SSH và truy cập web sau này.
Kiểm tra Instance
Quay lại EC2 Dashboard, chọn instance vừa tạo và sao chép Public IPv4 address.
2. Đăng nhập vào Server từ Terminal
Sử dụng SSH để đăng nhập
Từ file.pem
đã tải, chạy các lệnh sau:chmod 400 my-key.pem ssh -i "my-key.pem" ubuntu@<EC2-Public-IP>
Lưu ý:
- Với Ubuntu, user mặc định là
ubuntu
. - Với Amazon Linux 2, user mặc định là
ec2-user
.
- Với Ubuntu, user mặc định là
Cài đặt môi trường Go
Chạy các lệnh sau để cài đặt Go:sudo apt update && sudo apt upgrade -y sudo apt install golang-go -y go version # Kiểm tra version của Go
3. Tạo Golang App và Gắn CI/CD vào EC2
3.1 Tạo Golang App
Tạo thư mục project trên máy local
mkdir hello-aws cd hello-aws
Tạo file
main.go
touch main.go
Nội dung file
main.go
package main import ( "fmt" "net/http" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello AWS from Golang!") }) fmt.Println("Server is running on port 8080...") http.ListenAndServe(":8080", nil) }
Tạo và đẩy code lên GitHub
git init git add . git commit -m "Initial commit" git branch -M main git remote add origin <repo-url> git push -u origin main
3.2 Thêm Secrets vào GitHub Repository
Thêm các Secrets sau vào repo GitHub:
- EC2_HOST: Public IPv4 address của EC2.
- EC2_USER:
ubuntu
(hoặcec2-user
nếu dùng Amazon Linux). - EC2_KEY: Nội dung của file
.pem
.
3.3 Tạo Workflow File cho CI/CD
Tạo file workflow
touch .github/workflows/main.yml
Nội dung file
main.yml
name: Deploy to AWS EC2 on: push: branches: - main jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 - name: Set up Go uses: actions/setup-go@v3 with: go-version: '1.21' - name: Build Go app run: | GOOS=linux GOARCH=amd64 go build -o hello-aws main.go echo "EC2_HOST: $EC2_HOST" echo "EC2_USER: $EC2_USER" echo "EC2_KEY length: ${#EC2_KEY}" - name: Deploy to EC2 env: EC2_HOST: ${{ secrets.EC2_HOST }} EC2_USER: ${{ secrets.EC2_USER }} EC2_KEY: ${{ secrets.EC2_KEY }} run: | echo "$EC2_KEY" > private_key.pem chmod 400 private_key.pem ssh -o StrictHostKeyChecking=no -i private_key.pem $EC2_USER@$EC2_HOST << 'EOF' pkill -f hello-aws || true rm -f /home/ubuntu/hello-aws EOF scp -i private_key.pem hello-aws $EC2_USER@$EC2_HOST:/home/ubuntu/ ssh -i private_key.pem $EC2_USER@$EC2_HOST << 'EOF' chmod +x /home/ubuntu/hello-aws nohup /home/ubuntu/hello-aws > app.log 2>&1 & EOF
Đẩy code và trigger workflow
git add . git commit -m "deploy to EC2" git push origin main
4. Kiểm tra Kết quả
Truy cập ứng dụng
Chạy lệnh sau để kiểm tra:curl http://<EC2-Public-IP>:8080
Kết quả mong đợi
Nếu thấy dòng chữ"Hello AWS from Golang!"
, bạn đã triển khai thành công!Kết quả
Kết luận:
Với hướng dẫn thực hành cụ thể, bài viết giúp người học nắm bắt quy trình triển khai một ứng dụng backend đơn giản lên EC2 và thiết lập CI/CD cơ bản. Đây là bước quan trọng để hiểu rõ cách làm việc với môi trường thực tế, và là nền tảng cần thiết để tiếp cận các giải pháp triển khai chuyên nghiệp hơn trong tương lai.
Bình luận
Bài viết rất hữu ích. Cảm ơn bạn đã chia sẻ
🫶 🫶 🫶 Cảm ơn bạn đã quan tâm!