Автоматизация деплоя по SSH с паролем

Автоматизация деплоя с помощью GitHub Actions и SSH для Django проекта (вход на сервер по SSH с паролем)

GitHub Actions — это сервис, который позволяет автоматизировать процесс сборки, тестирования и деплоя вашего кода. Одним из способов деплоя является использование SSH для подключения к серверу и копирования файлов. В этой статье мы рассмотрим, как использовать GitHub Actions и SSH для автоматизации деплоя вашего проекта, если вход на сервер осуществляется по SSH с паролем.

Что такое SSH?

SSH (Secure Shell) — это протокол, который позволяет безопасно подключаться к серверу и выполнять команды. SSH использует криптографические методы для шифрования данных, что делает его безопасным способом доступа к серверу.

Что такое GitHub Actions?

GitHub Actions — это сервис, который позволяет автоматизировать процесс сборки, тестирования и деплоя вашего кода. GitHub Actions использует YAML-файлы для описания рабочих процессов, которые выполняются на сервере GitHub.

Как использовать SSH с GitHub Actions

Чтобы использовать SSH с GitHub Actions, вам необходимо создать SSH-ключи и добавить их в ваш репозиторий. SSH-ключи состоят из двух частей: приватного ключа и публичного ключа. Приватный ключ используется для подключения к серверу, а публичный ключ используется для аутентификации.

Создание рабочего процесса GitHub Actions

Чтобы создать рабочий процесс GitHub Actions, вы можете создать новый файл .yml в директории .github/workflows вашего репозитория - проекта. Например, вы можете создать файл deploy.yml с следующим содержанием:

name: Django CI

on:
  push:
    branches: [ "master" ]

jobs:
  build:

    runs-on: ubuntu-latest
    strategy:
      max-parallel: 4
      matrix:
        python-version: [3.9]

    steps:
    - uses: actions/checkout@v3
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v4
      with:
        python-version: ${{ matrix.python-version }}

    - name: Deploy to server
      uses: fifsky/ssh-action@master
      with:
        command: |
          source venv/bin/activate
          cd jazzmap
          git pull
          pip install -r requirements.txt
          python manage.py migrate
          python manage.py collectstatic --noinput
          supervisorctl restart django_wsgi
        host: ${{secrets.HOST}}
        user: ${{secrets.USER}}
        pass: ${{secrets.PRIVATE_KEY}}
        args: "-tt -vvv"

Этот рабочий процесс будет выполняться при каждом пуше в ветку main и будет деплоить ваш код на сервер с помощью SSH.

Шаг 4: Добавление секретов

В файле deploy.yml используются переменные. Нам необходимо переменные добавить в наш репозиторий. Для этого переходим во вкладку Settings > Secrets and variables > Actions

Снимок экрана 2025-01-14 в 15.10.26.png

Создадим три новые переменные:

HOST - адрес сервера (или доменное имя проекта, привязанное к серверу)

USER - пользователь, от имени которого мы подключаемся к серверу

PRIVATE_KEY - пароль пользователя, от имени которого мы подключаемся к серверу

После этого можно загрузить обновления и проверить выполнение скрипта:

Снимок экрана 2025-01-14 в 15.16.33.png

Вывод

В этой статье мы рассмотрели, как использовать GitHub Actions и SSH для автоматизации деплоя вашего проекта. Мы создали SSH-ключи, добавили их в репозиторий, создали рабочий процесс GitHub Actions и добавили секреты. Теперь вы можете автоматизировать процесс деплоя вашего кода с помощью GitHub Actions и SSH.

Read more

Замена дефолтного перевода слова в Django Admin

Если вы не удовлетворены тем, как приложение перевело какое-нибудь слово, вы можете легко заменить его на свой вариант. В этой статье мы рассмотрим, как сделать это в Django. Как Django ищет переводы Когда Django ищет перевод слова, он сначала проверяет папку locale на самом верхнем уровне проекта. Если перевод не

By Dmitry

Использование Email вместо имени пользователя для входа в Django Admin

По умолчанию, Django использует имя пользователя для входа в систему. Однако, в некоторых случаях использование email может быть более удобным и практичным. Например, большинство пользователей помнят свой email, а не имя пользователя. В этой статье мы рассмотрим, как настроить вход в Django с использованием email вместо имени пользователя. Зачем использовать

By Dmitry

Показ кастомной страницы 404 в Django

В этом посте мы рассмотрим, как показать кастомную страницу 404 в приложении на Django. Это может быть полезно, если вы хотите предоставить пользователям более информативную и дружелюбную страницу ошибки вместо стандартной страницы 404, которая показывает только сообщение об ошибке. Шаг 1: Создание кастомной страницы 404 Сначала создайте новый шаблон для

By Dmitry

Вход по SSH на удаленный сервер Ubuntu без пароля

Настройка входа по SSH на сервере Ubuntu В этой статье мы рассмотрим, как настроить вход пользователей только по SSH на сервере Ubuntu. Это позволит повысить безопасность вашего сервера, ограничив вход только по защищённому протоколу SSH. Шаг 1: Установка и настройка OpenSSH OpenSSH - это пакет, который позволяет устанавливать защищённое соединение

By Dmitry