Laravel 框架有少量的系統(tǒng)要求,當(dāng)然,Laravel Homestead 虛擬機(jī)滿(mǎn)足所有這些要求:
Laravel 使用 Composer 管理依賴(lài),因此,使用 Laravel 之前,確保機(jī)器上已經(jīng)安裝 Composer。
首先,通過(guò) Composer 安裝 Laravel 安裝器:
composer global require "laravel/installer=~1.1"
確保 ~/.composer/vendor/bin
在系統(tǒng)路徑 PATH 中,否則不能調(diào)用 laravel
命令。
安裝完成后,通過(guò)簡(jiǎn)單的 laravel new
命令將會(huì)在當(dāng)前目錄下創(chuàng)建一個(gè)新的 Laravel 應(yīng)用,例如,laravel new blog
將會(huì)創(chuàng)建一個(gè)名為 blog
的 Laravel 安裝目錄,該目錄中已經(jīng)包含了所有 Laravel 依賴(lài)。該安裝方法比通過(guò) Composer 安裝要快很多:
laravel new blog
你還可以在終端中通過(guò) Composer 的 create-project
目錄來(lái)安裝 Laravel:
composer create-project laravel/laravel --prefer-dist
該命令會(huì)在當(dāng)前目錄中創(chuàng)建一個(gè)名為 laravel 的 Laravel 安裝,如果想要指定安裝目錄名,可通過(guò)如下命令:
composer create-project laravel/laravel blog --prefer-dist
該命令會(huì)在當(dāng)前目錄中創(chuàng)建一個(gè)名為 blog 的 Laravel 安裝。
擴(kuò)展閱讀 —— 實(shí)例教程:在 Windows 中安裝 Laravel 5.1.X
Laravel 框架的所有配置文件都存放在 config
目錄中,每一個(gè)選項(xiàng)都是文檔化(有良好注釋?zhuān)┑?,所以隨便瀏覽所有配置文件去熟悉這些配置選項(xiàng)。
安裝完 Laravel 后,需要配置一些權(quán)限。storage
和 bootstrap/cache
目錄應(yīng)該是可寫(xiě)的,如果你在使用 Homestead 虛擬機(jī),這些權(quán)限已經(jīng)被設(shè)置好了。
接下來(lái)要做的事情就是將應(yīng)用 key 設(shè)置為一個(gè)隨機(jī)字符串,如果你是通過(guò) Composer 或者 Laravel 安裝器安裝的話(huà),該 key 的值已經(jīng)通過(guò) key:generate
命令生成好了。通常,該字符串應(yīng)該是32位長(zhǎng),該 key 被配置在 .env
環(huán)境文件中(APP_KEY),如果你還沒(méi)有將 .env.example
文件重命名為 .env
,現(xiàn)在立即這樣做。如果應(yīng)用 key 沒(méi)有被設(shè)置,用戶(hù) sessions 和其它加密數(shù)據(jù)將會(huì)有安全隱患!
Laravel 幾乎不再需要其它任何配置就可以使用了,你可以自由地開(kāi)始開(kāi)發(fā)了!但是,你最好再看看 config/app.php
文件和它的文檔,其中包含了一些基于你的應(yīng)用可能需要進(jìn)行改變的配置,比如 timezone
和 locale
。
你可能還想要配置 Laravel 的一些其它組件,比如:
public/.htaccess
文件支持 URL 中隱藏 index.php
,如過(guò)你的 Laravel 應(yīng)用使用 Apache 作為服務(wù)器,需要先確保 Apache 啟用了 mod_rewrite
模塊以支持 .htaccess 解析。如果 Laravel 自帶的 .htaccess
文件不起作用,試試將其中內(nèi)容做如下替換:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
location / {
try_files $uri $uri/ /index.php?$query_string;
}
當(dāng)然,使用 Homestead 的話(huà),以上配置已經(jīng)為你配置好以支持 URL 美化。
基于應(yīng)用運(yùn)行環(huán)境擁有不同配置值能夠給我們開(kāi)發(fā)帶來(lái)極大的方便,比如,我們想在本地和線(xiàn)上環(huán)境配置不同的緩存驅(qū)動(dòng),在 Laravel 中這很容易實(shí)現(xiàn)。
Laravel 中使用了 Vance Lucas 開(kāi)發(fā)的 PHP 庫(kù) DotEnv 來(lái)實(shí)現(xiàn)這一目的,在新安裝的 Laravel 中,根目錄下有一個(gè) .env.example
文件,如果 Laravel 是通過(guò) Composer 安裝的,那么該文件已經(jīng)被重命名為 .env
,否則的話(huà)你要自己手動(dòng)重命名該文件。
在每次應(yīng)用接受請(qǐng)求時(shí),.env
中列出的所有變量都會(huì)被載入到 PHP 超全局變量 $_ENV
中,然后你就可以在應(yīng)用中通過(guò)幫助函數(shù) env 來(lái)獲取這些變量值。實(shí)際上,如果你去查看 Laravel 的配置文件,就會(huì)發(fā)現(xiàn)很多選項(xiàng)已經(jīng)在使用這些幫助函數(shù)了。
你可以盡情的按你所需對(duì)本地服務(wù)器上的環(huán)境變量進(jìn)行修改,線(xiàn)上環(huán)境也是一樣。但不要把 .env 文件提交到源碼控制(svn 或 git 等)中,因?yàn)槊總€(gè)使用你的應(yīng)用的不同開(kāi)發(fā)者或服務(wù)器可能要求不同的環(huán)境配置。
如果你是在一個(gè)團(tuán)隊(duì)中進(jìn)行開(kāi)發(fā),你可能需要將 .env.example
文件隨你的應(yīng)用一起提交到源碼控制中,通過(guò)將一些配置值以占位符的方式放置在 .env.example
文件中,其他開(kāi)發(fā)者可以很清楚明了的知道運(yùn)行你的應(yīng)用需要配置哪些環(huán)境變量。
當(dāng)前應(yīng)用環(huán)境由 .env
文件中的 APP_ENV
變量決定,你可以通過(guò) App 門(mén)面
的 environment
方法來(lái)訪(fǎng)問(wèn)其值:
$environment = App::environment();
你也可以向 environment
方法中傳遞參數(shù)來(lái)判斷當(dāng)前環(huán)境是否匹配給定值,如果需要的話(huà)你甚至可以傳遞多個(gè)值:
if (App::environment('local')) {
// The environment is local
}
if (App::environment('local', 'staging')) {
// The environment is either local OR staging...
}
應(yīng)用實(shí)例也可以通過(guò)幫助函數(shù) app
來(lái)訪(fǎng)問(wèn):
$environment = app()->environment();
為了給應(yīng)用加速,你可以使用 Artisan 命令 config:cache
將所有配置文件合并到單個(gè)文件里,這將會(huì)將所有配置選項(xiàng)合并到單個(gè)文件從而可以被框架快速加載。
你應(yīng)該將 config:cache
作為日常部署的一部分。
你可以使用全局的幫助函數(shù) config
來(lái)訪(fǎng)問(wèn)配置值,配置值可以通過(guò)”.”來(lái)分隔配置文件和配置選項(xiàng),如果配置選項(xiàng)不存在的話(huà)則會(huì)返回默認(rèn)值:
$value = config('app.timezone');
如果要在運(yùn)行時(shí)設(shè)置配置值,傳遞一個(gè)數(shù)組到 config
幫助函數(shù):
config(['app.timezone' => 'America/Chicago']);
安裝完成 Laravel 之后,你可能想要命名你的應(yīng)用,默認(rèn)情況下,app 目錄處于命名空間 App 之下,然后 Composer 使用 PSR-4 自動(dòng)載入標(biāo)準(zhǔn)來(lái)自動(dòng)載入該目錄,你可以使用 Artisan 命令 app:name
來(lái)改變?cè)撁臻g以匹配你的應(yīng)用名稱(chēng)。
比如,如果你的應(yīng)用名稱(chēng)是“Horsefly”,你可以在安裝根目錄下運(yùn)行如下命令:
php artisan app:name Horsefly
來(lái)重命名應(yīng)用的命名空間,當(dāng)然你也可以繼續(xù)使用 App 作為命名空間不變。
當(dāng)你的站點(diǎn)處于維護(hù)模式時(shí),所有對(duì)站點(diǎn)的請(qǐng)求都會(huì)返回同一個(gè)自定義視圖。當(dāng)你在對(duì)站點(diǎn)進(jìn)行升級(jí)或者維護(hù)時(shí),這使得“關(guān)閉”站點(diǎn)變得輕而易舉,對(duì)維護(hù)模式的判斷代碼位于默認(rèn)的中間件棧中,如果應(yīng)用處于維護(hù)模式,則狀態(tài)碼為503的 HttpException
將會(huì)被拋出。
想要開(kāi)啟維護(hù)模式,只需執(zhí)行 Artisan 命令 down
即可:
php artisan down
關(guān)閉維護(hù)模式,對(duì)應(yīng)的 Artisan 命令是 up
:
php artisan up
默認(rèn)的維護(hù)模式響應(yīng)模板位于 resources/views/errors/503.blade.php
當(dāng)你的站點(diǎn)處于維護(hù)模式中時(shí),所有的隊(duì)列任務(wù)都不會(huì)執(zhí)行;當(dāng)應(yīng)用退出維護(hù)模式這些任務(wù)才會(huì)被繼續(xù)正常處理。