Laravel 5.5 的安裝與配置
安裝
伺服器要求
Laravel 5.5 框架對PHP版本和擴充套件有一定要求:
- PHP >= 7.0.0
- PHP OpenSSL 擴充套件
- PHP PDO 擴充套件
- PHP Mbstring 擴充套件
- PHP Tokenizer 擴充套件
- PHP XML 擴充套件
滿足以上需求之後,就可以開始安裝 Laravel 了。
【 這些要求 Homestead 都已經滿足了,強烈推薦使用 Homestead 環境,當然 Docker 也很不錯。】
安裝 Laravel 5.5
Laravel 使用 Composer 管理依賴,所以,安裝之前確保已經在機器上安裝了 Composer。
開啟命令列,切換到你需要儲存到的目錄,通過 Composer Create-Project 進行安裝,具體命令如下:
composer create-project --prefer-dist laravel/laravel blog 5.5.*
說明:blog為專案的名稱,可更改。
配置
入口檔案
Laravel 5.5 採用單一入口檔案,檔名為 index.php,該檔案位於應用目錄的 public 目錄中。所有 HTTP 請求都會通過該檔案進入應用。
配置 web 伺服器的域名根目錄時,需要配置到 public 目錄。
Nginx
如果你使用的是 Nginx,使用如下站點配置指令就可以支援 URL 美化,即省略 index.php 入口檔案。
location / {
try_files $uri $uri/ /index.php?$query_string ;
}
當然,使用 Homestead 或 Valet 的話,以上配置已經為你配置好,無需額外操作。
配置檔案
Laravel 框架的所有配置檔案都存放在 config 目錄下,所有的配置項都有註釋說明。建議通讀一遍。
環境配置
基於應用執行的環境不同設定不同的配置值能夠給我們的開發帶來極大的方便,比如,我們通常在本地和線上環境配置不同的快取驅動和資料庫連線,這一功能在 Laravel 中很容易實現。
Laravel 使用 PHP 擴充套件庫 DotEnv 來實現這一功能,在新安裝的 Laravel 中,根目錄下有一個 .env.example 檔案,如果 Laravel 是通過 Composer 安裝的,那麼該檔案已經被重新命名為 .env,否則的話你要自己手動重新命名該檔案。
.env 檔案是 Laravel 的環境配置檔案,通過該檔案可以方便地實現不同執行環境的不同配置。
不要試圖將 .env 檔案提交到版本控制系統(如 Git 或 Svn )中。
一方面,開發環境和線上環境配置值不一樣,提交沒有意義;更重要的是,.env 檔案包含了很多的敏感資訊,如資料庫使用者名稱及密碼等,如果不慎將其提交到 Github 公開倉庫,後果將不堪設想!
可以建立一個 .env.testing 檔案,該檔案會在執行 PHPUnit 測試或執行帶有 --env=testing 選項的 Artisan 命令時覆蓋從 .env 檔案中讀取的值。
獲取環境變數配置值
應用每次接受請求時,.env 中列出的所有配置及其對應值都會被載入到 PHP 超全域性變數 $_ENV 中,然後你就可以在應用中通過輔助函式 env 來獲取這些配置值。
實際上,如果你去檢視 Laravel 的配置檔案,就會發現很多地方已經在使用這個輔助函數了:
'debug' => env('APP_DEBUG', false),
輔助函式 env() 有兩個引數:
- 第一個引數表示從 .env 檔案中讀取哪個環境變數配置項。
- 第二個引數是預設值,如果配置項沒有在 .env 檔案中被配置,就返回該預設值。
判斷當前應用的環境
當前應用環境由 .env 檔案中的 APP_ENV 變數決定,你可以通過 App 門面上的 environment 方法來訪問其值:
$environment = App::environment();
你也可以向 environment 方法傳遞引數來判斷當前環境是否匹配給定值,如果需要的話你甚至可以傳遞多個值。如果當前環境與給定值匹配,該方法返回 true:
if (App::environment('local')) {
// The environment is local
}
if (App::environment('local', 'staging')) {
// The environment is either local OR staging...
}
訪問配置值
你可以使用全域性輔助函式 config 在應用程式碼的任意位置訪問 config 目錄中的配置值。
配置值以檔名+“.”+配置項的方式進行訪問,當配置項沒有被配置的時候返回預設值:
$value = config('app.timezone');
如果要在執行時設定配置值,傳遞陣列引數到 config 方法即可:
config(['app.timezone' => 'Asia/Shanghai']);
快取配置檔案
為了給應用加速,你可以使用 Artisan 命令 config:cache 將所有配置檔案的配置快取到單個檔案裡,這將會將所有配置選項合併到單個檔案從而被框架快速載入。
php artisan config:cache
應用每次上線,都要執行一次 php artisan config:cache,但是在本地開發時,沒必要經常執行該命令,因為配置值經常會改變。
注:如果在部署過程中執行 config:cache 命令,需要確保只在配置檔案中呼叫了 env 方法。
目錄許可權
安裝完 Laravel 後,需要配置一些目錄的讀寫許可權:storage 和 bootstrap/cache 目錄對 Web 伺服器指定的使用者而言應該是可寫的,否則 Laravel 應用可能不會正常執行。
如果你使用 Homestead 虛擬機器做為開發環境,這些許可權已經設定好了。
配置時區
修改 config/app.php 配置檔案中的 timezone 配置項,設定為你當前所在的時區。
'timezone' => 'Asia/Shanghai',
維護模式
當你的應用處於維護模式時,所有對應用的請求都應該返回同一個自定義檢視。這一功能在對應用進行升級或者維護時,使得“關閉”站點變得輕而易舉。
對維護模式的判斷程式碼位於應用預設的中介軟體棧中,如果應用處於維護模式,訪問應用時狀態碼為 503 的 MaintenanceModeException 將會被丟擲。
開啟維護模式
要開啟維護模式,關閉站點,只需執行 Artisan 命令 down 即可:
php artisan down
還可以提供 message 和 retry 選項給 down 命令。message 的值用於顯示或記錄自定義訊息,而 retry 的值用於設定 HTTP 請求頭的 Retry-After:
php artisan down --message="Upgrading Database" --retry=60
注意:當你的站點處於維護模式時,所有的佇列任務都不會執行;當應用退出維護模式這些任務才會被繼續正常處理。
關閉維護模式
要關閉維護模式,開啟站點,對應的 Artisan 命令是 up:
php artisan up
自定義維護模式的檢視
如果想定義自己的模板來定製預設的維護模式模板,可以在 resources/views 目錄下新建 errors 目錄,然後在 errors 目錄中,建立 503.blade.php 檢視檔案。
例如,下面是 resources/views/errors/503.blade.php 檢視檔案的一個簡單示例:
<style>
div {
display: flex;
justify-content: center;
height: 20%;
align-items: center;
}
</style>
<div>
<h2>{{ $exception->getMessage() ? : '系統維護中,請稍候 ...' }}</h2>
</div>