[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']);
~~~