Laravel 5.5 文档 ] 快速入门 —— 安装配置篇
服务器要求
Laravel 框架对PHP版本和扩展有一定要求,不过这些要求 Laravel Homestead 都已经满足了,不过如果你没有使用 Homestead 的话(那真是一件很遗憾的事情),有必要了解下这些以便确认自己的环境满足要求:
- PHP >= 7.0.0
- PHP OpenSSL 扩展
- PHP PDO 扩展
- PHP Mbstring 扩展
- PHP Tokenizer 扩展
- PHP XML 扩展
满足以上需求之后,就可以开始安装 Laravel 了。
安装 Laravel
Laravel 使用 Composer 管理依赖,所以,安装之前确保已经在机器上安装了 Composer(如果尚未安装的话参考这篇文档去安装吧)。
通过 Laravel 安装器
首先,通过 Composer 安装 Laravel 安装器:
composer global require "laravel/installer"
确保 $HOME/.composer/vendor/bin
在系统路径中(Mac中对应路径是 ~/.composer/vendor/bin
,Windows对应路径是 ~/AppData/Roaming/Composer/vendor/bin
,其中 ~
表示当前用户家目录),否则不能在命令行任意路径下调用 laravel
命令。
安装完成后,通过简单的 laravel new
命令即可在当前目录下创建一个新的 Laravel 应用,例如,laravel new blog
将会创建一个名为 blog
的新应用,且包含所有 Laravel 依赖。该安装方法比通过 Composer 安装要快很多:
laravel new blog
如果之前已经安装过旧版本的 Laravel 安装器,需要更新后才能安装最新的 Laravel 5.5 框架应用:
composer global update
通过 Composer Create-Project
你还可以在终端中通过 Composer 的 create-project
命令来安装 Laravel 应用:
composer create-project --prefer-dist laravel/laravel blog
如果要下载安装 Laravel 其他版本应用,比如 5.4 版本,可以使用这个命令:
composer create-project --prefer-dist laravel/laravel blog 5.4.*
本地开发服务器
如果你在本地安装了 PHP,并且想要使用 PHP 内置的开发环境服务器为应用提供服务,可以使用 Artisan 命令 serve
:
php artisan serve
该命令将会在本地启动开发环境服务器,这样在浏览器中通过 http://localhost:8000
即可访问应用:

当然,更强大的本地开发环境选择还是 Homestead 和 Valet。
配置 Laravel
初始化配置
公共目录
安装完 Laravel 后,需要将 Web 服务器的 document/web 根目录指向 Laravel 应用的 public
目录,该目录下的 index.php
文件作为前端控制器(单一入口),所有 HTTP 请求都会通过该文件进入应用。
配置文件
Laravel 框架的所有配置文件都存放在 config
目录下,所有的配置项都有注释,所以你可以轻松遍览这些配置文件以便熟悉所有配置项。
目录权限
安装完 Laravel 后,需要配置一些目录的读写权限:storage
和 bootstrap/cache
目录对 Web 服务器指定的用户而言应该是可写的,否则 Laravel 应用将不能正常运行。如果你使用 Homestead 虚拟机做为开发环境,这些权限已经设置好了。
应用key
接下来要做的事情就是将应用的 key(APP_KEY)设置为一个随机字符串,如果你是通过 Composer 或者 Laravel 安装器安装的话,该 key 的值已经通过 php artisan key:generate
命令生成好了。
通常,该字符串应该是 32 位长,通过 .env
文件中的 APP_KEY
进行配置,如果你还没有将 .env.example
文件重命名为 .env
,现在立即这样做。如果应用 key 没有被设置,用户 Session 和其它加密数据将会有安全隐患!
更多配置
Laravel 几乎不再需要其它任何配置就可以正常使用了,不过,你最好再看看 config/app.php
文件,其中包含了一些基于应用可能需要进行改变的配置,比如 timezone
和 locale
(分别用于配置时区和本地化)。
你可能还想要配置 Laravel 的一些其它组件,比如缓存、数据库、Session 等,关于这些我们将会在后续文档一一探讨。
Web 服务器配置
关于虚拟主机的配置(映射域名到Laravel应用目录)略过,如果了解细节可参考这篇教程,当然也可以留待下一篇讲 Homestead 和 Valet 再去了解。本文只探讨如何美化 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 或 Valet 的话,以上配置已经为你配置好,无需额外操作。
环境配置
基于应用运行的环境不同设置不同的配置值能够给我们开发带来极大的方便,比如,我们通常在本地和线上环境配置不同的缓存驱动,这一功能在 Laravel 中很容易实现。
Laravel 使用 PHP 扩展库 DotEnv 来实现这一功能,在新安装的 Laravel 中,根目录下有一个 .env.example
文件,如果 Laravel 是通过 Composer 安装的,那么该文件已经被重命名为 .env
,否则的话你要自己手动重命名该文件。
不要试图将 .env
文件提交到版本控制系统(如Git或Svn)中,一方面,开发环境和线上环境配置值不一样,提交没有意义,更重要的是,.env
包含了很多应用敏感信息,如数据库用户名及密码等,如果不慎将代码提交到 Github 公开仓库,后果将不堪设想!
如果你是在一个团队中进行开发,则需要将 .env.example
文件随你的应用代码一起提交到源码控制中:将一些配置值以占位符的方式放置在 .env.example
文件中,这样其他开发者就会很清楚运行你的应用需要配置哪些环境变量。
还可以创建一个 .env.testing
文件,该文件会在运行 PHPUnit 测试或执行带有 --env=testing
选项的 Artisan 命令时覆盖从 .env
文件读取的值。
获取环境变量配置值
应用每次接受请求时,.env
中列出的所有配置及其对应值都会被载入到 PHP 超全局变量 $_ENV
中,然后你就可以在应用中通过辅助函数 env
来获取这些配置值。实际上,如果你去查看 Laravel 的配置文件,就会发现很多地方已经在使用这个辅助函数了:
'debug' => env('APP_DEBUG', false),
传递到 env
函数的第二个参数是默认值,如果环境变量没有被配置将会使用该默认值。
判断当前应用环境
当前应用环境由 .env
文件中的 APP_ENV
变量决定,你可以通过 App
门面上的 environment
方法来访问其值:
$environment = App::environment();
你也可以向 environment
方法传递参数来判断当前环境是否匹配给定值,如果需要的话你甚至可以传递多个值。如果当前环境与给定值匹配,该方法返回 true
:
if (App::environment('local')) {
// The environment is local
}
if (App::environment('local', 'staging')) {
// The environment is either local OR staging...
}
访问配置值
你可以使用全局辅助函数 config
在应用代码的任意位置访问配置值,配置值以文件名+“.”+配置项的方式进行访问,当配置项没有被配置的时候返回默认值:
$value = config('app.timezone');
如果要在运行时设置配置值,传递数组参数到 config
方法即可:
config(['app.timezone' => 'Asia/Shanghai']);
缓存配置文件
为了给应用加速,你可以使用 Artisan 命令 config:cache
将所有配置文件的配置缓存到单个文件里,这将会将所有配置选项合并到单个文件从而被框架快速加载。
应用每次上线,都要运行一次 php artisan config:cache
,但是在本地开发时,没必要经常运行该命令,因为配置值经常会改变。
注:如果在部署过程中执行
config:cache
命令,需要确保只在配置文件中调用了env
方法。
维护模式
当你的应用处于维护模式时,所有对应用的请求都应该返回同一个自定义视图。这一功能在对应用进行升级或者维护时,使得“关闭”站点变得轻而易举。对维护模式的判断代码位于应用默认的中间件栈中,如果应用处于维护模式,访问应用时状态码为 503
的 MaintenanceModeException
将会被抛出。
要开启维护模式,关闭站点,只需执行 Artisan 命令 down
即可:
php artisan down
还可以提供 message
和 retry
选项给 down
命令。message
的值用于显示或记录自定义消息,而 retry
的值用于设置 HTTP 请求头的 Retry-After
:
php artisan down --message="Upgrading Database" --retry=60
要关闭维护模式,开启站点,对应的 Artisan 命令是 up
:
php artisan up
注:你可以通过定义自己的模板来定制默认的维护模式模板,自定义模板视图位于
resources/views/errors/503.blade.php
。
维护模式 & 队列
当你的站点处于维护模式中时,所有的队列任务都不会执行;当应用退出维护模式这些任务才会被继续正常处理。
维护模式的替代方案
由于维护模式命令的执行需要几秒时间,你可以考虑使用 Envoyer 实现 0 秒下线作为替代方案。
原文 https://laravelacademy.org/post/7620.html
Laravel 5.5 文档 ] 快速入门 —— 安装配置篇的更多相关文章
- [ Laravel 5.5 文档 ] 快速入门 —— 目录结构篇
简介 Laravel 默认的目录结构试图为不管是大型应用还是小型应用提供一个良好的起点.当然,你也可以按照自己的喜好重新组织应用的目录结构,因为 Laravel 对于指定类在何处被加载没有任何限制 — ...
- [ Laravel 5.5 文档 ] 处理用户请求 —— HTTP 请求的过滤器:中间件
[ Laravel 5.5 文档 ] 处理用户请求 —— HTTP 请求的过滤器:中间件 http://laravelacademy.org/post/7812.html 简介 中间件为过滤进入应用的 ...
- webpack快速入门——插件配置:HTML文件的发布
1.把dist中的index.html复制到src目录中,并去掉我们引入的js 2.在webpack.config.js中引入 const htmlPlugin = require('html-web ...
- Java快速入门-01-基础篇
Java快速入门-01-基础篇 如果基础不好或者想学的很细,请参看:菜鸟教程-JAVA 本笔记适合快速学习,文章后面也会包含一些常见面试问题,记住快捷键操作,一些内容我就不转载了,直接附上链接,嘻嘻 ...
- 使用Docsify做文档网站的详细配置教程
使用Docsify做文档网站的详细配置教程 作者:xhemj 没错,它叫Docsify. xhemj的文档中心就是用这个写的 开源地址:https://github.com/docsifyjs/doc ...
- .NET Core实战项目之CMS 第五章 入门篇-Dapper的快速入门看这篇就够了
写在前面 上篇文章我们讲了如在在实际项目开发中使用Git来进行代码的版本控制,当然介绍的都是比较常用的功能.今天我再带着大家一起熟悉下一个ORM框架Dapper,实例代码的演示编写完成后我会通过Git ...
- Java快速入门-02-基础篇
Java快速入门-02-基础篇 上一篇应该已经让0基础的人对 Java 有了一些了解,接一篇更进一步 使用 Eclipse 快捷键 这个老师一般都经常提,但是自己不容易记住,慢慢熟练 快捷键 快捷键作 ...
- Scala快速入门 - 基础语法篇
本篇文章首发于头条号Scala快速入门 - 基础语法篇,欢迎关注我的头条号和微信公众号"大数据技术和人工智能"(微信搜索bigdata_ai_tech)获取更多干货,也欢迎关注我的 ...
- requests库的文档--快速上手
快速上手 迫不及待了吗?本页内容为如何入门 Requests 提供了很好的指引.其假设你已经安装了 Requests.如果还没有,去安装一节看看吧. 首先,确认一下: Requests 已安装 Req ...
随机推荐
- WebService(基于AXIS的WebService编程)
一.服务端代码 1.创建Maven工程 注意pom.xml文件的配置,需要引入axis的相关包 <project xmlns="http://maven.apache.org/POM/ ...
- centos7搭建filebeat
filebeat的环境搭建 cd /home/elk wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.2.4 ...
- 如何利用”七牛云”在UEditor实现图片的上传和浏览
在学习之前,我参考了朋友些的一篇关于这个功能实现的文章,非常不错.大家可以参考:http://www.cnblogs.com/John-Marnoon/p/5818528.html#3501846 里 ...
- oracle 相除后保留指定位数小数round()
) xxx from dual; XXX---------- 3.8871
- C# 中堆与栈的浅记
C# 中堆与栈的浅记 什么是堆和栈? 简言之.堆和栈是驻留在内存中的区域,它们的作用是帮助我们运行代码.在.Net Framework 环境下,当我们的代码运行时,内存中的堆和栈便存储了这些代码,并包 ...
- Docker中运行Dockerfile时报错“cannot allocate memory”
今天运行Dockerfile脚本时报错了,现记录下来: Step / : RUN -bin/myagent symlink /proc/mounts /var/lib/docker/overlay/2 ...
- bitcoin 源码解析 - 交易 Transaction(二) - 原理篇
这篇文章我断断续续写了呃···· 应该快三个星期了? 所以前后的风格可能差别相当大.真是十分的怠惰啊··· 最近实在是不够努力.用python重写bitcoin的项目也卡在网络编程部分(这方面真是我的 ...
- item 4: 知道怎么去看推导的类型
本文翻译自modern effective C++,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 博客已经迁移到这里啦 对于推导类型结果的查看,根据不同的软件开发阶段,你想知道的信息的不 ...
- Java 基础之一对象导论
对象导论 1.1 抽象过程 所有编程语言都提供抽象机制.人们所能解决的问题的复杂性直接取决于抽象的类型和质量. 汇编语言是对底层机器的轻微抽象. 我们将问题空间中的元素及其再解空间中的表示称为对象.这 ...
- 我的devops实践经验分享一二
前言 随着系统越来越大,开发人员.站点.服务器越来越多,微服务化推进,......等等原因,实现自动化的devops越来越有必要. 当然,真实的原因是,在团队组建之初就预见到了这些问题,所以从一开始就 ...