iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 6
1
Software Development

30天開發與部署 Laravel 專案系列 第 6

Laravel 環境設定檔

Laravel除了config資料夾可以處理特定開發情境之外,還有.env做更細節的規範。

.env

在專案資料夾中可以發現兩個與 .env 有關的檔案

.env
.env.example

個人是把.env當作一種全域變數來看待,Laravel會取用裡頭的設定檔。
但因 .gitignore的關係,部署gcp時可能一開始會找不到.env,到時候可以複製 .env.example進行設定。

以下就個人常用與已知的設定部分進行說明

app基本設定區

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:ABCDDSFSFASFDCZCCDDFFDSAFFDSF
APP_DEBUG=true
APP_URL=http://localhost

  • app key若是空值的, 可透過 php artisan generate key 產生一組。
  • APP_NAME可以改,在code裡頭可以透過透過 'name' => env('APP_NAME') 提取。

log相關

LOG_CHANNEL=stack
  • 可改為 LOG_CHANNEL=daily,就會依據日期產生檔名為每日的 log檔。
  • stack、daily 的相關設定檔可以到 config/logging.php 確認。

database相關

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=

這部分是設定如何連線資料庫的方式,需設定使用使用者名稱、使用者密碼、資料庫名稱。
如同設定database GUI tool一般,讓專案可以順利連上資料庫。

mail server設定

MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="${APP_NAME}"
  • 可看到目前預設 mailtrap 為郵件伺服器的預設對象。
  • 可到mailtrap或gmail申請相關服務,取得 MAIL_HOST、 MAIL_USERNAME、 MAIL_PASSWORD、MAIL_ENCRYPTION、MAIL_FROM_ADDRESS等設定值。

aws相關設定

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=

也有人的做法是透過composer處理AWS的設定,目前個人使用gcp這段code無需修改

pusher相關設定


BROADCAST_DRIVER=log  

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

可用用Pusher來實作推播通知

其他env設定

JWT
如果使用JWT驗證會產生 JWT_SECRET

JWT_SECRET=GsadsadsadasdafasdfasdfsasczxvdffqewdewfLoQju8O7vV

SESSION
SESSION_DRIVER=file
SESSION_LIFETIME=120

Laravel的session跟php原生略有差異,如果想延長時效或進階設定可以從這處理。

緩存
CACHE_DRIVER=file
還有array、memcached、redis、database等選項,但仍有其他檔案要設定才能啟用。


時區設定

情境:
因為Laravel預設處理時間的方式是timestamp,如果希望時間為開發者當下時區時,需要額外設定顯示時間的時區。

方法:
進入 config/app.php

'timezone' => 'UTC',
改為
'timezone' => 'Asia/Taipei',

設定完成後,基本上database顯示的時間會以當下的時區為主。


參考資料
https://laracasts.com/discuss/channels/laravel/incorrect-time-in-created-at?page=1
https://docs.laravel-dojo.com/laravel/5.5/configuration#environment-configuration

https://artisansweb.net/sending-email-via-gmail-smtp-server-laravel/
https://cloud.tencent.com/developer/article/1627439
https://ithelp.ithome.com.tw/articles/10231475


上一篇
Laravel 目錄結構
下一篇
版控工具:git
系列文
30天開發與部署 Laravel 專案30

尚未有邦友留言

立即登入留言