# Развёртывание проекта с помощью git-репозитория

Этот способ развёртывания подходит для проектов, которые будут в общем доступе или разрабатываются несколькими специалистами.

В этой инструкции мы опишем размещение проекта на github (opens new window) и его последующее клонирование на хостинг.

Файл passenger_wsgi.py, который будем добавлять в репозиторий, выглядит так:

import sys
def application(environ, start_response):
    start_response('200 OK', [('Content-type', 'text/plain')])
    return ["Hello, World! Deploy with git"]

# Предварительная настройка github

Для удобства работы с github будем использовать десктопную утилиту GitBash (opens new window).

Для начала работы войдите в свою учётную запись на github (opens new window):

«deploy_git»

Сначала нужно настроить SSH-подключение с аутентификацией по ключу.

Настройка SSH-подключения с аутентификацией по ключу

Перейдите в папку проекта и запустите GitBash — выберите Git Bash Here в контекстном меню:

«deploy_git»

В открывшейся консоли введите:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

Эта команда сгенерирует новую пару ключей и отправит об этом уведомление на указанную почту.

Далее перейдите к строке:

Enter a file in which to save the key (/c/Users/you/.ssh/id_algorithm):[Press enter]

Здесь укажите имя для файлов с ключами.

После завершения работы алгоритма проверьте наличие файлов с ключами в папке:

«deploy_git»

Теперь добавьте ключи к SSH-агенту. Для этого запустите агент в фоновом режиме:

eval "$(ssh-agent -s)"
# Output
> Agent pid 59566

Затем выполните команду:

ssh-add ~/.ssh/your_file_name

В строке your_file_name укажите имя файла, которое вы задали при генерации пары ключей.

Когда ключи добавлены к SSH-агенту, публичный ключ из файла *./pub нужно разместить в аккаунте на github.

Для этого перейдите в github и в разделе Settings вашего аккаунта выберите пункт SSH and GPG keys:

«deploy_git»

Здесь нажмите кнопку New SSH key и вставьте содержимое файла your_file_name.pub.

Проверить правильность работы ключей можно такой командой:

$ ssh -T git@github.com

#Output

Hi User_Name! You've successfully authenticated, but GitHub does not provide shell access.

# Загрузка проекта на github

Чтобы добавить проект на github, нужно создать для него новый репозиторий. В настройках аккаунта выберите Your Repositories и в открывшемся окне нажмите New:

«deploy_git»

В окне создания нового репозитория укажите имя репозитория, добавьте его описание и выберите тип доступа, частный или публичный:

«deploy_git»

После нажатия кнопки Create repository новый репозиторий будет создан. В открывшемся окне появится инструкция по загрузке проекта в только что созданный репозиторий.

«deploy_git»

В папке с проектом запустите консоль работы с git — Git Bash Here. В открывшейся консоли введите:

git init

Эта команда инициирует текущую папку в качестве источника для git-репозитория. Также в этой папке будет создана папка .git, в которой будет всё необходимое для работы git.

Добавьте файл проекта:

git add passenger_wsgi.py

В нашем проекте всего один файл, поэтому можно указать его имя напрямую. Чтобы добавить в репозиторий всё содержимое папки, вместо имени файла или папки поставьте «точку»: git add .

Добавьте первый коммит:

git commit -m "Python project"

Добавьте адрес репозитория из инструкции — просто скопируйте строку, указанную в инструкции, и вставьте её в консоль:

git remote add origin git@github.com:user_name/jino_deploy_test.git

И последний шаг — загрузите файлы в репозиторий:

git push -u origin master

# Output
Enumerating objects: 6, done.
Counting objects: 100% (6/6), done.
Delta compression using up to 4 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (6/6), 596 bytes | 298.00 KiB/s, done.
Total 6 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (1/1), done.
To github.com:User_Name/jino_deploy_test.git
 * [new branch]      master -> master
branch 'master' set up to track 'origin/master'.

Обратите внимание

В данном случае в команде git push -u origin используется параметр master, а не предложенный в инструкции main.

После успешной загрузки можно перейти на github и удостовериться, что все файлы добавились:

«deploy_git»

# Клонирование проекта с github

Скопируйте частный ключ репозитория на ваш хостинг. Файл, содержащий частный ключ, можно передать на хостинг по SFTP или загрузить с помощью файлового менеджера, установленного на Джино.

Разместите файл с ключом в папке .ssh и установите права доступа к нему 400.

Подключитесь к хостингу по SSH и добавьте частный ключ к агенту, как это делали раньше:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/your_file_name

Хостинг готов к работе с github!

Вернитесь на github и в окне управления репозиторием скопируйте ссылку для его клонирования по SSH:

«deploy_git»

Клонируйте проект из репозитория:

git clone git@github.com:user_name/jino_deploy_test.git

# Output
Cloning into 'jino_deploy_test'...
remote: Enumerating objects: 6, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 6 (delta 1), reused 6 (delta 1), pack-reused 0
Receiving objects: 100% (6/6), done.
Resolving deltas: 100% (1/1), done.

Разместите клонированный passenger_wsgi.py в папке с доменным именем и перезагрузите веб-сервер:

«deploy_git»

# Ссылки на похожие статьи

Подготовка хостинга к деплою проекта

Развёртывание проекта по SFTP

Развёртывание проекта из среды разработки