怎麼用GitHub Actions自動部署Laravel專案?在本文中,我將逐步介紹如何在 VPS 上免費自動部署您的 Laravel 應用程式。
場景設定...
#我是部署在 VPS 上的 Laravel 專案的小團隊的一員。我們的每個團隊成員都將從事一項特定的任務,當它準備好投入生產時,總是需要有人訪問伺服器來部署正在推送到我們的 GitHub Repo 的每個變更。
這對我們所有人來說都是一項非常重複和令人不快的任務,需要在我們的規模和預算範圍內找到解決方案,這就是我們求助於強大的 Github Actions 來自動化我們的工作流程的時候。
讓我們深入了解我們的工作流程設定指南的簡化版本。
假設
#在本指南中,我假設您檢查了以下幾點。
你有一個配置好的 Linux 伺服器,它能夠運行 Laravel 應用程序,並且上面安裝了 Git。
你有一個 Laravel 應用程式 Github 儲存庫。你可以按照我上一篇文章的前 2 部分在這裡 free-serverless-laravel-deployment。
這個怎麼運作
##在典型的工作流程中,開發人員將為給定任務建立一個新分支,並向 main/master
分支發出拉取請求,或自行在 main/master
分支上進行更改(不可取) 並推送。
pull request
和 push
都是我們可以透過 Github Actions 訂閱的給定分支上的事件。因此,我們可以定義一組指令,當給定事件在我們的倉庫上發生時應該執行這些指令。這些指令可能正在執行我們的 Tests
,Builds
, 和 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.sh
和 deploy.yml
文件,我們提到了一個名為 production
的分支。我們將使用此分支新增透過 push
或 pull 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。
好了,我的朋友们,你现在有了 Laravel 应用程序部署自动化。 创建一个测试提交并将其推送到您的 production
分支,以见证奇迹发生。
您可以通过为您的测试构建、暂存环境等添加更多工作流来为它疯狂……
原文地址:https://dev.to/kenean50/automate-your-laravel-app-deployment-with-github-actions-2g7j
译文地址:https://learnku.com/laravel/t/69131
[Related recommendations: laravel video tutorial]
以上是聊聊怎麼用GitHub Actions自動部署Laravel項目的詳細內容。更多資訊請關注PHP中文網其他相關文章!

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

查找方法:1、用strpos(),语法“strpos("字符串值","查找子串")+1”;2、用stripos(),语法“strpos("字符串值","查找子串")+1”。因为字符串是从0开始计数的,因此两个函数获取的位置需要进行加1处理。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3漢化版
中文版,非常好用

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Dreamweaver Mac版
視覺化網頁開發工具