0
0
Lập trình
TT

Thiết lập CI/CD Node.js trên Hosting Chia Sẻ với cPanel

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

• 5 phút đọc

Hướng Dẫn Thiết Lập CI/CD cho Node.js trên Hosting Chia Sẻ (cPanel)

Giới thiệu
Hosting chia sẻ thường được thiết kế chủ yếu cho các trang web PHP, nhưng bạn hoàn toàn có thể chạy và triển khai ứng dụng Node.js với sự cấu hình đúng đắn. Hướng dẫn này sẽ giúp bạn bảo mật hosting, cài đặt Node.js, và tạo pipeline CI/CD với GitHub Actions.


🔒 Bước 1: Bảo Mật Hosting của Bạn

Nếu subdomain của bạn hiện ra danh sách thư mục ("Index of /") hoặc cho phép tải xuống tệp, hãy thêm một tệp .htaccess để chặn truy cập vào danh sách thư mục và bảo vệ các tệp nhạy cảm.

Tạo tệp .htaccess bên trong /home/username/qiz-api.example.com/:

Copy
# Vô hiệu hóa danh sách thư mục
Options -Indexes

# Chặn truy cập vào các tệp môi trường và cấu hình
<FilesMatch "^(\.env|.*\.json|.*\.lock|.*\.md)$">
  Order allow,deny
  Deny from all
</FilesMatch>

🔧 Bước 2: Cài Đặt Node.js trên cPanel

  1. Đăng nhập vào cPanel.

  2. Tìm kiếm Setup Node.js App.

  3. Nhấp vào Create Application và chọn:

    • Node.js Version: Chọn Node 18/20/22 (tùy thuộc vào sự hỗ trợ của máy chủ).
    • Application Root: /home/username/qiz-api.example.com
    • Application Startup File: index.js
    1. Nhấp vào Create.
    2. Khởi động ứng dụng của bạn từ cPanel.

⚙️ Bước 3: Chuẩn Bị Dự Án của Bạn cho Triển Khai

Đảm bảo rằng tệp .env không được commit vào Git và lệnh npm install --production hoạt động bình thường.

Cấu trúc thư mục của bạn có thể trông như sau:

Copy
├── auth_files/
├── node_modules/
├── uploads/
├── whatsapp_instances/
├── .env
├── index.js
├── package.json
├── package-lock.json

🚀 Bước 4: Cấu Hình CI/CD với GitHub Actions

Tại thư mục gốc của dự án, tạo tệp .github/workflows/deploy.yml:

Copy
name: Deploy Node.js API to cPanel

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: Set up Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '22' # Thay đổi thành 18 hoặc 20 nếu máy chủ của bạn không hỗ trợ 22

      - name: Install dependencies
        run: npm install --production

      - name: Build (if needed)
        run: npm run build || echo "No build script"

      - name: Deploy to cPanel via SSH
        uses: appleboy/scp-action@master
        with:
          host: ${{ secrets.SSH_HOST }}
          username: ${{ secrets.SSH_USERNAME }}
          password: ${{ secrets.SSH_PASSWORD }}
          port: ${{ secrets.SSH_PORT }}
          source: "."
          target: "/home/username/qiz-api.example.com"

      - name: Restart Node.js App
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.SSH_HOST }}
          username: ${{ secrets.SSH_USERNAME }}
          password: ${{ secrets.SSH_PASSWORD }}
          port: ${{ secrets.SSH_PORT }}
          script: |
            cd /home/username/qiz-api.example.com
            npm install --production
            touch tmp/restart.txt || echo "Restart signal sent"

      - name: ✅ Deployment Success
        run: echo "🎉 Deployment to cPanel was successful!"

🔑 Bước 5: Thêm Bí Mật GitHub

Trong cài đặt kho lưu trữ GitHub của bạn, thêm các bí mật sau:

  • SSH_HOST: Địa chỉ IP hoặc tên máy chủ cPanel của bạn.
  • SSH_USERNAME: Tên người dùng cPanel của bạn.
  • SSH_PASSWORD: Mật khẩu cPanel của bạn.
  • SSH_PORT: Thường là 22.

🔥 Cách Hoạt Động

  1. Đẩy mã lên nhánh main của bạn.
  2. GitHub Actions sẽ kiểm tra mã của bạn, cài đặt các phụ thuộc và tải tệp lên hosting của bạn.
  3. Ứng dụng Node.js của bạn sẽ tự động được khởi động lại.

✅ Thực Hành Tốt Nhất

  • Sử dụng .htaccess để chặn danh sách thư mục và các tệp nhạy cảm.
  • Loại trừ .env và các bí mật khỏi kiểm soát phiên bản.
  • Giữ node_modules ra khỏi Git; để việc triển khai xử lý việc cài đặt.
  • Sử dụng các phiên bản Node.js được máy chủ hỗ trợ (18/20/22).

⚠️ Những Cạm Bẫy Thường Gặp

  • Không bảo mật các tệp cấu hình có chứa thông tin nhạy cảm.
  • Quên kiểm tra các phiên bản Node.js trước khi triển khai.

🛠️ Mẹo Tối Ưu Hiệu Suất

  • Sử dụng phiên bản Node.js ổn định và được hỗ trợ.
  • Tối ưu hóa tệp .env để giảm thiểu dung lượng tải.

🤔 Câu Hỏi Thường Gặp

  1. Tôi có thể sử dụng Node.js phiên bản nào?
    • Bạn nên sử dụng các phiên bản Node.js 18/20/22 tùy thuộc vào sự hỗ trợ của máy chủ.
  2. Tại sao tôi cần bảo mật tệp .env?
    • Tệp .env chứa thông tin nhạy cảm và không nên bị lộ ra ngoài.

Kết luận
Việc thiết lập CI/CD cho ứng dụng Node.js trên hosting chia sẻ không quá phức tạp nếu bạn làm theo các bước trên. Hãy đảm bảo bảo mật và tối ưu hóa dự án của bạn để có hiệu suất tốt nhất. Nếu bạn gặp khó khăn, hãy tham khảo tài liệu chính thức của Node.js và GitHub Actions để được hỗ trợ thêm.

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