Обычно, после того как вы отправили изменения в систему контроля версий, обновлённые файлы сайта приходится загружать на хостинг вручную. В панели управления cPanel вы можете подключить удалённый репозиторий к хостингу и загружать любые изменения при помощи одной кнопки в cPanel или команды в консоли. Как всё это работает — рассказываем в статье.

Шаг 1. Создайте SSH-ключи в cPanel

Этот шаг нужно сделать, только если у вас закрытый репозиторий. Ключи нужны, чтобы удалённый репозиторий и cPanel могли взаимодействовать. Если репозиторий на сайте системы контроля версий доступен публично, переходите сразу к шагу №5.

На главной странице cPanel найдите блок «Расширенные» и откройте приложение Terminal.

Приложение «Terminal» на главной странице cPanel

Здесь вам понадобится выполнить несколько команд, чтобы создать ключи и дополнительно настроить всё для работы. Сначала сгенерируем ключи:

ssh-keygen -t rsa -f ~/.ssh/repo -b 4096 -C "username@example.com"

Замените repo на название вашего удалённого репозитория, username на ваш юзернейм в cPanel, а example.com — на главный домен в панели.

На моменте «Enter passphrase» просто два раза нажмите Enter, чтобы пропустить этот шаг. Это важно, чтобы у ключей не было passphrase иначе их не получится использовать.

В конце вы увидите подобную картину. Это значит, что ключи успешно сгенерировались и находятся в папке .ssh в «Менеджере файлов».

Результат создания SSH-ключей в терминале cPanel

Шаг 2. Добавьте конфигурационный файл для считывания ключей

Это нужно, чтобы помочь системе контроля версий найти ключи. Сначала создайте в терминале файл config:

touch ~/.ssh/config

Теперь откройте его в редакторе Nano:

nano ~/.ssh/config

Вставьте в файл вот этот текст, но замените путь к приватному ключу в строке IdentityFile. Затем сохраните изменения при помощи Ctrl + X и выйдите из редактора.

Host github.com
        Hostname github.com
        IdentityFile=/home/username/.ssh/project

Дальше — измените права файла config:

chmod 600 ~/.ssh/config

Шаг 3. Авторизуйте ключ

На главной странице cPanel найдите раздел «Безопасность», откройте приложение «Доступ по SSH» и нажмите «Управление ключами SSH».

Приложение «Доступ по SSH» в cPanel

В открывшемся разделе вы увидите ваш открытый и закрытый ключ. Нажмите «Управлять» в строке с открытым ключом и на следующей странице нажмите «Authorize».

Кнопка «Управлять» в приложении «Доступ по SSH» в cPanel

Вернитесь на главную странице приложения «Доступ по SSH», нажмите «Просмотреть/Скачать» в строке с открытым ключом и скопируйте его содержимое.

Публичный SSH-ключ в cPanel

Шаг 4. Добавьте публичный SSH-ключ на сайте системы контроля версий

В этой инструкции будем показывать всё на примере Github, но вообще можно использовать другие системы типа Gitlab или Bitbucket.

Откройте репозиторий на сайте Github и перейдите в верхнем меню в раздел «Settings».

Кнопка «Settings» на сайте Github

В настройках слева перейдите в раздел «Deploy keys» и нажмите в рабочей области «Add deploy key».

Кнопка «Add deploy key» на сайте Github

В появившихся полях вставьте скопированный публичный ключ и придумайте для него название. Как вариант — «cPanel Deploy». Затем нажмите «Add Key». Успешно добавленный ключ будет выглядеть примерно так:

Добавленный открытый SSH-ключ на сайте Github

Шаг 5. Создайте репозиторий в cPanel

На главной странице cPanel найдите блок «Файлы» и откройте в нём приложение «Git™ Version Control».

Приложение «Git Version Control» в cPanel

Нажмите кнопку «Создать» в правой части экрана.

Главная страница приложения «Git Version Contol» в cPanel

Откроется мастер по созданию репозитория. Заполните в нём поля данными, которые указывают на ваш репозиторий:

  • Клонировать URL-адрес — ссылка на репозиторий с вашим проектом с любого сервиса по работе с git-репозиториями, например, github.com, gitlab.com, bitbucket.org. Если у вас закрытый репозиторий, указывайте ссылку как на скриншоте. Если открытый, укажите ссылку в HTTP формате: https://github.com/username/project.git.
  • Путь к репозиторию — путь к репозиторию в cPanel. Сюда будут загружаться файлы проекта. Здесь можно указать корневую папку домена или любую другую. Главное, чтобы папка была пустой, иначе назначить её репозиторием не получится. Чтобы выбрать корневую папку сайта, заархивируйте её содержимое и временно перенесите в другую папку.
  • Имя репозитория — имя репозитория. На функционал оно не влияет, просто название, чтобы удобно было отличить друг от друга несколько репозиториев. Как вариант можете вписать сюда домен, для которого разрабатываете сайт или название проекта.
