Зазвичай, після того, як ви відправили зміни до системи контролю версій, оновлені файли сайту доводиться завантажувати на хостинг вручну. У панелі керування 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».
Натисніть кнопку «Створити» у правій частині екрана.
Відкриється майстер зі створення репозиторію. Заповніть у ньому поля даними, які вказують на ваш репозиторій:
- Clone URL — посилання на репозиторій з вашим проектом з будь-якого сервісу роботи з git-репозиторіями, наприклад, github.com, gitlab.com, bitbucket.org. Якщо у вас закритий репозиторій, вказуйте посилання на скріншоті. Якщо відкритий, вкажіть посилання у форматі HTTP: https://github.com/username/project.git.
- Repository Path — шлях до репозиторію cPanel. Сюди завантажуватимуться файли проекту. Тут можна вказати кореневу папку домену або будь-яку іншу. Головне, щоб папка була порожньою, інакше призначити її репозиторієм не вдасться. Щоб обрати кореневу папку сайту, заархівуйте її вміст та тимчасово перенесіть її в іншу папку.
- Repository Name — ім’я репозиторію. На функціонал воно не впливає, просто назва, щоб було зручно відрізнити один від одного кілька репозиторіїв. Як варіант, можете вписати сюди домен, для якого розробляєте сайт або назву проекту.
Коли заповніть усі поля та натисніть кнопку «Створити», запуститься процес клонування репозиторію. Якщо у вас там багато файлів, доведеться почекати якийсь час. Поки йде клонування, у спільній таблиці з репозиторіями не будуть доступні кнопки для керування. По вікнанні процесу вони з’являться.
Крок 6. Завантажте зміни з віддаленого репозиторію на хостинг
Оскільки ви тільки-но клонували репозиторій, у «Диспетчері файлів» cPanel вже будуть всі файли вашого проекту, які були на сайті системи контролю версій. Щоб протестувати деплою, потрібно щось змінити у віддаленому репозиторії.
Коли буде що деплоїти, натисніть у додатку «Git Version Control» кнопку «Керувати» у рядку з потрібним проектом.
На наступній сторінці ви побачите дві вкладки: «Основні відомості» та «Pull or Deploy».
На вкладці «Основні відомості» ліворуч ви зможете змінити назву репозиторію cPanel, а також вибрати гілку у віддаленому репозиторії, з якої повинні підтягуватися зміни. Праворуч буде загальна інформація про останній коміт, історія комітів та посилання для клонування репозиторію cPanel (наприклад, на локальний комп’ютер).
Завантажити зміни з сайту системи контролю версій можна на вкладці «Pull or Deploy». Для цього ліворуч унизу на цій вкладці натисніть кнопку «Update from Remote». Після цього, якщо там є якісь зміни, вони підтягнуться до репозиторію в 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
Після цього, коли ви натиснете «Керувати» у рядку з потрібним репозиторієм і перейдете на вкладку «Pull or Deploy», будуть доступні обидві кнопки: «Update from Remote» та «Deploy HEAD Commit».
Натисніть «Update from Remote», щоб підтягнути зміни з віддаленого репозиторію. Натисніть кнопку «Deploy HEAD Commit», якщо у тестовому середовищі все виявилося в порядку і можна викочувати зміни в робоче середовище.
Що далі
Більше інформації про функціонал програми Git Version Control ви знайдете в офіційній документації cPanel (англійською): Інструкція з налаштування деплою.
Більше інформації щодо використання системи контролю версій — у російськомовному підручнику на сайті Git.