- vừa được xem lúc

Deploy Laravel Project lên VPS với Github Actions

0 0 8

Người đăng: Nguyen Van Nhan

Theo Viblo Asia

Bài viết này không đề cập đến khái niệm CI/CD. Chỉ đơn giản các step setup để deploy dự án Laravel lên VPS với Github Actions.

Bước 1: Setup file .env cho production

Copy file .env.example để chuẩn bị cho môi trường production. Ex: file .env.prod

Các giá trị secret như password database không để trong file. Sẽ config add giá trị secret vào file .env khi chạy job trên workflows

Cài đặt các giá trị secret trên github secrets trong repository. Cài đặt ở phần ** Settings > secrets and variables > actions > Mục secrets**

Các giá trị cần cài đặt secret có thể như: APP_KEY, DB_USERNAME, DB_PASSWORD,...

Bước 2: Tạo file config jobs github actions

Trong source, tạo file config đuôi yml cho github actions với đường dẫn ./githubs/workflows/deploy.yml

Ở đây chỉ tạo file build.yml để config đơn giản cho việc deploy, không đề cập đến các setup workflows khác. Các khái niệm khác sẽ ở bài viết khác.

Nội dung file config:

name: Deploy on: push: branches: [main] pull_request: branches: [main]
jobs: build: runs-on: ubuntu-latest steps: - uses: shivammathur/setup-php@v2 with: php-version: '8.3' - uses: actions/checkout@v3 - name: Copy .env run: | cp .env.prod .env sed -i "s|{APP_KEY}|$APP_KEY|g" .env sed -i "s|{DB_USERNAME}|$DB_USERNAME|g" .env sed -i "s|{DB_PASSWORD}|$DB_PASSWORD|g" .env env: APP_KEY: ${{ secrets.APP_KEY }} DB_USERNAME: ${{ secrets.DB_USERNAME }} DB_PASSWORD: ${{ secrets.DB_PASSWORD }} - name: Install composer Dependencies run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist - uses: actions/upload-artifact@v4 with: name: build-artifact include-hidden-files: true path: | ${{ github.workspace }} !${{ github.workspace }}/.env deploy: runs-on: ubuntu-latest needs: build steps: - uses: actions/download-artifact@v4 with: name: build-artifact path: ${{ github.workspace }} - name: Copy .env run: | cp .env.prod .env sed -i "s|{APP_KEY}|$APP_KEY|g" .env sed -i "s|{DB_USERNAME}|$DB_USERNAME|g" .env sed -i "s|{DB_PASSWORD}|$DB_PASSWORD|g" .env env: APP_KEY: ${{ secrets.APP_KEY }} DB_USERNAME: ${{ secrets.DB_USERNAME }} DB_PASSWORD: ${{ secrets.DB_PASSWORD }} - name: Set up SSH private key env: SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} run: | mkdir -p ~/.ssh touch ~/.ssh/id_rsa echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa - name: Configure SSH run: | touch ~/.ssh/config echo -e "Host *\n\tStrictHostKeyChecking no\n" > ~/.ssh/config touch ~/.ssh/known_hosts echo "$SSH_HOST $SSH_KEY" > ~/.ssh/known_hosts env: SSH_HOST: ${{ secrets.SSH_HOST }} SSH_KEY: ${{ secrets.SSH_KEY }} - name: Copy build to VPS if: ${{ success() }} run: | rsync -avz --progress --delete -e "ssh -i ~/.ssh/id_rsa" ${{ github.workspace }} ${{ secrets.SSH_USERNAME }}@${{ secrets.SSH_HOST }}:/var/www/html/it-backend/ - name: Deploy to Server if: ${{ success() }} uses: appleboy/ssh-action@master with: host: ${{ secrets.SSH_HOST }} port: 22 username: ${{ secrets.SSH_USERNAME }} key: ${{ secrets.SSH_PRIVATE_KEY }} script: | rm -rf /var/www/html/it-backend/src mv /var/www/html/it-backend/it-backend /var/www/html/it-backend/src cd /var/www/html/it-backend/src php8.3 artisan migrate --force php8.3 artisan optimize:clear php8.3 artisan optimize chown -R www-data:www-data /var/www/html/it-backend/src

Nội dung trên nhìn thì chắc đa số ai cũng hiểu. Xin phép không giải thích thêm..

Push lên nhánh main và check thành quả ở mục Tab Actions trên repository, nếu có lỗi thì fix..

Bình luận

Bài viết tương tự

- vừa được xem lúc

Tìm hiểu về Resource Controller trong Laravel

Giới thiệu. Trong laravel, việc sử dụng các route post, get, group để gọi đến 1 action của Controller đã là quá quen đối với các bạn sử dụng framework này.

0 0 513

- vừa được xem lúc

Phân quyền đơn giản với package Laravel permission

Như các bạn đã biết, phân quyền trong một ứng dụng là một phần không thể thiếu trong việc phát triển phần mềm, dù đó là ứng dụng web hay là mobile. Vậy nên, hôm nay mình sẽ giới thiệu một package có thể giúp các bạn phân quyền nhanh và đơn giản trong một website được viết bằng PHP với framework là L

0 0 593

- vừa được xem lúc

Sử dụng Swagger để xây dựng API documentation

Giới thiệu về Swagger. RESTful API là một tiêu chuẩn dùng trong việc thiết kế API cho các ứng dụng web (thiết kế Web services) để tiện cho việc quản lý các resource.

0 0 1.1k

- vừa được xem lúc

Ví dụ CRUD với Laravel và Vuejs.

1. Cài đặt Laravel. composer create-project --prefer-dist laravel/laravel vuelaravelcrud. .

0 0 183

- vừa được xem lúc

Một số tips khi dùng laravel (Part 1)

1. Show database query in raw SQL format. DB::enableQueryLog(); // Bật tính năng query logging. DB::table('users')->get(); // Chạy truy vấn bạn muốn ghi log.

0 0 112

- vừa được xem lúc

Inertiajs - Xây dựng Single Page App không cần API

Tiêu đề là mình lấy từ trang chủ của https://inertiajs.com/ chứ không phải mình tự nghĩ ra đâu nhé :v. Lâu lâu rồi chưa động tới Laravel (dự án cuối cùng mình code là ở ver 5.8), thế nên một ngày đẹp trời lượn vào đọc docs ver 8.

0 0 264