Автор: Брат Сяофу
Блог:bugstack.cn
видео:WOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO непосредственно пропорционально вам
Осаждайте, делитесь, растите и позвольте себе и другим что-то получить! 😄
Введение
小傅哥,我搞了三台服务器,维护学校游戏社站点,我麻了!
📧письмо фанатки: Брат Фу, я второкурсница на втором курсе, поэтому я из тех второкурсниц, которые могут научиться программированию 😄. Разве я не видел, чтобы в последнее время много людей продвигало белые куртки для серверов каждый день?Я купил их на 11.1, и попросил двух одноклассников в общежитии купить их вместе.Они оба купили их на три года. Думая об этом, мы втроем можем создать и поддерживать сайт нашего школьного игрового клуба, поддерживать школьные игровые соревнования, рекламу, уведомления и использовать навыки программирования, которым я научился попутно. Изначально я думал, что смогу показать его онлайн в срок для EDG VS DK, но доменное имя нужно регистрировать много дней, поэтому я могу только это сделать. И так как мы втроем всю ночь ворочали сервер, строили сайт и регистрировали доменное имя, у нас действительно возникло слишком много проблем.Раньше я чувствовал, что смогу взлететь после изучения учебника, но теперь я вся промежность. Я могу только один раз изучить видео о работе облачного сервера Fu Ge, развернуть и проверить его один раз, я действительно многому научился! Еще раз спасибо Фу! Итак, теперь возникает проблема, то есть, Брат Фу, в вашем видео на станции B всего 6 разделов.Я следил за ним после просмотра, но на этот раз столкнулся с новой проблемой, то есть у меня три сервера, и я настроил загрузка nginx по видео.После этого каждый раз приходится передавать файлы сайта на три сервера по фтп,иногда один забываю. Что с этим делать, брат Фу может придумать способ.
📨Брат Фу ответил: есть способ, вы можете поместить код своего веб-сайта в частный репозиторий и перенести его на Github или Gitee. Обе кодовые базы поддерживают веб-перехватчики. Проще говоря, когда вы добавляете код в кодовую базу, кодовая база вызывает вас для предварительной настройки Фактически, один или несколько перехватчиков обратного вызова должны вызывать URL-адрес, предоставленный вашими тремя сайтами балансировки нагрузки, чтобы уведомить вас о том, что кодовая база имеет последний обновленный код.После получения уведомления о вызове URL-адреса вы можете передатьgit pull
Команда загружает на сервер последний загруженный код веб-сайта. Эффект теперь таков, что после того, как вы сохраните код на GitHub и загрузите последний контент веб-сайта, три сайта могут быть автоматически развернуты.Краткий процесс выглядит следующим образом:
Процесс схемы:
- На своем веб-сайте укажите URL-адрес доступа к веб-перехватчикам и настройте его так, чтобы
Github/Gitee
Настройки кодовой базы -> Вебхуки在下文中会有详细介绍
- Например, содержимое, разработанное webhooks.php на рисунке, предназначено для запуска операции git pull после получения входных параметров при получении вызова.
shell_exec("git pull origin main 2>&1");
- После того, как настройка webhooks будет завершена, когда мы отправим локальный код на склад (Github/Gitee) через git push, склад вызовет все webhooks.php и вытащит код со склада (Github/Gitee) на сайт, который завершает обновление всего контента сайта.
🤔 Брат Фу, я понимаю, что ты сказал, но мне нужно, чтобы ты сделал это снова!
2. Описание окружающей среды
- 【должен использоватьGithub,Gitee,CodechinaПоддерживайте код веб-сайта, поскольку эти репозитории могут поддерживать настройку веб-перехватчиков.
- [Требуется] Облачный сервер Linux (публичный сетевой IP-адрес); установить Git, установить Nginx, установить PHP, установить FTP
- [Необязательно] Используйте панель управления и обслуживания пагоды для развертывания блогов сайта, с которыми будет удобнее работать
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 вам также необходимо настроить PHP
php.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)
-
настроить: провести вас через
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/есть…
Восемь, рекомендация серии
- Код «Netty+JavaFx Actual Combat: Imitate Desktop WeChat Chat» с открытым исходным кодом, развертывание в облаке, видео-объяснение, просто чтобы дать вам звезду!
- Cloudreve самостоятельно построил облачный диск, я сказал, что никто не может ограничить мою емкость и скорость!
- Стройте 4 в день, Сяо Фу научит вас вести блог!
- Брат Фу, кодовый фермер с «боковой линией»!
- Чтобы быть разумным, пока вы программист, вам действительно не нужно тратить деньги на обучение, чтобы найти работу после окончания учебы!