Веб-хуки Github автоматически развертывают статьи блога, используют сводку [включая видео]

задняя часть внешний интерфейс GitHub
Веб-хуки Github автоматически развертывают статьи блога, используют сводку [включая видео]

Автор: Брат Сяофу
Блог:bugstack.cn
видео:WOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO непосредственно пропорционально вам

Осаждайте, делитесь, растите и позвольте себе и другим что-то получить! 😄

Введение

小傅哥,我搞了三台服务器,维护学校游戏社站点,我麻了!

📧письмо фанатки: Брат Фу, я второкурсница на втором курсе, поэтому я из тех второкурсниц, которые могут научиться программированию 😄. Разве я не видел, чтобы в последнее время много людей продвигало белые куртки для серверов каждый день?Я купил их на 11.1, и попросил двух одноклассников в общежитии купить их вместе.Они оба купили их на три года. Думая об этом, мы втроем можем создать и поддерживать сайт нашего школьного игрового клуба, поддерживать школьные игровые соревнования, рекламу, уведомления и использовать навыки программирования, которым я научился попутно. Изначально я думал, что смогу показать его онлайн в срок для EDG VS DK, но доменное имя нужно регистрировать много дней, поэтому я могу только это сделать. И так как мы втроем всю ночь ворочали сервер, строили сайт и регистрировали доменное имя, у нас действительно возникло слишком много проблем.Раньше я чувствовал, что смогу взлететь после изучения учебника, но теперь я вся промежность. Я могу только один раз изучить видео о работе облачного сервера Fu Ge, развернуть и проверить его один раз, я действительно многому научился! Еще раз спасибо Фу! Итак, теперь возникает проблема, то есть, Брат Фу, в вашем видео на станции B всего 6 разделов.Я следил за ним после просмотра, но на этот раз столкнулся с новой проблемой, то есть у меня три сервера, и я настроил загрузка nginx по видео.После этого каждый раз приходится передавать файлы сайта на три сервера по фтп,иногда один забываю. Что с этим делать, брат Фу может придумать способ.

📨Брат Фу ответил: есть способ, вы можете поместить код своего веб-сайта в частный репозиторий и перенести его на Github или Gitee. Обе кодовые базы поддерживают веб-перехватчики. Проще говоря, когда вы добавляете код в кодовую базу, кодовая база вызывает вас для предварительной настройки Фактически, один или несколько перехватчиков обратного вызова должны вызывать URL-адрес, предоставленный вашими тремя сайтами балансировки нагрузки, чтобы уведомить вас о том, что кодовая база имеет последний обновленный код.После получения уведомления о вызове URL-адреса вы можете передатьgit pullКоманда загружает на сервер последний загруженный код веб-сайта. Эффект теперь таков, что после того, как вы сохраните код на GitHub и загрузите последний контент веб-сайта, три сайта могут быть автоматически развернуты.Краткий процесс выглядит следующим образом:

Процесс схемы:

  1. На своем веб-сайте укажите URL-адрес доступа к веб-перехватчикам и настройте его так, чтобыGithub/GiteeНастройки кодовой базы -> Вебхуки在下文中会有详细介绍
  2. Например, содержимое, разработанное webhooks.php на рисунке, предназначено для запуска операции git pull после получения входных параметров при получении вызова.shell_exec("git pull origin main 2>&1");
  3. После того, как настройка webhooks будет завершена, когда мы отправим локальный код на склад (Github/Gitee) через git push, склад вызовет все webhooks.php и вытащит код со склада (Github/Gitee) на сайт, который завершает обновление всего контента сайта.

🤔 Брат Фу, я понимаю, что ты сказал, но мне нужно, чтобы ты сделал это снова!

2. Описание окружающей среды

  1. 【должен использоватьGithub,Gitee,CodechinaПоддерживайте код веб-сайта, поскольку эти репозитории могут поддерживать настройку веб-перехватчиков.
  2. [Требуется] Облачный сервер Linux (публичный сетевой IP-адрес); установить Git, установить Nginx, установить PHP, установить FTP
  3. [Необязательно] Используйте панель управления и обслуживания пагоды для развертывания блогов сайта, с которыми будет удобнее работать

3. Конфигурация сайта

первый, мы используем панель управления и обслуживания пагоды Linux, чтобы добавить сайт блога. Перед добавлением нам необходимо установить модули Nginx, FTP и PHP в пагоде. Если вы относительно незнакомы с операцией здесь, вы можете сначала посмотреть Xiao Fu записано на станции B Cloud server обучающее видео, адрес:space.proportion.com/15637440/есть… PS:当然你也可以不使用宝塔,通过命令安装 Nginx 或者 Apache 服务器等所需要的软件也是可以的。

1. Установка среды

