真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何用GitHubActions自動部署Laravel項(xiàng)目

本篇內(nèi)容介紹了“如何用GitHub Actions自動部署Laravel項(xiàng)目”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

為平桂等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及平桂網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、平桂網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

場景設(shè)置...#

我是一個(gè)部署在 vps 上的 Laravel 項(xiàng)目的小團(tuán)隊(duì)的一員。我們的每個(gè)團(tuán)隊(duì)成員都將從事一項(xiàng)特定的任務(wù),當(dāng)它準(zhǔn)備好投入生產(chǎn)時(shí),總是需要有人訪問服務(wù)器來部署正在推送到我們的 GitHub Repo 的每個(gè)更改。

這對我們所有人來說都是一項(xiàng)非常重復(fù)和令人不快的任務(wù),需要在我們的規(guī)模和預(yù)算范圍內(nèi)找到解決方案,這就是我們求助于強(qiáng)大的 Github Actions 來自動化我們的工作流程的時(shí)候。

讓我們深入了解我們的工作流程設(shè)置指南的簡化版本。

假設(shè)#

在本指南中,我假設(shè)您檢查了以下幾點(diǎn)。

  • 你有一個(gè)配置好的 Linux 服務(wù)器,它能夠運(yùn)行 Laravel 應(yīng)用程序,并且上面安裝了 Git。

  • 你有一個(gè) Laravel 應(yīng)用程序 Github 存儲庫。你可以按照我上一篇文章的前 2 部分在這里 free-serverless-laravel-deployment。

這個(gè)怎么運(yùn)作#

在典型的工作流程中,開發(fā)人員將為給定任務(wù)創(chuàng)建一個(gè)新分支,并向 main/master 分支發(fā)出拉取請求,或自行在 main/master 分支上進(jìn)行更改 (不可取) 并推送。

pull requestpush 都是我們可以通過 Github Actions 訂閱的給定分支上的事件。因此,我們可以定義一組指令,當(dāng)給定事件在我們的倉庫上發(fā)生時(shí)應(yīng)該執(zhí)行這些指令。這些指令可能正在運(yùn)行我們的 Tests,Builds, 和 Deployments。

創(chuàng)建部署腳本

我們要做的第一件事是創(chuàng)建一個(gè)部署腳本,其中包含部署和運(yùn)行我們的應(yīng)用程序所需的所有命令。

在應(yīng)用程序的根目錄中創(chuàng)建一個(gè)名為 .scripts 的文件夾。

.scripts 目錄中創(chuàng)建一個(gè)名為 deploy.sh 的文件,其內(nèi)容如下。

#!/bin/bash
set -e

echo "Deployment started ..."

# Enter maintenance mode or return true
# if already is in maintenance mode
(php artisan down) || true

# Pull the latest version of the app
git pull origin production

# Install composer dependencies
composer install --no-dev --no-interaction --prefer-dist --optimize-autoloader

# Clear the old cache
php artisan clear-compiled

# Recreate cache
php artisan optimize

# Compile npm assets
npm run prod

# Run database migrations
php artisan migrate --force

# Exit maintenance mode
php artisan up

echo "Deployment finished!"

請參閱腳本的注釋以了解我們在每一行上所做的事情。

創(chuàng)建工作流

Github 操作工作流是一組指令,其中包含可以在我們上面提到的事件上觸發(fā)的不同任務(wù)作業(yè)和步驟。

倉庫的工作流存儲在應(yīng)用程序根目錄的 .github/workflows 中。

.github/workflows 文件夾中創(chuàng)建一個(gè)名為 deploy.yml 的文件,其中包含以下內(nèi)容。

name: Deploy

# Trigger the workflow on push and
# pull request events on the production branch
on:
 push:
   branches:
     - production
 pull_request:
   branches:
     - production

# Authenticate to the the server via ssh
# and run our deployment script
jobs:
 deploy:
   runs-on: ubuntu-latest
   steps:
     - uses: actions/checkout@v2
     - name: Deploy to server
       uses: appleboy/ssh-action@master
       with:
         host: ${{ secrets.HOST }}
         username: ${{ secrets.USERNAME }}
         port: ${{ secrets.PORT }}
         key: ${{ secrets.SSHKEY }}
         script: "cd /var/www/html && ./.scripts/deploy.sh"

提交新創(chuàng)建的文件

現(xiàn)在我們已經(jīng)為我們的自動化創(chuàng)建了所有必要的文件,讓我們使用以下命令提交它們。

$ git add deploy.sh deploy.yml
$ git commit -m "Deployment automation"

創(chuàng)建部署分支并推送到 Github

如果您注意到我們的 deploy.shdeploy.yml 文件,我們提到了一個(gè)名為 production 的分支。我們將使用此分支添加通過 pushpull request 可用于生產(chǎn)的提交。

使用以下 git 命令為您的存儲庫創(chuàng)建此分支并將它們推送到 GitHub。

$ git checkout -b production
$ git push -u origin production

