部署 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 中擁有的密鑰相符。
使用完整編輯模式功能一次貼上所有內容。
最後,新增密鑰 HELLO
。將值設定為 production
。
然後建置您的加密 .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 功能。
您已成功使用新的 .env.vault 標準來加密和部署您的密鑰。這比將您的密鑰分散在多個第三方平台和工具上安全得多。每當您需要新增或變更密鑰時,只需重建您的 .env.vault 檔案並重新部署即可。