Установить Гит

  • Требование: когда сайт получает обратный вызов веб-перехватчика, используйте git pull для извлечения кода веб-сайта, поэтому вам необходимо установить git
  • Заказ:yum -y install git
  • проверять:
[root@CodeGuide ~]# git version
git version 2.27.0

Установить Nginx, FTP.

  • Требования: при развертывании сайта блога вам необходимо будет загрузить его на сервер Nginx и FTP.
  • Эксплуатация: можно использовать непосредственно в пагоде软件商店установить

Настройте PHP, чтобы разрешить директиву скрипта exec

  • Требование: поскольку мы используем операцию обратного вызова веб-перехватчика, разработанную PHP, нам необходимо установить здесь модуль PHP.

  • Установка: Установите его прямо в магазине программного обеспечения пагоды

  • Конфигурация: после установки модуля PHP вам также необходимо настроить PHPphp.iniВнесите изменения и удалите exec и shell_exec в разделе disable_functions, чтобы можно было выполнять команды сценария в файле webhooks.php. Как показано на рисунке:

2. Конфигурация сайта

  • После установки среды вы можете добавить сайт веб-сайта.На этот сайт необходимо загрузить рабочий код вашего веб-сайта.Он обеспечивает операции FTP и панель управления и обслуживания пагоды.文件, вы можете изменить содержимое сайта онлайн.

3. Доступ к сайту

  • адрес:http://39.96.73.167- Вы можете заменить его своим IP-адресом доступа
  • Описание: После создания сайта по умолчанию он будет/www/wwwroot/39.96.73.167В каталоге есть index.html, где вы можете вносить онлайн-модификации.

В-четвертых, создайте открытый ключ

SSH — это инструмент входа в систему для систем Linux, который в настоящее время широко используется для входа на сервер и различных зашифрованных сообщений.

1. Просмотр бегущего пользователя

Как правило, php работает с использованиемwwwПользователи, мы можем загрузить index.php в корневой каталог сайта через ftp, а затем получить доступ к сайту, чтобы просмотреть путь к проекту и каталог пользователя.

Код в index.php выглядит следующим образом

<?php
header('Content-type: text/html; charset=utf-8');
ini_set("error_reporting", "E_ALL & ~E_NOTICE");

echo "Hi,Webhooks!By 小傅哥<br/>";

echo '<br/>测试:输出项目路径和用户目录:<br/>';

exec("cd ~ && cd - && cd -", $output);

echo '<pre>';
echo print_r($output);
echo '</pre>';
  • если ты не правphp.iniсерединаdisable_functions = {exec、shell_exec}Если вы удалите его, то выполнение инструкции скрипта в этом файле php сообщит об ошибке.

посетите сайт

  • Путь проекта:[0] => /www/wwwroot/39.96.73.167
  • Каталог пользователя:[1] => /home/www - www — это каталог пользователя, для которого нам нужно создать открытый ключ ssh.

2. Сгенерируйте и настройте открытый ключ

2.1 Открыть пользователя www

  • Заказ:vim /etc/passwd

  • Конфигурация: поставитьsbin/nologinдляbin/bash

2.2 Генерация открытого ключа

Поскольку мы уже запустили разрешение на вход в www, перед созданием открытого ключа нам нужно переключиться на учетную запись www, команда:su www

  • Поменять пользователя:su www

  • Сгенерировать открытый ключ:ssh-keygen -t rsa -C "184172133@qq.com"- Введите по умолчанию

  • Посмотреть открытый ключ:cat ~/.ssh/id_rsa.pub- Не виден под другими аккаунтами, виден только при переходе на www

2.3 Настройте открытый ключ (Github)

  • адрес:GitHub.com/settings/в любое время…

  • настроить: провести вас черезcat ~/.ssh/id_rsa.pubОткрытый ключ, который вы видите, может быть настроен здесь следующим образом:

    • С настройкой этого открытого ключа мы можем автоматически получать код через инструкции скрипта в webhooks.php.

Пять, блог обновления вебхуков

1. Клонировать мой код

  • Исходный код:Обратите внимание на публичный номер: bugstack wormhole stack- Отвечать:guide-webhooksполучить
  • Использование: вы можете сначала разветвить мой исходный код на свой Github, а затем развернуть его на своем сайте. После того, как вы изучили и разобрались с принципами, тогда работайте над собственным сайтом

2. Развернуть на сайте

  • Здесь нам нужно использовать сайт в первую очередьgit clone ”你的网站代码git地址“, клонирование кода Github в свой собственный блог, по сути, является запуском роли развертывания. И этот шаг на самом деле является способом ежедневного использования Git, сначала клонируйте код и постоянно обновляйте git pull.
  • Заказ:[www@CodeGuide 39.96.73.167]$ git clone git@github.com:fuzhengwei/guide-webhooks.git- Обратите внимание, что вам нужно переключиться на собственный базовый адрес кода, иначе веб-хуки не будут работать.

