|
zahareus
12.09.2024 11:52
7
|
Хочу поділитися скриптом, який використовую для деплоя на хостінг ukraine.com.ua. Бажано мати бізнес-план хостінгу, бо на ньому є підтримка Supervisor та NodeJS, які використовуються у скрипті, хоча їх згадування можно прибрати та використовувати скрипт на звичайному хостінг-плані. Скрипт робить:
Підготовка хостінгу: Ваш сайт на хостінгу має власну директорію /home/USERNAME/WEBSITE/www/ де USERNAME та WEBSITEце будуть специфічна до вашого хостінгу інформація, котру можно взяти у розділі хостінгу "Налаштування сайту > Кореневий каталог". Потрібно через SSH створити директорію та клонувати Laravel код з Github. Для цього необхідно підключитися по SSH до сервера хостінгу та створити SSH ключ: cd ~/.ssh ssh-keygen -t rsa -b 2048 cat ~/.ssh/id_rsa.pub Створений SSH-ключ потрібно додати в розділ: github.com/settings/keys. Далі потрібно створити директорію на сервері хостунгу в якому буде знаходитися Laravel-код і склонувати репозиторій з Github (тут портібно замінити USERNAME, WEBSITE, GITHUB_USERNAME, GITHUB_REPO на ваші власні): www.php.net/mkdir /home/USERNAME/WEBSITE/source/ cd /home/USERNAME/WEBSITE/ git clone git@github.com:GITHUB_USERNAME/GITHUB_REPO.git source Далі потрібно видалити поточну директорію www (всі дані директорії www будуть видалені, тому не робіть це з директорією де є цінні файли) та замінити її на сімлінк на директорію source/public/ (тут портібно замінити USERNAME, WEBSITE на ваші власні): rm -rf /home/USERNAME/WEBSITE/www/ ln -s /home/USERNAME/WEBSITE/source/public/ /home/USERNAME/WEBSITE/www/ Перейти у розділ хостінгу Supervisor та створити два процеси: планувальник (php artisan schedule:work), черги (php artisan queue:work). Процес "обробник черги" (тут портібно замінити USERNAME, WEBSITE на ваші власні): cd /home/USERNAME/WEBSITE/source/ && /usr/local/php83/bin/php -c /home/krokom/.www.php.net/system/php/www.WEBSITE.ini artisan queue:work Процес "планувальник" (тут портібно замінити USERNAME, WEBSITE на ваші власні): cd /home/USERNAME/WEBSITE/source/ && /usr/local/php83/bin/php -c /home/krokom/.www.php.net/system/php/www.WEBSITE.ini artisan schedule:work Підготовка скрипту: В репозиторії створюємо файл .github/workflows/deploy-ssh.yaml і додаємо змінні Github Actions в розділі: "Репозиторій > Settings > Secrets and variables > Actions". Потрібно додати наступні змінні:
Код файлу .github/workflows/deploy-ssh.yaml: name: Deploy SSH on: [push] jobs: build: name: Deploy runs-on: ubuntu-latest steps: - name: Apply changes on server, install deps, migrate, build assets uses: appleboy/ssh-action@v1.0.3 with: host: ${{ secrets.HOST }} username: ${{ secrets.USERNAME }} password: ${{ secrets.PASSWORD }} port: ${{ secrets.PORT }} script: | cd /home/${{ secrets.HOSTING_USERNAME }}/${{ secrets.HOSTING_WEBSITE }}/source git stash && git fetch --all && git www.php.net/reset --hard origin/main source ~/.bashrc && composer install php artisan migrate --force pkill -fx '/usr/local/php83/bin/php -c /home/${{ secrets.HOSTING_USERNAME }}/.system/php/www.${{ secrets.HOSTING_WEBSITE }}.ini artisan queue:work' pkill -fx '/usr/local/php83/bin/php -c /home/${{ secrets.HOSTING_USERNAME }}/.system/php/www.${{ secrets.HOSTING_WEBSITE }}.ini artisan schedule:work' npm ci && npm run build notify: name: Notify runs-on: ubuntu-latest if: always() needs: [build] steps: - name: Send status to telegram uses: appleboy/telegram-action@master with: to: ${{ secrets.TELEGRAM_TO }} token: ${{ secrets.TELEGRAM_TOKEN }} format: "html" message: | ${{ needs.build.result == 'success' && '🟢' || '🔴' }} <b>${{ needs.build.result }}</b> <a href="https://github.com/${{ github.repository }}/commit/${{github.sha}}">${{ github.event.commits[0].message }}</a> by <a href="https://github.com/${{ github.actor }}">@${{ github.actor }}</a> Після додавання файлу deploy-ssh.yaml у репозиторій почне працювати Github Action, котрий можно побачити в секції Github > Ваш репозиторій > Actions. Можно відкрити задачу та подивитися стан виконання. cdn.adm.tools/forum_message/0000/0005/3340/Знімок_екрана_2024-09-12_о_11.50.30.png В свою чергу, код проєкту буде автоматично розгортатися після кожного пушу в гілку main, а в Telegram будуть надходити сповіщення, тож ви будете завжи знати поточний стан кожного деплоя: cdn.adm.tools/forum_message/0000/0005/3340/Знімок_екрана_2024-09-12_о_11.51.48.png Дякую за увагу, звертайтеся з питаннями та пропозиціями в коментарях до цього посту. |
|
pdf
27.12.2024 18:04
0
|
Братан, дошли руки до твоего скрипта, отпишусь, как запилю...
|