Зазвичай, після того, як ви відправили зміни до системи контролю версій, оновлені файли сайту доводиться завантажувати на хостинг вручну. У панелі керування 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

Відкриється майстер зі створення репозиторію. Заповніть у ньому поля даними, які вказують на ваш репозиторій:

  • Clone URL — посилання на репозиторій з вашим проектом з будь-якого сервісу роботи з git-репозиторіями, наприклад, github.com, gitlab.com, bitbucket.org. Якщо у вас закритий репозиторій, вказуйте посилання на скріншоті. Якщо відкритий, вкажіть посилання у форматі HTTP: https://github.com/username/project.git.
  • Repository Path — шлях до репозиторію cPanel. Сюди завантажуватимуться файли проекту. Тут можна вказати кореневу папку домену або будь-яку іншу. Головне, щоб папка була порожньою, інакше призначити її репозиторієм не вдасться. Щоб обрати кореневу папку сайту, заархівуйте її вміст та тимчасово перенесіть її в іншу папку.
  • Repository Name — ім’я репозиторію. На функціонал воно не впливає, просто назва, щоб було зручно відрізнити один від одного кілька репозиторіїв. Як варіант, можете вписати сюди домен, для якого розробляєте сайт або назву проекту.
Додавання нового репозиторію до cPanel

Коли заповніть усі поля та натисніть кнопку «Створити», запуститься процес клонування репозиторію. Якщо у вас там багато файлів, доведеться почекати якийсь час. Поки йде клонування, у спільній таблиці з репозиторіями не будуть доступні кнопки для керування. По вікнанні процесу вони з’являться.

Список репозиторіїв у програмі Git Version Control у cPanel

Крок 6. Завантажте зміни з віддаленого репозиторію на хостинг

Оскільки ви тільки-но клонували репозиторій, у «Диспетчері файлів» cPanel вже будуть всі файли вашого проекту, які були на сайті системи контролю версій. Щоб протестувати деплою, потрібно щось змінити у віддаленому репозиторії.

Коли буде що деплоїти, натисніть у додатку «Git Version Control» кнопку «Керувати» у рядку з потрібним проектом.

Кнопка «Керувати» на головній сторінці програми «Git Version Control» у cPanel

На наступній сторінці ви побачите дві вкладки: «Основні відомості» та «Pull or Deploy».

На вкладці «Основні відомості» ліворуч ви зможете змінити назву репозиторію cPanel, а також вибрати гілку у віддаленому репозиторії, з якої повинні підтягуватися зміни. Праворуч буде загальна інформація про останній коміт, історія комітів та посилання для клонування репозиторію cPanel (наприклад, на локальний комп’ютер).

Вкладка «Основні відомості» у додатку «Git Version Control» у cPanel

Завантажити зміни з сайту системи контролю версій можна на вкладці «Pull or Deploy». Для цього ліворуч унизу на цій вкладці натисніть кнопку «Update from Remote». Після цього, якщо там є якісь зміни, вони підтягнуться до репозиторію в cPanel.

Вкладка «Pull or Deploy» у додатку «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

Після цього, коли ви натиснете «Керувати» у рядку з потрібним репозиторієм і перейдете на вкладку «Pull or Deploy», будуть доступні обидві кнопки: «Update from Remote» та «Deploy HEAD Commit».

Натисніть «Update from Remote», щоб підтягнути зміни з віддаленого репозиторію. Натисніть кнопку «Deploy HEAD Commit», якщо у тестовому середовищі все виявилося в порядку і можна викочувати зміни в робоче середовище.

Вкладка «Pull or Deploy» після додавання файлу .cpanel.yml

Що далі

Більше інформації про функціонал програми Git Version Control ви знайдете в офіційній документації cPanel (англійською): Інструкція з налаштування деплою.

Більше інформації щодо використання системи контролю версій — у російськомовному підручнику на сайті Git.

Чи була ця стаття корисною?

Дякуємо за відгук!