创建并运行一个新的 Laravel 项目

创建一个新的 Laravel 项目

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

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

使用 Laravel 安装器安装

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

composer global require laravel/installer
composer global require laravel/installer
Changed current directory to /Users/yshuq/.composer
Using version ^4.2 for laravel/installer
./composer.json has been created
Running composer update laravel/installer
Loading composer repositories with package information
Updating dependencies
Lock file operations: 13 installs, 0 updates, 0 removals
  - Locking laravel/installer (v4.2.10)
  - Locking psr/container (1.1.2)
  - Locking symfony/console (v5.4.3)
  - Locking symfony/deprecation-contracts (v2.5.0)
  - Locking symfony/polyfill-ctype (v1.24.0)
  - Locking symfony/polyfill-intl-grapheme (v1.24.0)
  - Locking symfony/polyfill-intl-normalizer (v1.24.0)
  - Locking symfony/polyfill-mbstring (v1.24.0)
  - Locking symfony/polyfill-php73 (v1.24.0)
  - Locking symfony/polyfill-php80 (v1.24.0)
  - Locking symfony/process (v5.4.3)
  - Locking symfony/service-contracts (v2.5.0)
  - Locking symfony/string (v5.4.3)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 13 installs, 0 updates, 0 removals
  - Downloading symfony/process (v5.4.3)
  - Downloading symfony/polyfill-intl-grapheme (v1.24.0)
  - Downloading symfony/string (v5.4.3)
  - Downloading symfony/console (v5.4.3)
  - Downloading laravel/installer (v4.2.10)
  - Installing symfony/polyfill-php80 (v1.24.0): Extracting archive
  - Installing symfony/process (v5.4.3): Extracting archive
  - Installing symfony/polyfill-mbstring (v1.24.0): Extracting archive
  - Installing symfony/polyfill-intl-normalizer (v1.24.0): Extracting archive
  - Installing symfony/polyfill-intl-grapheme (v1.24.0): Extracting archive
  - Installing symfony/polyfill-ctype (v

使用 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 中定义了如下配置: