• Час читання ~3 хв
  • 20.10.2023

Останнім часом я експериментую над тим, як покращити досвід CPanel для розробників Laravel, і, на щастя, я це зробив Успішний з моїми спробами. Ця стаття є одним з моїх численних експериментів з cPanel.

Я вже писав статтю про те, як налаштувати автоматичне розгортання, але цього разу ми дізнаємося, як це зробити за допомогою GitHub Actions.

Як підключити CPanel до GitHub По-перше, нам потрібно переконатися, що на нашій cPanel увімкнено SSH і підключено до нашого облікового запису GitHub

. Це дозволить нам клонувати наші приватні репозиторії.

Читати докладніше: Як підключити Cpanel до GitHub, Gitlab і Bitbucket і розгорнути приватні репозиторії

Початкове розгортання Laravel на CPanel Далі нам потрібно налаштувати наш додаток Laravel

на Cpanel. Також нам належить налаштувати базу даних додатків, smtp і інші облікові дані для нашого виробничого середовища та гарантувати, що наш CPanel обслуговує громадськість Laravel Каталог.

Читати докладніше: Як розгорнути проект Laravel на віртуальному хостингу Linux за 5 хвилин

Налаштування сценарію розгортання Bash

  • Створіть директорію .github/workflows у базовому каталозі програми, якщо цього каталогу ще не існує.
  • Створіть скрипт deploy.sh bash у директорії .github/workflow.
  • Скопіюйте в deploy.sh наступний вміст BASH:

Замініть / path/to/project на шлях вашого застосунку Laravel на CPanel.

#!/bin/sh
# Change to the project directory. 
cd ~/path/to/project
# Pull the latest changes from the git repository
git pull origin main
# Install/update composer dependencies
composer install --no-interaction
# Run database migrations
php artisan migrate --force
# Clear caches
php artisan cache:clear
# Clear and cache routes
php artisan route:cache
# Clear and cache config
php artisan config:cache
# Clear and cache views
php artisan view:cache

Цей скрипт вище містить усі необхідні команди, які виконуються щоразу, коли розгортається новий код. Ми завжди можемо налаштувати Цей скрипт базується на нашому проекті необхідності.

Налаштування робочого процесу дій на GitHub

  • Створіть директорію . github/workflows у репозиторії застосунку на GitHub, якщо ця директорія ще не існує.
  • Створіть файл з ім'ям deploy.yml у каталозі .github/workflows.
  • Скопіюйте наступний вміст YAML в deploy.yml:

Замініть cpanel_username на ваше ім'я користувача CPanel, а project_dir на каталог розгорнутих додатків на CPanel.

name: Deploy
on:
  push:
  pull_request:
jobs:
  tests:
    runs-on: ubuntu-latest
    name: Build & Deploy Assets
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Setup SSH
        run: |
          mkdir -p ~/.ssh/
          echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa
          echo "${{ secrets.SSH_PUBLIC_KEY }}" > ~/.ssh/id_rsa.pub
          chmod 600 ~/.ssh/id_rsa
          chmod 600 ~/.ssh/id_rsa.pub
          ssh-keyscan -H ${{ secrets.SERVER_IP }} >> ~/.ssh/known_hosts
      - name: Deploy
        run: |
          ssh syncflux@${{ secrets.SERVER_IP }} 'bash -s' < ${{ github.workspace }}/.github/workflows/deploy.sh

Розділ Setup SSH нашого робочого процесу з'єднує наш екземпляр GitHub Action з нашою cPanel.

Розділ «Розгортання» нашого робочого процесу виконує наш сценарій bash розгортання на сервері CPanel через SSH.

Створення секретів дій на GitHub

  • Приватний і публічний ключі можна знайти в каталозі ~/.ssh сервера CPanel.
  • На GitHub.com перейдіть на сторінку налаштувань репозиторію програми.
  • У розділі «Безпека» на бічній панелі виберіть « Секрети та змінні», а потім натисніть «Дії».
  • Натисніть кнопку Новий секрет сховища і створіть SSH_PRIVATE_KEY, SSH_PUBLIC_KEY і SERVER_IP секрети відповідно.

GitHub Secrets

При такому налаштуванні наш проект Laravel буде розгортатися на CPanel щоразу, коли наші дії на GitHub будуть успішно виконуватися.

GitHub Action

Бонус

Якщо у вас також є фронтенд-ассети, які потрібно скомпілювати та розгорнути на cPanel, ви також можете зробити це за допомогою GitHub Actions.

Читати докладніше: Об'єднання ресурсів для додатків Laravel на CPanel за допомогою дії GitHub

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

Про мене

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

Про автора CrazyBoy49z
WORK EXPERIENCE
Контакти
Ukraine, Lutsk
+380979856297