Обычно, после того как вы отправили изменения в систему контроля версий, обновлённые файлы сайта приходится загружать на хостинг вручную. В панели управления cPanel вы можете подключить удалённый репозиторий к хостингу и загружать любые изменения при помощи одной кнопки в cPanel или команды в консоли. Как всё это работает — рассказываем в статье.
Шаг 1. Создайте SSH-ключи в cPanel
Этот шаг нужно сделать, только если у вас закрытый репозиторий. Ключи нужны, чтобы удалённый репозиторий и cPanel могли взаимодействовать. Если репозиторий на сайте системы контроля версий доступен публично, переходите сразу к шагу №5.
Зайдите в cPanel, найдите на главной странице блок «Расширенные» и откройте приложение Terminal.
Здесь вам понадобится выполнить несколько команд, чтобы создать ключи и дополнительно настроить всё для работы. Сначала сгенерируем ключи:
ssh-keygen -t rsa -f ~/.ssh/repo -b 4096 -C "username@example.com"
Замените repo на название вашего удалённого репозитория, username на ваш юзернейм в cPanel, а example.com — на главный домен в панели.
На моменте «Enter passphrase» просто два раза нажмите Enter, чтобы пропустить этот шаг. Это важно, чтобы у ключей не было passphrase иначе их не получится использовать.
В конце вы увидите подобную картину. Это значит, что ключи успешно сгенерировались и находятся в папке .ssh в «Менеджере файлов».
Шаг 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».
В открывшемся разделе вы увидите ваш открытый и закрытый ключ. Нажмите «Управлять» в строке с открытым ключом и на следующей странице нажмите «Authorize».
Вернитесь на главную странице приложения «Доступ по SSH», нажмите «Просмотреть/Скачать» в строке с открытым ключом и скопируйте его содержимое.
Шаг 4. Добавьте публичный SSH-ключ на сайте системы контроля версий
В этой инструкции будем показывать всё на примере Github, но вообще можно использовать другие системы типа Gitlab или Bitbucket.
Откройте репозиторий на сайте Github и перейдите в верхнем меню в раздел «Settings».
В настройках слева перейдите в раздел «Deploy keys» и нажмите в рабочей области «Add deploy key».
В появившихся полях вставьте скопированный публичный ключ и придумайте для него название. Как вариант — «cPanel Deploy». Затем нажмите «Add Key». Успешно добавленный ключ будет выглядеть примерно так:
Шаг 5. Создайте репозиторий в cPanel
На главной странице cPanel найдите блок «Файлы» и откройте в нём приложение «Git™ Version Control».
Нажмите кнопку «Создать» в правой части экрана.
Откроется мастер по созданию репозитория. Заполните в нём поля данными, которые указывают на ваш репозиторий:
- Клонировать URL-адрес — ссылка на репозиторий с вашим проектом с любого сервиса по работе с git-репозиториями, например, github.com, gitlab.com, bitbucket.org. Если у вас закрытый репозиторий, указывайте ссылку как на скриншоте. Если открытый, укажите ссылку в HTTP формате: https://github.com/username/project.git.
- Путь к репозиторию — путь к репозиторию в cPanel. Сюда будут загружаться файлы проекта. Здесь можно указать корневую папку домена или любую другую. Главное, чтобы папка была пустой, иначе назначить её репозиторием не получится. Чтобы выбрать корневую папку сайта, заархивируйте её содержимое и временно перенесите в другую папку.
- Имя репозитория — имя репозитория. На функционал оно не влияет, просто название, чтобы удобно было отличить друг от друга несколько репозиториев. Как вариант можете вписать сюда домен, для которого разрабатываете сайт или название проекта.
Когда заполните все поля и нажмёте кнопку «Создать», запустится процесс клонирования репозитория. Если у вас там много файлов, придётся подождать какое-то время. Пока идёт клонирование, в общей таблице с репозиториями не будут доступны кнопки для управления. По окночании процесса они появятся.
Шаг 6. Загрузите изменения из удалённого репозитория на хостинг
Поскольку вы только что клонировали репозиторий, в «Менежере файлов» cPanel уже будут все файлы вашего проекта, которые были на сайте системы контроля версий. Чтобы протестировать деплой, нужно что-то изменить в удалённом репозитории.
Когда будет что деплоить, нажмите в приложении «Git Version Control» кнопку «Управлять» в строке с нужным проектом.
На следующей странице вы увидите две вкладки: «Основная информация» и «Получить или развернуть».
На вкладке «Основная информация» слева вы сможете изменить название репозитория в cPanel, а также выбрать ветку в удалённом репозитории, из которой должны подтягиваться изменения. Справа будет общая информация о последнем коммите, история коммитов и ссылка для клонирования репозитория cPanel (например, на локальный компьютер).
Загрузить изменения с сайта системы контроля версий можно на вкладке «Получить или развернуть». Для этого слева внизу на этой вкладке нажмите кнопку «Обновить из удаленного репозитория». После этого, если там есть какие-то изменения, они подтянутся в репозиторий в 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
Объясняем, что это за текст в файле:
- DEPLOYPATH — это путь, куда будет происходить деплой из промежуточной папки. В примере это public_html. Пропишите там свой путь, только не забудьте указать свой реальный юзернейм от cPanel.
- Строка с «-R» указывает, что по пути из DEPLOYPATH нужно задеплоить папку folder.
- Последняя строка добавляет файл в список того, что нужно задеплоить.
Если хотите указать несколько папок или файлов, пропишите их отдельными строками. Чтобы задеплоить всё содержимое промежуточной папки используйте такой текст:
--- deployment: tasks: - export DEPLOYPATH=/home/username/public_html/ - /bin/cp -R * $DEPLOYPATH
После этого, когда вы нажмёте «Управлять» в строке с нужным репозиторием и перейдёте на вкладку «Получить или развернуть», будут доступны обе кнопки: «Обновить из удалённого репозитория» и «Deploy HEAD Commit».
Нажмите «Обновить из удалённого репозитория», чтобы подтянуть изменения из удалённого репозитория. Нажмите «Deploy HEAD Commit», если в тестовой среде всё оказалось в порядке и можно выкатывать изменения в рабочую среду.
Что дальше
Больше информации о функционале приложения Git Version Control вы найдёте в официальной документации cPanel (на английском): Инструкция по настройке деплоя.
Больше информации по использованию системы контроля версий — в русскоязычном учебнике на сайте Git.