Добавление нового репозитория в cPanel

Когда заполните все поля и нажмёте кнопку «Создать», запустится процесс клонирования репозитория. Если у вас там много файлов, придётся подождать какое-то время. Пока идёт клонирование, в общей таблице с репозиториями не будут доступны кнопки для управления. По окночании процесса они появятся.

Список репозиториев в приложении Git Version Control в cPanel

Шаг 6. Загрузите изменения из удалённого репозитория на хостинг

Поскольку вы только что клонировали репозиторий, в «Менежере файлов» cPanel уже будут все файлы вашего проекта, которые были на сайте системы контроля версий. Чтобы протестировать деплой, нужно что-то изменить в удалённом репозитории.

Когда будет что деплоить, нажмите в приложении «Git Version Control» кнопку «Управлять» в строке с нужным проектом.

Кнопка «Управлять» на главной странице приложения «Git Version Control» в cPanel

На следующей странице вы увидите две вкладки: «Основная информация» и «Получить или развернуть».

На вкладке «Основная информация» слева вы сможете изменить название репозитория в cPanel, а также выбрать ветку в удалённом репозитории, из которой должны подтягиваться изменения. Справа будет общая информация о последнем коммите, история коммитов и ссылка для клонирования репозитория cPanel (например, на локальный компьютер).

Вкладка «Основная информация» в приложении «Git Version Control» в cPanel

Загрузить изменения с сайта системы контроля версий можно на вкладке «Получить или развернуть». Для этого слева внизу на этой вкладке нажмите кнопку «Обновить из удаленного репозитория». После этого, если там есть какие-то изменения, они подтянутся в репозиторий в cPanel.

Вкладка «Получить или развернуть» в приложении «Git Version Control» в cPanel

То же самое можно сделать в командной строке. Сначала подключитесь к серверу по SSH:

ssh username@vashdomen.com -p 21098

Порт 21098 используется конкретно у нас на виртуальном хостинге, у вас может быть какой-то другой. Стандартный порт — 22.

После подключения к сервеу зайдите в папку вашего репозитория:

cd public_html

Выполните команду доставки обновлений с удалённого репозитория в репозиторий cPanel:

git pull 

Шаг 7. Настройте деплой через промежуточную папку (опционально)

До этого шага рассматривался вариант с созданием репозитория cPanel в корневой папке домена. Если хотите сначала подтягивать изменения в какую-то другую папку, чтобы сначала всё протестировать, а только потом заливать в рабочую среду, понадобятся дополнительные действия.

Единственное, в этом случае деплоить в рабочую среду из консоли не получится, придётся заходить в cPanel и руками нажимать кнопку. Не совсем удобно, но хотя бы быстрее и проще, чем заливать файлы.

Итак, что вам нужно сделать — это создать в корне удалённого репозитория файл с названием .cpanel.yml и добавить в него такой текст:

---
deployment:
  tasks:
    - export DEPLOYPATH=/home/username/public_html/
    - /bin/cp -R folder $DEPLOYPATH
    - /bin/cp file.name $DEPLOYPATH

Объясняем, что это за текст в файле:

  1. DEPLOYPATH — это путь, куда будет происходить деплой из промежуточной папки. В примере это public_html. Пропишите там свой путь, только не забудьте указать свой реальный юзернейм от cPanel.
  2. Строка с «-R» указывает, что по пути из DEPLOYPATH нужно задеплоить папку folder.
  3. Последняя строка добавляет файл в список того, что нужно задеплоить.

Если хотите указать несколько папок или файлов, пропишите их отдельными строками. Чтобы задеплоить всё содержимое промежуточной папки используйте такой текст:

---
deployment:
  tasks:
    - export DEPLOYPATH=/home/username/public_html/
    - /bin/cp -R * $DEPLOYPATH

После этого, когда вы нажмёте «Управлять» в строке с нужным репозиторием и перейдёте на вкладку «Получить или развернуть», будут доступны обе кнопки: «Обновить из удалённого репозитория» и «Deploy HEAD Commit».

Нажмите «Обновить из удалённого репозитория», чтобы подтянуть изменения из удалённого репозитория. Нажмите «Deploy HEAD Commit», если в тестовой среде всё оказалось в порядке и можно выкатывать изменения в рабочую среду.

Вкладка «Получить или развернуть» после добавления файла .cpanel.yml

Что дальше

Больше информации о функционале приложения Git Version Control вы найдёте в официальной документации cPanel (на английском): Инструкция по настройке деплоя.

Больше информации по использованию системы контроля версий — в русскоязычном учебнике на сайте Git.