# 開始 —— 安裝及配置
## 1、安裝
### 1.1 服務器要求
Laravel框架有少量的系統要求,當然,[Laravel Homestead](http://laravelacademy.org/post/51.html)?虛擬機滿足所有這些要求:
* PHP版本 >= 5.5.9
* PHP擴展:OpenSSL
* PHP擴展:PDO
* PHP擴展:Mbstring
* PHP擴展:Tokenizer
### 1.2 安裝Laravel
Laravel使用[Composer](http://getcomposer.org/)管理依賴,因此,使用Laravel之前,確保機器上已經安裝Composer。
### 1.2.1 通過Laravel安裝器
首先,通過Composer安裝Laravel安裝器:
~~~
composer global require "laravel/installer=~1.1"
~~~
確保`~/.composer/vendor/bin`在系統路徑PATH中,否則不能調用`laravel`命令。
安裝完成后,通過簡單的`laravel new`命令將會在當前目錄下創建一個新的Laravel應用,例如,`laravel?new?blog`將會創建一個名為`blog`的Laravel安裝目錄,該目錄中已經包含了所有Laravel依賴。該安裝方法比通過Composer安裝要快很多:
~~~
laravel new blog
~~~
### 1.2.2 通過Composer
你還可以在終端中通過Composer的`create-project`目錄來安裝Laravel:
~~~
composer create-project laravel/laravel --prefer-dist
~~~
該命令會在當前目錄中創建一個名為laravel的Laravel安裝,如果想要指定安裝目錄名,可通過如下命令:
~~~
composer create-project laravel/laravel blog --prefer-dist
~~~
該命令會在當前目錄中創建一個名為blog的Laravel安裝。
> 擴展閱讀 —— 實例教程:[在 Windows 中安裝 Laravel 5.1.X](http://laravelacademy.org/post/306.html)
## 2、配置
### 2.1 基本配置
Laravel框架的所有配置文件都存放在`config`目錄中,每一個選項都是文檔化(有良好注釋)的,所以隨便瀏覽所有配置文件去熟悉這些配置選項。
### 2.1.1 目錄權限
安裝完Laravel后,需要配置一些權限。`storage`和`bootstrap/cache`目錄應該是可寫的,如果你在使用[Homestead](http://laravelacademy.org/post/51.html)虛擬機,這些權限已經被設置好了。
### 2.1.2 應用Key
接下來要做的事情就是將應用key設置為一個隨機字符串,如果你是通過Composer或者Laravel安裝器安裝的話,該key的值已經通過`key:generate`命令生成好了。通常,該字符串應該是32位長,該key被配置在`.env`環境文件中(APP_KEY),如果你還沒有將`.env.example`文件重命名為`.env`,現在立即這樣做。如果應用key沒有被設置,用戶sessions和其它加密數據將會有安全隱患!
### 2.1.3 更多配置
Laravel幾乎不再需要其它任何配置就可以使用了,你可以自由地開始開發了!但是,你最好再看看`config/app.php`文件和它的文檔,其中包含了一些基于你的應用可能需要進行改變的配置,比如`timezone`和`locale`。
你可能還想要配置Laravel的一些其它組件,比如:
* [緩存](http://laravelacademy.org/post/176.html#ipt_kb_toc_176_0)
* [數據庫](http://laravelacademy.org/post/124.html#ipt_kb_toc_124_1)
* [Session](http://laravelacademy.org/post/230.html#ipt_kb_toc_230_1)
Laravel安裝完成后,你還應該[配置自己的本地環境](http://laravelacademy.org/post/46.html#environment-configuration),如數據庫驅動、郵箱服務器、緩存驅動等。
### 2.1.4 美化URL
* **Apache
框架中自帶的`public/.htaccess`文件支持URL中隱藏`index.php`,如過你的Laravel應用使用Apache作為服務器,需要先確保Apache啟用了`mod_rewrite`模塊以支持.htaccess解析。
如果Laravel自帶的`.htaccess`文件不起作用,試試將其中內容做如下替換:
~~~
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
~~~
* **Nginx
在Nginx中,使用如下站點配置指令就可以支持URL美化:
~~~
location / {
try_files $uri $uri/ /index.php?$query_string;
}
~~~
當然,使用[Homestead](http://laravelacademy.org/post/57.html)的話,以上配置已經為你配置好以支持URL美化。
### 2.2 環境配置
基于應用運行環境擁有不同配置值能夠給我們開發帶來極大的方便,比如,我們想在本地和線上環境配置不同的緩存驅動,在Laravel中這很容易實現。
Laravel中使用了Vance Lucas開發的PHP庫[DotEnv](https://github.com/vlucas/phpdotenv)來實現這一目的,在新安裝的Laravel中,根目錄下有一個`.env.example`文件,如果Laravel是通過Composer安裝的,那么該文件已經被重命名為`.env`,否則的話你要自己手動重命名該文件。
在每次應用接受請求時,`.env`中列出的所有變量都會被載入到PHP超全局變量`$_ENV`中,然后你就可以在應用中通過幫助函數`env`來獲取這些變量值。實際上,如果你去查看Laravel的配置文件,就會發現很多選項已經在使用這些幫助函數了。
你可以盡情的按你所需對本地服務器上的環境變量進行修改,線上環境也是一樣。但不要把`.env`文件提交到源碼控制(svn或git等)中,因為每個使用你的應用的不同開發者或服務器可能要求不同的環境配置。
如果你是在一個團隊中進行開發,你可能需要將`.env.example`文件隨你的應用一起提交到源碼控制中,通過將一些配置值以占位符的方式放置在`.env.example`文件中,其他開發者可以很清楚明了的知道運行你的應用需要配置哪些環境變量。
### 2.2.1 訪問當前應用環境
當前應用環境由`.env`文件中的`APP_ENV`變量決定,你可以通過`App`[門面](http://laravelacademy.org/post/97.html)的`environment`方法來訪問其值:
~~~
$environment = App::environment();
~~~
你也可以向`environment`方法中傳遞參數來判斷當前環境是否匹配給定值,如果需要的話你甚至可以傳遞多個值:
~~~
if (App::environment('local')) {
// The environment is local
}
if (App::environment('local', 'staging')) {
// The environment is either local OR staging...
}
~~~
應用實例也可以通過幫助函數`app`來訪問:
~~~
$environment = app()->environment();
~~~
### 2.3 配置緩存
為了給應用加速,你可以使用Artisan命令`config:cache`將所有配置文件合并到單個文件里,這將會將所有配置選項合并到單個文件從而可以被框架快速加載。
你應該將`config:cache`作為日常部署的一部分。
### 2.4 訪問配置值
你可以使用全局的幫助函數`config`來訪問配置值,配置值可以通過”.”來分隔配置文件和配置選項,如果配置選項不存在的話則會返回默認值:
~~~
$value = config('app.timezone');
~~~
如果要在運行時設置配置值,傳遞一個數組到`config`幫助函數:
~~~
config(['app.timezone' => 'America/Chicago']);
~~~
### 2.5 命名你的應用
安裝完成Laravel之后,你可能想要命名你的應用,默認情況下,app目錄處于命名空間App之下,然后Composer使用[PSR-4自動載入標準](https://github.com/PizzaLiu/PHP-FIG/blob/master/PSR-4-autoloader-cn.md)來自動載入該目錄,你可以使用Artisan命令`app:name`來改變該命名空間以匹配你的應用名稱。
比如,如果你的應用名稱是“Horsefly”,你可以在安裝根目錄下運行如下命令:
~~~
php artisan app:name Horsefly
~~~
來重命名應用的命名空間,當然你也可以繼續使用App作為命名空間不變。
## 3、維護模式
當你的站點處于維護模式時,所有對站點的請求都會返回同一個自定義視圖。當你在對站點進行升級或者維護時,這使得“關閉”站點變得輕而易舉,對維護模式的判斷代碼位于默認的中間件棧中,如果應用處于維護模式,則狀態碼為503的`HttpException`將會被拋出。
想要開啟維護模式,只需執行Artisan命令`down`即可:
~~~
php artisan down
~~~
關閉維護模式,對應的Artisan命令是`up`:
~~~
php artisan up
~~~
### 3.1 維護模式響應模板
默認的維護模式響應模板位于`resources/views/errors/503.blade.php`
### 3.2 維護模式 & 隊列
當你的站點處于維護模式中時,所有的[隊列任務](http://laravelacademy.org/post/222.html)都不會執行;當應用退出維護模式這些任務才會被繼續正常處理。
- 前言
- 序言
- 序言 ―― 發行版本說明
- 序言 ―― 升級指南
- 序言 ―― 貢獻代碼
- 開始
- 開始 ―― 安裝及配置
- 開始 ―― Laravel Homestead
- 基礎
- 基礎 ―― HTTP路由
- 基礎 ―― HTTP 中間件
- 基礎 ―― HTTP 控制器
- 基礎 ―― HTTP 請求
- 基礎 ―― HTTP 響應
- 基礎 ―― 視圖
- 基礎 ―― Blade模板
- 架構
- 架構 ―― 一次請求的生命周期
- 架構 ―― 應用目錄結構
- 架構 ―― 服務提供者
- 架構 ―― 服務容器
- 架構 ―― 契約
- 架構 ―― 門面
- 數據庫
- 數據庫 ―― 起步
- 數據庫 ―― 查詢構建器
- 數據庫 ―― 遷移
- 數據庫 ―― 填充數據
- Eloquent ORM
- Eloquent ORM ―― 起步
- Eloquent ORM ―― 關聯關系
- Eloquent ORM ―― 集合
- Eloquent ORM ―― 調整器
- Eloquent ORM ―― 序列化
- 服務
- 服務 ―― 用戶認證
- 服務 ―― Artisan 控制臺
- 服務 ―― Laravel Cashier(交易)
- 服務 ―― 緩存
- 服務 ―― 集合
- 服務 ―― Laravel Elixir
- 服務 ―― 加密
- 服務 ―― 錯誤&日志
- 服務 ―― 事件
- 服務 ―― 文件系統/云存儲
- 服務 ―― 哈希
- 服務 ―― 幫助函數
- 服務 ―― 本地化
- 服務 ―― 郵件
- 服務 ―― 包開發
- 服務 ―― 分頁
- 服務 ―― 隊列
- 服務 ―― Redis
- 服務 ―― Session
- 服務 ―― Envoy 任務運行器(SSH任務)
- 服務 ―― 任務調度
- 服務 ―― 測試
- 服務 ―― 驗證