# 开始 —— 安装及配置
## 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任务)
- 服务 ―― 任务调度
- 服务 ―― 测试
- 服务 ―― 验证