設(shè)置 ssh 密鑰

是時(shí)候在我們的服務(wù)器和 Github 之間建立連接了。

為此,我們首先需要在我們的服務(wù)器上生成一個(gè)新的 ssh 密鑰對。

在您的服務(wù)器上運(yùn)行此命令以生成 ssh 密鑰。

$ ssh-keygen -t rsa -b 4096 -C "email@example.com"

當(dāng)提示輸入文件名和密碼時(shí),只需按 Enter 并接受默認(rèn)值。

這將在您的根目錄 .ssh/ 文件夾中創(chuàng)建 2 個(gè) ssh 密鑰,公鑰和私鑰。

現(xiàn)在使用以下命令將新生成的 ssh 私鑰添加到 ssh-agent。

$ eval "$(ssh-agent -s)"$ ssh-add ~/.ssh/id_rsa

讓我們使用以下命令將我們的公鑰添加到我們服務(wù)器上的 authorized_keys 文件中。

$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

復(fù)制 ssh 密鑰到 Github

我們的上述設(shè)置將允許:-

1\。 Github Actions 向我們的服務(wù)器驗(yàn)證自己并運(yùn)行我們的 deploy.sh 腳本。

為此,我們必須讓 Github 知道如何對我們的服務(wù)器進(jìn)行身份驗(yàn)證。

當(dāng)我們準(zhǔn)備好上面的 ssh 密鑰時(shí),它將與服務(wù)器的 HOST, ssh PORT, ssh 私鑰的 KEY, 以及服務(wù)器的 USERNAME 一起提供給 GitHub。

為此,請?jiān)跒g覽器上訪問您的 Github 帳戶并打開您的倉庫。

點(diǎn)擊 settings

在側(cè)邊欄菜單上單擊secrets在 Action Secret 頁面上,單擊 new repository secret。

在new secret頁面上,逐個(gè)添加以下密鑰。

HOST

HOST 是您的服務(wù)器 IP 地址,在名稱字段中輸入 HOST 關(guān)鍵字,在值中輸入您的服務(wù)器 IP 地址。

PORT

PORT 是您的 ssh 端口。在名稱中使用 PORT 關(guān)鍵字并在值中使用 22 以使用默認(rèn) ssh 端口。

SSHKEY

SSHKEY 是我們在服務(wù)器上生成的私有 ssh 密鑰。通常您不會與任何人共享您的私人 ssh 密鑰,但由于我們正在進(jìn)行自動化,因此這是必需的。

使用 SSHKEY 關(guān)鍵字作為名稱字段。

要復(fù)制您的私鑰值,請轉(zhuǎn)到您的服務(wù)器并運(yùn)行以下命令。

$ cat ~/.ssh/id_rsa

這將在您的終端上打印您的私人 ssh 密鑰,將其復(fù)制并粘貼到值字段中。

USERNAME

最后一個(gè)是您要進(jìn)行身份驗(yàn)證的 USERNAME 。

為此,您可以在服務(wù)器上運(yùn)行 whoami 并獲取值。然后在名稱字段中使用 USERNAME 關(guān)鍵字并在值中添加過去。

2\。我們的服務(wù)器向 Github 進(jìn)行身份驗(yàn)證并獲取我們存儲庫中的最新提交。

為了讓 Github 允許訪問我們的服務(wù)器,我們必須提供我們之前生成的 ssh 公鑰。

如果我們有多個(gè)倉庫,我們可以在帳戶級別提供公鑰,但如果它只是一個(gè)倉庫,我們可以在倉庫中提供它,并且只允許訪問我們帳戶上的那個(gè)倉庫。

為此,請?jiān)俅无D(zhuǎn)到您的倉庫設(shè)置并單擊部署密。

添加部署密鑰..

給它起一個(gè)有助于記住服務(wù)器的標(biāo)題,例如 PROD_SERVER。

對于關(guān)鍵字段值,轉(zhuǎn)到您的服務(wù)器并使用以下命令打印您的公鑰并復(fù)制它。

$ cat ~/.ssh/id_rsa.pub

不要檢查允許寫訪問,只需單擊添加密鑰按鈕。

最后一件事是更改我們服務(wù)器上的遠(yuǎn)程源以使用 SSH 而不是 HTTPS 并執(zhí)行獲取以獲取服務(wù)器上的新提交。

為此,請轉(zhuǎn)到您的 Github 存儲庫并單擊 code 按鈕并復(fù)制 ssh 選項(xiàng)卡上的鏈接。

然后在您的服務(wù)器上轉(zhuǎn)到您部署的應(yīng)用程序目錄,最常見的是 /var/html/www 并運(yùn)行以下命令。

git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
git fetch

將 URL 替換為您復(fù)制的 URL。

“如何用GitHub Actions自動部署Laravel項(xiàng)目”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!


新聞標(biāo)題:如何用GitHubActions自動部署Laravel項(xiàng)目
鏈接地址:http://weahome.cn/article/jdpjee.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部