[TOC]
## 1、安裝
#### 1.1 服務器要求
[Lumen](http://laravelacademy.org/tags/lumen "View all posts in Lumen")框架有少許的服務器要求,當然,[Laravel Homestead](http://laravelacademy.org/post/51.html)虛擬機滿足所有這些要求:
* PHP >= 5.5.9
* OpenSSL PHP Extension
* Mbstring PHP Extension
* Tokenizer PHP Extension
#### 1.2 安裝Lumen
Lumen使用[Composer](http://laravelacademy.org/tags/composer "View all posts in Composer")來管理依賴,所以,在使用之前,確保你已經在機器上安裝了Composer。
**通過Lumen安裝器**
首先,使用Composer下載Lumen安裝器:
~~~
composer global require "laravel/lumen-installer=~1.0"
~~~
確保`~/.composer/vendor/bin`在系統路徑PATH中,否則不能在命令行調用`lumen`命令。
安裝完成后,只需簡單通過`lumen new`命令就可以在當前目錄下創建一個新的Lumen應用,例如,`lumen new?blog`將會創建一個名為`blog`的Lumen安裝目錄,該目錄中已經包含了所有Lumen依賴。該安裝方法比通過Composer安裝要快很多:
~~~
lumen new blog
~~~
**通過Composer安裝**
你還可以在終端中通過Composer的`create-project`目錄來安裝Lumen:
~~~
composer create-project laravel/lumen --prefer-dist
~~~
## 2、配置
#### 2.1 基本配置
和完整Laravel框架有著多個配置文件不同,Lumen框架的所有配置項都放在單個`.env`?配置文件中。
**應用APP_KEY**
安裝完Lumen后,需要設置應用APP_KEY為32位長的隨機字符串,該key被配置在`.env`[環境](http://laravelacademy.org/tags/%e7%8e%af%e5%a2%83 "View all posts in 環境")文件中(APP_KEY),如果你還沒有將`.env.example`文件重命名為`.env`,現在立即這樣做。如果應用key沒有被設置,用戶sessions和其它加密數據將會有安全隱患!
> 注意:為了讓配置值被加載,你需要取消`bootstrap/app.php`文件中`Dotenv::load()`方法前面的注釋。
**更多配置**
Lumen幾乎不再需要其它任何配置就可以使用了,你可以自由地開始開發了!
你可能還想要配置Lumen的一些其它組件,比如:
* [緩存](http://laravelacademy.org/post/453.html)
* [數據庫](http://laravelacademy.org/post/455.html)
**美化URL**
* **[Apache](http://laravelacademy.org/tags/apache "View all posts in Apache")**
框架中自帶的`public/.htaccess`文件支持URL中隱藏`index.php`,如過你的Lumen應用使用Apache作為服務器,需要先確保Apache啟用了`mod_rewrite`模塊以支持`.htaccess`解析。
如果Lumen自帶的`.htaccess`文件不起作用,試試將其中內容做如下替換:
~~~
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
~~~
* **[Nginx](http://laravelacademy.org/tags/nginx "View all posts in Nginx")**
在Nginx中,使用如下站點配置指令就可以支持URL美化:
~~~
location / {
try_files $uri $uri/ /index.php?$query_string;
}
~~~
當然,使用[Homestead](http://laravelacademy.org/post/57.html)的話,以上配置已經為你配置好以支持URL美化。
#### 2.2 環境配置
基于應用運行環境擁有不同配置值能夠給我們開發帶來極大的方便,比如,我們想在本地和線上環境配置不同的緩存驅動,在Lumen中這很容易實現。
Lumen使用了Vance Lucas開發的PHP庫[DotEnv](https://github.com/vlucas/phpdotenv)來實現這一目的,在新安裝的Lumen中,根目錄下有一個`.env.example`文件,如果Lumen是通過Composer安裝的,那么該文件已經被重命名為`.env`,否則的話你要自己手動重命名該文件。
在每次應用接受請求時,`.env`中列出的所有變量都會被載入到PHP超全局變量`$_ENV`中,然后你就可以在應用中通過幫助函數`env`來獲取這些變量值。實際上,如果你去查看Lumen的配置文件,就會發現很多選項已經在使用這些幫助函數了。
你可以盡情的按你所需對本地服務器上的環境變量進行修改,線上環境也是一樣。但不要把`.env`文件提交到源碼控制(svn或git等)中,因為每個使用你的應用的不同開發者或服務器可能要求不同的環境配置。
如果你是在一個團隊中進行開發,你可能需要將`.env.example`文件隨你的應用一起提交到源碼控制中,通過將一些配置值以占位符的方式放置在`.env.example`文件中,其他開發者可以很清楚明了的知道運行你的應用需要配置哪些環境變量。
**配置文件**
你可以使用Laravel風格的配置文件,這些默認文件存放在`vendor/laravel/lumen-framework/config`目錄下,如果你將這些文件拷貝并粘貼到應用根目錄的`config`目錄下,Lumen將會使用這些配置文件。
使用完整的配置文件你將能夠對Lumen的配置有著更多的控制權,例如配置多個存儲“硬盤”或者數據庫讀/寫連接。
**自定義配置文件**
你還可以創建自定義的配置文件并使用`$app->configure()`方法來加載它們。例如,如果你的配置文件位于`config/options.php`,你可以像這樣加載它:
~~~
$app->configure('options');
~~~
**訪問當前應用環境**
你可以通過`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 訪問配置值
你可以使用全局的幫助函數`config`來訪問配置值,配置值可以通過”.”來分隔配置文件和配置選項,如果配置選項不存在的話則會返回默認值:
~~~
$value = config('app.timezone');
~~~
如果要在運行時設置配置值,傳遞一個數組到`config`幫助函數:
~~~
config(['app.timezone' => 'America/Chicago']);
~~~