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
- Giới thiệu
- Điều kiện tiên quyết
- Hướng dẫn triển khai từng bước
- Tại sao triển khai MedusaJS trên máy chủ có thể mở rộng?
Đ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
#!/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
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
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
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
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
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
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
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)
- 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. - 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!