91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何用GitHub Actions自動部署Laravel項目

發布時間:2022-10-24 16:44:45 來源:億速云 閱讀:107 作者:iii 欄目:編程語言

本篇內容介紹了“如何用GitHub Actions自動部署Laravel項目”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

場景設置...#

我是一個部署在 VPS 上的 Laravel 項目的小團隊的一員。我們的每個團隊成員都將從事一項特定的任務,當它準備好投入生產時,總是需要有人訪問服務器來部署正在推送到我們的 GitHub Repo 的每個更改。

這對我們所有人來說都是一項非常重復和令人不快的任務,需要在我們的規模和預算范圍內找到解決方案,這就是我們求助于強大的 Github Actions 來自動化我們的工作流程的時候。

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

假設#

在本指南中,我假設您檢查了以下幾點。

  • 你有一個配置好的 Linux 服務器,它能夠運行 Laravel 應用程序,并且上面安裝了 Git。

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

這個怎么運作#

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

pull requestpush 都是我們可以通過 Github Actions 訂閱的給定分支上的事件。因此,我們可以定義一組指令,當給定事件在我們的倉庫上發生時應該執行這些指令。這些指令可能正在運行我們的 TestsBuilds, 和 Deployments

創建部署腳本

我們要做的第一件事是創建一個部署腳本,其中包含部署和運行我們的應用程序所需的所有命令。

在應用程序的根目錄中創建一個名為 .scripts 的文件夾。

.scripts 目錄中創建一個名為 deploy.sh 的文件,其內容如下。

#!/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!"

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

創建工作流

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

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

.github/workflows 文件夾中創建一個名為 deploy.yml 的文件,其中包含以下內容。

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"

提交新創建的文件

現在我們已經為我們的自動化創建了所有必要的文件,讓我們使用以下命令提交它們。

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

創建部署分支并推送到 Github

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

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

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

設置 ssh 密鑰

是時候在我們的服務器和 Github 之間建立連接了。

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

在您的服務器上運行此命令以生成 ssh 密鑰。

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

當提示輸入文件名和密碼時,只需按 Enter 并接受默認值。

這將在您的根目錄 .ssh/ 文件夾中創建 2 個 ssh 密鑰,公鑰和私鑰。

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

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

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

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

復制 ssh 密鑰到 Github

我們的上述設置將允許:-

1\。 Github Actions 向我們的服務器驗證自己并運行我們的 deploy.sh 腳本。

為此,我們必須讓 Github 知道如何對我們的服務器進行身份驗證。

當我們準備好上面的 ssh 密鑰時,它將與服務器的 HOST, ssh PORT, ssh 私鑰的 KEY, 以及服務器的 USERNAME 一起提供給 GitHub。

為此,請在瀏覽器上訪問您的 Github 帳戶并打開您的倉庫。

點擊 settings

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

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

HOST

HOST 是您的服務器 IP 地址,在名稱字段中輸入 HOST 關鍵字,在值中輸入您的服務器 IP 地址。

PORT

PORT 是您的 ssh 端口。在名稱中使用 PORT 關鍵字并在值中使用 22 以使用默認 ssh 端口。

SSHKEY

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

使用 SSHKEY 關鍵字作為名稱字段。

要復制您的私鑰值,請轉到您的服務器并運行以下命令。

$ cat ~/.ssh/id_rsa

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

USERNAME

最后一個是您要進行身份驗證的 USERNAME

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

2\。我們的服務器向 Github 進行身份驗證并獲取我們存儲庫中的最新提交。

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

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

為此,請再次轉到您的倉庫設置并單擊部署密。

添加部署密鑰..

給它起一個有助于記住服務器的標題,例如 PROD_SERVER

對于關鍵字段值,轉到您的服務器并使用以下命令打印您的公鑰并復制它。

$ cat ~/.ssh/id_rsa.pub

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

最后一件事是更改我們服務器上的遠程源以使用 SSH 而不是 HTTPS 并執行獲取以獲取服務器上的新提交。

為此,請轉到您的 Github 存儲庫并單擊 code 按鈕并復制 ssh 選項卡上的鏈接。

然后在您的服務器上轉到您部署的應用程序目錄,最常見的是 /var/html/www 并運行以下命令。

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

將 URL 替換為您復制的 URL。

“如何用GitHub Actions自動部署Laravel項目”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

清苑县| 都安| 阳高县| 榆中县| 砀山县| 新田县| 若尔盖县| 惠水县| 金秀| 收藏| 呼和浩特市| 莲花县| 清水河县| 得荣县| 伊川县| 上虞市| 裕民县| 怀化市| 密云县| 淮北市| 双桥区| 南岸区| 常州市| 聂荣县| 沁源县| 遂昌县| 翁源县| 万源市| 周至县| 靖西县| 阿图什市| 长汀县| 启东市| 齐齐哈尔市| 仪陇县| 高州市| 句容市| 英吉沙县| 彰化县| 千阳县| 高要市|