# Развёртывание проекта с помощью 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):
Сначала нужно настроить SSH-подключение с аутентификацией по ключу.
Настройка SSH-подключения с аутентификацией по ключу
Перейдите в папку проекта и запустите GitBash — выберите Git Bash Here в контекстном меню:
В открывшейся консоли введите:
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]
Здесь укажите имя для файлов с ключами.
После завершения работы алгоритма проверьте наличие файлов с ключами в папке:
Теперь добавьте ключи к 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:
Здесь нажмите кнопку
и вставьте содержимое файла 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 и в открывшемся окне нажмите
:В окне создания нового репозитория укажите имя репозитория, добавьте его описание и выберите тип доступа, частный или публичный:
После нажатия кнопки
новый репозиторий будет создан. В открывшемся окне появится инструкция по загрузке проекта в только что созданный репозиторий.В папке с проектом запустите консоль работы с 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 и удостовериться, что все файлы добавились:
# Клонирование проекта с github
Скопируйте частный ключ репозитория на ваш хостинг. Файл, содержащий частный ключ, можно передать на хостинг по SFTP или загрузить с помощью файлового менеджера, установленного на Джино.
Разместите файл с ключом в папке .ssh
и установите права доступа к нему 400.
Подключитесь к хостингу по SSH и добавьте частный ключ к агенту, как это делали раньше:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/your_file_name
Хостинг готов к работе с github!
Вернитесь на github и в окне управления репозиторием скопируйте ссылку для его клонирования по SSH:
Клонируйте проект из репозитория:
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 в папке с доменным именем и перезагрузите веб-сервер: