久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

利用php + Laravel如何實現(xiàn)部署自動化詳解

這篇文章主要給大家介紹了關(guān)于利用php + Laravel如何實現(xiàn)部署自動化的相關(guān)資料,文中通過示例代碼介紹非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考

前言

本文主要給大家介紹了關(guān)于利用php + Laravel如何實現(xiàn)部署自動化的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細(xì)的介紹吧。

所謂自動化部署, 我的理解就是在用戶保證代碼質(zhì)量的前提下, 將代碼能夠快速的自動部署到目標(biāo)服務(wù)器上的一種手段.

實現(xiàn)原理

本地推送代碼 -> 代碼庫 -> webhook 通知服務(wù)端 -> 自動拉取代碼庫代碼

利用php + Laravel如何實現(xiàn)部署自動化詳解

生成并且部署公鑰

具體步驟參照 配置SSH公鑰

1) 生成公鑰

# 使用給定的 email 生成 public/private rsa 密鑰
# 如果使用非默認(rèn)地址需要配置 .ssh/config
$ ssh-keygen -t rsa -b 4096 -C your_email@example.com

2) 在 coding 中添加公鑰

輸出部署公玥

$ cat coding.pub

在git 管理端部分部署公鑰

利用php + Laravel如何實現(xiàn)部署自動化詳解

3) 配置 config 文件

編輯 ~/.ssh/config 文件

Host git.coding.net
User xxxx@email.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/coding_rsa // 生成的非默認(rèn)地址的公鑰存放點

4) 測試是否可以鏈接到 git@git.coding.net 服務(wù)器

# 注意 git.coding.net 接入到 CDN 上所以會解析多個不同的 host ip 
$ ssh -T git@git.coding.net
The authenticity of host 'git.coding.net (123.59.85.184)' can't be established.

RSA key fingerprint is 98:ab:2b:30:60:00:82:86:bb:85:db:87:22:c4:4f:b1.

Are you sure you want to continue connecting (yes/no)? 

# 這里我們根據(jù)提示輸入 yes
Warning: Permanently added 'git.coding.net,123.59.85.184' (RSA) to the list of known hosts.

Coding 提示: Hello duoli, You've connected to Coding.net via SSH. This is a deploy key.

duoli,你好,你已經(jīng)通過 SSH 協(xié)議認(rèn)證 Coding.net 服務(wù),這是一個部署公鑰

設(shè)置 webhook

讓代碼庫接收到通知的時候通知服務(wù)端接收代碼更新.

利用php + Laravel如何實現(xiàn)部署自動化詳解

這種 webhook 的方式來接收可以部署的請求, 這里的請求使用的是 post 方法

php 接收部署

因為 php 腳本代碼執(zhí)行的時候會可能有服務(wù)的中斷(例如執(zhí)行時間), 不一定符合實際, 所以計劃使用腳本來調(diào)用.

收到請求 -> 存入隊列 -> 腳本監(jiān)聽處理隊列

由于使用 laravel 框架, 收到通知之后, 存入隊列, 因為隊列使用的是命令行監(jiān)聽, 所以命令行執(zhí)行的時候不會出現(xiàn)中斷情況.

在此之前需要配置運行代碼的用戶有權(quán)限能夠訪問到 git 的服務(wù)器. 也就是如果你的代碼以 www-data 運行, 需要使用 www-data 的角色來訪問 git@git.coding.net 服務(wù)器. 否則也不能實現(xiàn)部署, 原因是 密鑰不符合而無權(quán)限獲取內(nèi)容.

1) 隊列代碼 設(shè)置 app/Jobs

<?php 
namespace App\Jobs;

use Illuminate\Contracts\Bus\SelfHandling;
use Illuminate\Contracts\Queue\ShouldQueue;
use Symfony\Component\Process\Process;

class WebDeploy extends Job implements SelfHandling, ShouldQueue
{

 private $shellPath;

 /**
  * Create a new job instance.
  */
 public function __construct()
 {
  $this->shellPath = dirname(dirname(__DIR__));
 }

