0
0
Lập trình
TT

Triển khai MedusaJS 2.0 trên AWS EC2: Hướng dẫn chi tiết

Đăng vào 1 tháng trước

• 5 phút đọc

Giới thiệu

Bạn đã quyết định thiết lập một cửa hàng trực tuyến và muốn tự tay thực hiện? Bài viết này sẽ hướng dẫn bạn cách triển khai Backend và Storefront của MedusaJS trên một máy chủ Ubuntu. Trong bài viết sau, chúng ta sẽ xem xét việc sử dụng các dịch vụ AWS khác để xây dựng một phiên bản mạnh mẽ hơn.

Mục lục

Điều kiện tiên quyết

Trước khi bắt đầu, bạn cần chuẩn bị một số thứ cần thiết như sau:

  • Một máy chủ Ubuntu
  • Một tên miền
  • Một tài khoản Stripe

Hướng dẫn triển khai từng bước

BƯỚC 1) Cung cấp máy chủ

Bắt đầu bằng cách cung cấp một máy chủ Ubuntu. Tạo một nhóm bảo mật mới với các quy tắc vào; 22 từ địa chỉ IP của bạn, 80 và 443 từ bất kỳ đâu. Một máy chủ t3 medium với khoảng 30GB dung lượng lưu trữ là đủ.

BƯỚC 2) Cài đặt các công cụ cần thiết

Chúng ta cần cài đặt một số công cụ để Medusa Store hoạt động:

  • Node.js
  • Docker & Docker Compose
  • Curl & Git
  • PM2
  • Nginx
  • Certbot

Dưới đây là script để cài đặt tất cả các công cụ cần thiết:

bash Copy
#!/bin/bash

# Cập nhật hệ thống
sudo apt update && sudo apt upgrade -y

# Cài đặt các công cụ cần thiết
sudo apt install -y ca-certificates curl gnupg lsb-release

# Thêm khóa GPG chính thức của Docker
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
  sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# Thêm kho APT của Docker
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Cài đặt Docker Engine, CLI, containerd và plugin Docker Compose
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

# Kích hoạt và khởi động Docker
sudo systemctl enable docker
sudo systemctl start docker

# Cho phép người dùng hiện tại chạy Docker mà không cần sudo
sudo usermod -aG docker $USER
newgrp docker

# Xác minh Docker
docker --version
docker compose version

# Cài đặt Git
sudo apt install -y git

# Cài đặt Nginx
sudo apt install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx

# Cài đặt Node.js (LTS) và npm
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt install -y nodejs

# Cài đặt PM2 toàn cục
sudo npm install -g pm2

# Thiết lập PM2 startup
pm2 startup systemd -u $USER --hp $HOME

BƯỚC 3) Chạy Backend của Medusa

Chúng ta sẽ thiết lập Backend của Medusa bằng Docker. Đầu tiên, hãy nhân bản repo:

bash Copy
git clone https://github.com/medusajs/medusa-starter-default.git --depth=1 medusa-server

Tiếp theo, tạo file Docker Compose docker-compose.yml trong repo mới:

yaml Copy
services:
  postgres:
    image: postgres:15-alpine
    container_name: medusa_postgres
    restart: unless-stopped
    environment:
      POSTGRES_DB: medusa-store
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
    ports:
      - "5432:5432"
    volumes:
      - postgres_data:/var/lib/postgresql/data
    networks:
      - medusa_network

  redis:
    image: redis:7-alpine
    container_name: medusa_redis
    restart: unless-stopped
    ports:
      - "6379:6379"
    networks:
      - medusa_network

  medusa:
    build: .
    container_name: medusa_backend
    restart: unless-stopped
    depends_on:
      - postgres
      - redis
    ports:
      - "9000:9000"
    environment:
      - NODE_ENV=production
      - DATABASE_URL=postgres://postgres:postgres@postgres:5432/medusa-store
      - REDIS_URL=redis://redis:6379
    env_file:
      - .env
    volumes:
      - .:/app
      - /app/node_modules
    networks:
      - medusa_network

volumes:
  postgres_data:

networks:
  medusa_network:
    driver: bridge

BƯỚC 4) Reverse Proxy với Nginx

Thiết lập Nginx để quản lý các yêu cầu:

Tạo file cấu hình trong /etc/nginx/sites-available và đặt tên theo miền của bạn:

nginx Copy
server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;

    location / {
        proxy_pass http://localhost:8000;
    }

    location /store/ {
        proxy_pass http://localhost:9000/store/;
    }

    location /admin/ {
        proxy_pass http://localhost:9000/admin/;
    }
}

Kích hoạt cấu hình mới và khởi động lại Nginx:

bash Copy
sudo ln -s /etc/nginx/sites-available/yourfilename /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

BƯỚC 5) Thiết lập Frontend

Chúng ta sẽ thiết lập Frontend với pipeline GitHub Actions. Nhân bản storefront:

bash Copy
git clone https://github.com/medusajs/nextjs-starter-medusa medusa-storefront

Chạy npm install để cài đặt các phụ thuộc. Tạo file .env:

env Copy
MEDUSA_BACKEND_URL=http://localhost:9000
NEXT_PUBLIC_BASE_URL=http://localhost:8000
NEXT_PUBLIC_MEDUSA_PUBLISHABLE_KEY=YOUR_PUBLISHABLE_KEY

BƯỚC 6) Gỡ lỗi và sửa chữa

Nếu có bất kỳ vấn đề nào xảy ra, kiểm tra log với:

bash Copy
docker compose logs -f

BƯỚC 7) Các bước tiếp theo

Trong bài viết tiếp theo, tôi sẽ đề cập đến việc mở rộng Medusa với các dịch vụ AWS như ECS, RDS và CloudFront, cũng như thiết lập giám sát và cảnh báo.

Tại sao triển khai MedusaJS trên máy chủ có thể mở rộng?

MedusaJS là một nền tảng thương mại điện tử hiện đại, giúp phát triển cửa hàng trực tuyến dễ dàng. Tuy nhiên, việc triển khai một ứng dụng sản xuất có thể gặp khó khăn mà không có sự thiết lập và thực hành tự động hóa đúng cách.

Thực tiễn tốt nhất

  • Thực hiện sao lưu thường xuyên dữ liệu trên máy chủ.
  • Theo dõi hiệu suất của ứng dụng để đảm bảo rằng nó hoạt động tốt.

Những cạm bẫy thường gặp

  • Không cấu hình chính xác các biến môi trường.
  • Bỏ qua việc thiết lập chứng chỉ SSL.

Mẹo hiệu suất

  • Sử dụng PM2 để quản lý tiến trình và đảm bảo nó luôn hoạt động.

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

  1. MedusaJS là gì?
    MedusaJS là một nền tảng thương mại điện tử mã nguồn mở, giúp bạn dễ dàng xây dựng cửa hàng trực tuyến.
  2. Tôi có thể triển khai Medusa trên nền tảng khác không?
    Có, bạn có thể triển khai Medusa trên nhiều nền tảng máy chủ khác nhau, không chỉ AWS EC2.

Kết luận

Triển khai MedusaJS trên AWS EC2 là một quá trình thú vị và đầy thử thách. Hy vọng rằng hướng dẫn này sẽ giúp bạn thiết lập cửa hàng trực tuyến của mình thành công. Nếu bạn có bất kỳ câu hỏi nào, hãy để lại ý kiến bên dưới và tôi sẽ sẵn lòng hỗ trợ bạn!

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào