创建一个新的 Laravel 项目

正如官方文档所言,有两种方式可以创建一个新的 Laravel 项目,这两种创建方式都是从命令行执行的:第一种是通过全局的 Laravel 安装器,另一种是通过 Composer 的 create-project 命令。

推荐使用第一种方式,比较简单,而执行这两种方式之前,都需要系统已经安装过 PHP 和 Composer(如果使用 Valet 或 Laragon 的话,则应该已经安装过了,如果使用的是 Homestead 或 Laradock 的话,宿主环境也要安装下,便于后续操作,如果未曾安装,请参考 Valet 和 Laragon 安装教程)。

使用 Laravel 安装器安装

安装 Laravel 安装器很简单,在命令行执行以下命令即可(如果已经安装过,会自动进行更新):

composer global require laravel/installer 

安装完成后,后续就可以通过 laravel new [项目名称] 来创建新的 Laravel 项目了:

laravel new blog

该命令会在当前目录下创建一个新的名为 blog 的应用:

使用 Composer create-project 命令安装

除此之外,还可以通过 Composer 自带的 create-project 命令来安装新应用:

composer create-project laravel/laravel blog --prefer-dist

效果和上面使用安装器安装的一样,使用这个方式安装的一个好处是可以安装旧版本的 Laravel 项目,比如要安装 5.6 版本的项目 blog56 ,可以这么做:

composer create-project laravel/laravel blog56 5.6.* --prefer-dist

Laravel 应用的目录结构

安装完成后,我们来看一下新安装 Laravel 项目 blog 的目录结构:

目录

根目录默认包含一下一级子目录:

  • app:存放应用核心代码,如模型、控制器、命令、服务等
  • bootstrap:存放 Laravel 框架每次启动时用到的文件
  • config:用于存放项目所有配置文件
  • database:存放数据库迁移和填充类文件
  • public:Web 应用入口目录,用于存放入口文件 index.php 及前端资源文件(CSS、JS、图片等)
  • resources:用于存放与非 PHP 资源文件,如视图模板、语言文件、待编译的 Vue 模板、Sass、JS 源文件
  • routes:项目的所有路由文件都定义在这里
  • storage:用于存放缓存、日志、上传文件、已经编译过的视图模板等
  • tests:存放单元测试及功能测试代码
  • vendor:通过 Composer 安装的依赖包都存放在这里,通常该目录会放到 .gitignore 文件里以排除到版本控制系统之外

注:更多关于目录结构的信息,可参考官方文档

文件

  • .env.example/.env:用于配置环境变量,.env.example 是一个示例模板,而 .env 是真正的配置文件,由于包含敏感信息,通常也将其放到 .gitignore 文件中。
  • artisan:允许你在项目根目录下通过 php artisan 执行 Artisan 命令
  • .gitignore 和 .gitattributes:Git 配置文件
  • composer.json 和 composer.lock:Composer 配置文件
  • webpack.mix.js:Laravel Mix Webpack 配置文件,用于编译和打包前端资源
  • package.json:配置前端资源依赖和脚本(类似于 composer.json 之于 PHP)
  • phpunit.xml:PHPUnit 配置文件
  • server.php:用于通过 php artisan serve 启动 PHP 内置服务器进行一些简单的本地预览
  • yarn.lock:类似于 composer.lock 之于 Composer,指定 NPM 包版本
  • .editorconfig:用于在不同 IDE 或编辑器中维护代码风格的一致性

配置

Laravel 应用的一些核心配置,比如数据库、队列、邮件等,都位于 config 目录下,通过配置文件名称就可以很直观地甄别出不同的服务配置。这些配置文件都会返回一个数组,数组中的每个值都可以通过配置键获取(配置键以配置文件名为前缀,以「.」号分隔数组层级),例如,如果你在 config/services.php 中定义了如下配置:

// config/services.php
return [
'sparkpost' => [
'secret' => env('SPARKPOST_SECRET'),
],
];

然后,你就可以通过 config('services.sparkpost.secret') 来访问配置值。

如上例所示,所有的因环境而异的变量配置值(尤其是敏感信息)都应该存放到根目录下的 .env 环境变量文件中:

SPARKPOST_SECRET = xyj_laravelacademy.org

然后在配置文件中通过 env() 辅助函数传入键名 SPARKPOST_SECRET 来获取,这样做有两个好处:一是将敏感信息存放到版本控制系统(如 Git、Svn)之外,提高了系统的安全性;此外还可以方便我们在不同环境中(每个环境有自己独立的 .env 文件)使用不同的配置值,提高了代码的复用性和灵活性。

注:更多配置信息请参考官方文档

运行

安装好 Laravel 项目,了解了目录结构及其作用,以及如何对项目进行配置后,我们就可以运行这个应用了,启动方式因开发环境而异,我们在前面的 Homestead、Laradock、Valet 以及 Laragon 中已经分别演示过了,这里不再赘述,我们以 Laradock 为例,通过配置项目域名为 blog.test,在浏览器中访问 http://blog.test,即可看到应用首页:

Laravel 从入门到精通 创建并运行一个新的 Laravel 项目的更多相关文章

  1. Laravel 从入门到精通系列教程

    转载;https://laravelacademy.org/laravel-tutorial-5_7 适用于 Laravel 5.5.5.6.5.7 版本,本系列教程将围绕一个 LTS 版本,然后采取 ...

  2. WPF MVVM从入门到精通2:实现一个登录窗口

    原文:WPF MVVM从入门到精通2:实现一个登录窗口   WPF MVVM从入门到精通1:MVVM模式简介 WPF MVVM从入门到精通2:实现一个登录窗口 WPF MVVM从入门到精通3:数据绑定 ...

  3. Jmeter(五) - 从入门到精通 - 创建网络计划实战和创建高级Web测试计划(详解教程)

    1.简介 上一篇中宏哥已经将其的理论知识介绍了一下,这一篇宏哥就带着大家一步一步的把上一篇介绍的理论知识实践一下,然后再说一下如何创建高级web测试计划. 2.网络计划实战 通过上一篇的学习,宏哥将其 ...

  4. Jmeter(二) - 从入门到精通 - 创建测试计划(Test Plan)(详解教程)

    1.简介 上一篇中宏哥已经教你把JMeter的测试环境搭建起来了,那么这一篇我们就将JMeter启动起来,一睹其芳容,首先宏哥给大家介绍一下如何来创建一个测试计划(Test Plan). 2.创建一个 ...

  5. Jmeter(四) - 从入门到精通 - 创建网络测试计划(详解教程)

    1.简介 在本节中,您将学习如何创建基本的 测试计划来测试网站.您将创建五个用户,这些用户将请求发送到JMeter网站上的两个页面.另外,您将告诉用户两次运行测试.因此,请求总数为(5个用户)x(2个 ...

  6. NHibernate从入门到精通系列(3)——第一个NHibernate应用程序

    内容摘要 准备工作 开发流程 程序开发 一.准备工作 1.1开发环境 开发工具:VS2008以上,我使用的是VS2010 数据库:任意关系型数据库,我使用的是SQL Server 2005 Expre ...

  7. 如何运行一个分布式的Maven项目

    本人也属于一个新手小白,之前在公司运行的项目也都不涉及到maven...但是前两天运行一个maven项目的时候发现,第一次接触这个还是蛮让我措手不及的.在这里整理下自己当时走的弯路,或者遇到的一些问题 ...

  8. Node.js实战1:创建一个新的Node项目。

    你也许在猜专业的Node开发如何创建一个新项目. 有Npm在 ,这会非常简单. 虽然你可以创建一个JS文件,并执行:node file.js,但我建议你使用npm init来先创建一个node项目,这 ...

  9. Red5 1.0.0RC1 集成到tomcat6.0.35中运行&部署新的red5项目到tomcat中

    1.下载red5-war-1.0-RC1.zip 解压之得到 ROOT.war 文件. 2.处理tomcat. 下载apache-tomcat-6.0.35-windows-x86.zip包,解压到你 ...

随机推荐

  1. 消息中间件——RabbitMQ(八)高级特性全在这里!(下)

    前言 上一篇消息中间件--RabbitMQ(七)高级特性全在这里!(上)中我们介绍了消息如何保障100%的投递成功?,幂等性概念详解,在海量订单产生的业务高峰期,如何避免消息的重复消费的问题?,Con ...

  2. Java 并发编程(一):摩拳擦掌

    这篇文章的标题原本叫做——Java 并发编程(一):简介,作者名叫小二.但我在接到投稿时觉得这标题不够新颖,不够吸引读者的眼球,就在发文的时候强行修改了标题(也不咋滴). 小二是一名 Java 程序员 ...

  3. unity,C#,游戏面试笔试真题

    最开始的两家公司笔试面试题目 一家公司是学校聘请研究教育方面VR课件的公司,面试没几天,就收到了面试通过的消息,后面因为通过了另一家游戏公司而拒绝了. 另一家公司是一家游戏外企,在春熙路,当时笔试还可 ...

  4. python 生成式,生成器,迭代器,可迭代

    1.生成器就是迭代器2.生成式用[](中括号)包起来,生成器用()(圆括号)包起来3.生成式在使用前已经在内存中存在,生成器只有在使用时才生成4.迭代器是可以用.__next__()不断取出下一值,直 ...

  5. Date与String之间相互转换

    项目中经常用到,Date类型与String类型的转换,所以写个工具类 直接贴代码: package com.elite.isun.utils; import java.text.ParseExcept ...

  6. 深入理解static关键字

    class A{ public int i = 10; public void show(){ System.out.printf("%d",i); } } class M{ pu ...

  7. ACM-ICPC 2017 Asia Urumqi:A. Coins(DP) 组合数学

    Alice and Bob are playing a simple game. They line up a row of nn identical coins, all with the head ...

  8. codeforces 779 D. String Game(二分)

    题目链接:http://codeforces.com/contest/779/problem/D 题意:给你一段操作序列,按顺序依次删掉字符串1中相应位置的字符,问你最多能按顺序删掉多少个字符,使得s ...

  9. 安卓手机360浏览器神奇bug,难以理解的

    今天渠道组,说广告在安卓手机360浏览器上显示不了,我就去排查这个问题,发现所有安卓浏览器还真看不到广告,本来以为是360浏览器屏蔽了,,但是另一个项目就没事,后来经过几个小时的不断alert断点调试 ...

  10. Springboot集成swagger2生成接口文档

    [转载请注明]: 原文出处:https://www.cnblogs.com/jstarseven/p/11509884.html    作者:jstarseven    码字挺辛苦的.....   一 ...