 /**
  * Execute the job.
  * @return void
  */
 public function handle()
 {
  if (!env('LM_DEPLOY_BRANCH')) {
   echo 'ERR > ' . 'No branch Set'."\n";
  }
  $shell = "/bin/bash " . base_path('resources/shell/deploy.sh') . ' ' . base_path() . ' ' . env('LM_DEPLOY_BRANCH', 'master');
  $process = new Process($shell);
  $process->start();
  $process->wait(function ($type, $buffer) {
   if (Process::ERR === $type) {
    echo 'ERR > ' . $buffer;
   }
   else {
    echo 'OUT > ' . $buffer;
   }
  });
 }
}

2) 觸發(fā)隊列

dispatch(new WebDeploy());

3) 部署 shell 腳本

#!/bin/bash
aim_path=$1
branch=$2
cd ${aim_path}
echo $PWD
/usr/bin/git pull origin ${branch} >/dev/null 2>&1
if [ $? -eq 0 ];then
echo "OK"
else
 /usr/bin/git fetch -f
 /usr/bin/git reset --hard
 /usr/bin/git pull origin ${branch}
fi

4) 使用supervisor 來監(jiān)聽隊列執(zhí)行, 監(jiān)聽隊列任務(wù)

利用php + Laravel如何實現(xiàn)部署自動化詳解

【網(wǎng)站聲明】本站除付費源碼經(jīng)過測試外,其他素材未做測試,不保證完整性,網(wǎng)站上部分源碼僅限學(xué)習(xí)交流,請勿用于商業(yè)用途。如損害你的權(quán)益請聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關(guān)文檔推薦

這篇文章主要介紹了PHP有序表查找之插值查找算法,簡單分析了插值查找算法的概念、原理并結(jié)合實例形式分析了php實現(xiàn)針對有序表插值查找的相關(guān)操作技巧,需要的朋友可以參考下
下面小編就為大家分享一篇ThinkPHP整合datatables實現(xiàn)服務(wù)端分頁的示例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
下面小編就為大家分享一篇PHP實現(xiàn)APP微信支付的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
這篇文章主要介紹了PHP實現(xiàn)的多維數(shù)組排序算法,結(jié)合實例形式對比分析了php針對多維數(shù)組及帶有鍵名的多維數(shù)組進行排序相關(guān)操作技巧與注意事項,需要的朋友可以參考下
這篇文章主要為大家詳細(xì)介紹了php結(jié)合ajaxuploadfile實現(xiàn)無刷新文件上傳功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本篇文章給大家詳細(xì)介紹了PHP開發(fā)接口使用RSA進行加密解密方法,對此有興趣的朋友可以學(xué)習(xí)下。
主站蜘蛛池模板: 久久久久国产一区二区三区 | av三级在线观看 | 阿v视频在线观看 | 一区二区三区高清在线观看 | 日韩欧美手机在线 | 福利网址| 中国大陆高清aⅴ毛片 | 天天干夜夜 | 日韩在线欧美 | 亚洲国产精品久久久久秋霞不卡 | 欧美videosex性极品hd | 日本天堂视频 | 日韩精品在线播放 | 国产色片在线 | 国产精品亚洲一区二区三区在线 | 国产乱码精品一品二品 | 亚洲毛片在线 | 中文字幕三区 | 日本高清视频在线播放 | 先锋av资源在线 | 午夜视频在线观看网站 | 国产一区二区三区视频在线观看 | 亚洲高清在线播放 | 国产亚洲人成a在线v网站 | 伊人久久精品一区二区三区 | 欧美二区在线 | 亚洲精品中文字幕中文字幕 | 国产精品中文字幕在线播放 | 在线视频 亚洲 | 欧美午夜在线 | 日韩国产在线观看 | 一区二区三区中文字幕 | 在线看片网站 | 国产高清性xxxxxxxx | 在线视频一区二区 | 亚洲高清在线观看 | 国产成人精品999在线观看 | 在线中文字幕日韩 | 亚洲不卡| 亚洲日韩中文字幕一区 | 狠狠操狠狠操 |