3. Измените рабочий каталог веб-сайта

  • Поскольку мы клонировали рабочий код нашего блога из Github на сайт блога, нам нужно переключить рабочий каталог веб-сайта в эту папку, чтобы мы могли нормально получить доступ к нашему коду блога.

4. Настройте веб-капоны

webhooks.php

сценарий обратного вызова

<?php
/**
 * Git webhooks 自动部署脚本
 * 地址:https://github.com/fuzhengwei/guide-webhooks/settings/hooks
 */

// 接收post参数
$requestBody = file_get_contents("php://input");
if (empty($requestBody)) {
    exit('data null!');
}

// Content type = application/json
$content = json_decode($requestBody, true);

// 验证 Webhooks 配置的 Secret,也可以不验证
/*if (empty($content['password']) || $content['password'] != '123456') {
	exit('password error');
}*/

// 项目存放物理路径,也就是站点的访问地址
$path = "/www/wwwroot/39.96.73.167/guide-webhooks/";

// 判断需要下拉的分支上是否有提交,我们这里的分支名称为 main
if ($content['ref'] == 'refs/heads/main') {

    // 执行脚本 git pull,拉取分支最新代码
    $res = shell_exec("cd {$path} && git pull origin main 2>&1"); // 当前为www用户

    // 记录日志 ($content 返回的是一整个对象,可以按需获取里面的内容,写入日志)
    $res_log = '------------------------->' . PHP_EOL;
    $res_log .= '用户 ' . $content['pusher']['name'] . ' 于 ' . date('Y-m-d H:i:s') . ' 向项目【' . $content['repository']['name'] . '】分支【' . $content['ref'] . '】PUSH ' . $content['commits'][0]['message'] . PHP_EOL;
    $res_log .= $res . PHP_EOL;

    // 追加方式,写入日志文件
    file_put_contents("git_webhook_log.txt", $res_log, FILE_APPEND);
}
echo 'done';
  • В файле кода, который мы клонировали с Github, есть файл с именемwebhooks.php, который представляет собой файл сценария, используемый для извлечения соответствующей кодовой базы блога Github при обработке обратных вызовов Github.

  • Сейчасhttp://39.96.73.167/webhooks.phpЕго можно настроить на веб-хуки Github, как показано на рисунке:

    • Конфигурация, URL-адрес, тип контента, секрет, триггер, вы можете подтвердить после завершения настройки Кроме того, вы можете настроить несколько экземпляров сервера на веб-перехватчики, чтобы вы могли развертывать код вместе при отправке кода в репозиторий Github.

6. Проверка развертывания

В настоящее время, посетите блог следующим образом:接下来我们开始修改博客文件并提交,验证自动部署更新站点

1. Добавьте новый код в index.php

  • Вы можете изменить любой контент в файле index.php или добавить новый контент.

2. Отправить код на Github

  • Поместите недавно измененный контент в базу кода и дождитесь сценария обратного вызова Github webhooks.

3. Проверяйте обновления блога

  • адрес:http://39.96.73.167/

  • Эффект:

    • Посетив адрес блога, вы уже можете увидеть наш недавно добавленный контент, который был автоматически развернут и обновлен на сайте! ✌🏻

4. Просмотр журнала выполнения скрипта

В нашем webhooks.php, когда выполняется скрипт git pull, также есть запись журнала, чтобы узнать, кто прав насчет веб-сайта!

git_webhook_log.txt

  • git_webhook_log.txt — это файл журнала, записанный в webhooks.php, вы можете расширить другой контент, который необходимо вывести самостоятельно.

5. Просмотр журнала push-уведомлений WebHooks

  • Каждый раз, когда выполняется веб-перехватчик, будет соответствующая запись, чтобы сообщить вам, был ли успешно вызван возврат кода. И в журнале вы также можете увидеть содержимое файла JSON, переданного вам веб-перехватчиками, и вы можете получить из него необходимую информацию, например, кто отправил его, какая ветвь была отправлена, какие файлы были отправлены и скоро.
  • Здесь также перехватывается кусок push JSON, а остальную информацию вы можете проверить сами в записи push.

7. Резюме

  • В этой главе мы подробно познакомим вас с использованием веб-перехватчиков, а также позволим небольшим партнерам, которым нужна эта технология, внести изменения в развертывание своего сайта более подробно.聪明一些. Конечно, самостоятельные записи также помогли некоторым младшим братьям и сестрам!
  • Итак, теперь, если у вас есть сервер, который питается пеплом и вы не знаете, как его использовать, вы можете выбросить его сейчас, потому что Брат Фу записал для вас вводное видео и написал статью об эксплуатации, так что не ждите, давайте идти! молодые люди! Связь:space.proportion.com/15637440/есть…

Восемь, рекомендация серии