部署 Laravel 應用程式至 Laravel Forge

將帶有加密 .env.vault 檔案的 Laravel 應用程式部署至 Laravel Forge。

初始設定

安裝 Laravel 並建立新的 Laravel 專案。

composer create-project laravel/laravel yourapp

編輯 resources/views/welcome.blade.php

resources/views/welcome.blade.php

Hello {{ env('HELLO') }}.

將其提交至程式碼並推送至 GitHub

git commit -am "Initial setup"
git push

接著,在 Laravel Forge 上建立您的專案。

Laravel Forge 設定

連線您的提供者 (如果您尚未連線)。在這裡,我連線 Digital Ocean

接著,前往 伺服器頁面並點擊 建立伺服器

Laravel Forge 將使用它所需的一切來引導該伺服器。請稍候幾分鐘才能完成。

最後,將該伺服器連線至您在 GitHub 上的 Laravel 應用程式。

點擊 安裝儲存庫。Laravel Forge 會將您的應用程式安裝到您的伺服器。這需要幾分鐘,您可能需要重新整理頁面。

接著,前往您的應用程式儀表板並點擊 立即部署

部署完成後,您可以瀏覽您伺服器的 IP 位址。(我無法在 Laravel Forge 的儀表板中找到它。我必須前往 Digital Ocean 並檢視 Droplet。)

您的瀏覽器可能會警告您 IP 位址很危險,但您可以跳過它並直接前往。

您的應用程式會顯示 'Hello .',因為它還沒有存取環境變數的方式。接下來讓我們執行此操作。

安裝 dotenv-vault-laravel

在您的 composer.json 檔案中需要 dotenv-vault-laravel

composer require davidcochrum/dotenv-vault-laravel

composer.json

...
"require": {
  "davidcochrum/dotenv-vault-laravel": "^1.1",
  ...
}
...

HELLO=World 新增至您的 .env 檔案底部。

.env

...
HELLO="World"

嘗試在本地執行它。

php artisan serve
INFO  Server running on [http://127.0.0.1:8000]

它應該顯示 Hello World

太棒了!ENV 現在有您在 .env 檔案中定義的索引鍵和值。這涵蓋了本地開發。接下來讓我們解決生產環境的問題。

建置 .env.vault

推送您最新的 .env 檔案變更並編輯您的生產密鑰。 深入了解同步 .env 檔案

npx dotenv-vault@latest new
npx dotenv-vault@latest push
npx dotenv-vault@latest open production

將所有這些密鑰設定為與您在 Laravel Forge 中擁有的密鑰相符。

使用完整編輯模式功能一次貼上所有內容。

www.dotenv.org

最後,新增密鑰 HELLO。將值設定為 production

www.dotenv.org

然後建置您的加密 .env.vault 檔案。

npx dotenv-vault@latest build

其內容應如下所示。

.env.vault

#/-------------------.env.vault---------------------/
#/         cloud-agnostic vaulting standard         /
#/   [how it works](https://dotenv.org/env-vault)   /
#/--------------------------------------------------/

# development
DOTENV_VAULT_DEVELOPMENT="/HqNgQWsf6Oh6XB9pI/CGkdgCe6d4/vWZHgP50RRoDTzkzPQk/xOaQs="
DOTENV_VAULT_DEVELOPMENT_VERSION=2

# production
DOTENV_VAULT_PRODUCTION="x26PuIKQ/xZ5eKrYomKngM+dO/9v1vxhwslE/zjHdg3l+H6q6PheB5GVDVIbZg=="
DOTENV_VAULT_PRODUCTION_VERSION=2

設定 DOTENV_KEY

擷取您的生產 DOTENV_KEY

npx dotenv-vault@latest keys production
# outputs: dotenv://:[email protected]/vault/.env.vault?environment=production

使用 UI 在 Laravel Forge 上設定 DOTENV_KEY

您可以移除所有其他環境變數,因為這些變數現在以加密方式存在於您的 .env.vault 檔案中。

部署

將這些變更安全地提交至程式碼並部署。

就是這樣!在部署時,您的 .env.vault 檔案將會解密,並且其生產密鑰會及時注入為環境變數。

當您在記錄中看到 Loading env from encrypted .env.vault 時,您就會知道一切運作正常。如果未設定 DOTENV_KEY (例如,在您的本機電腦上開發時),它將會回復為標準 phpdotenv 功能。