484 lines
18 KiB
Markdown
484 lines
18 KiB
Markdown
# Installation
|
|
|
|
* Meet Laravel
|
|
* Why Laravel?
|
|
* Creating a Laravel Application
|
|
* Installing PHP and the Laravel Installer
|
|
* Creating an Application
|
|
* Initial Configuration
|
|
* Environment Based Configuration
|
|
* Databases and Migrations
|
|
* Directory Configuration
|
|
* Installation Using Herd
|
|
* Herd on macOS
|
|
* Herd on Windows
|
|
* IDE Support
|
|
* Laravel and AI
|
|
* Installing Laravel Boost
|
|
* Next Steps
|
|
* Laravel the Full Stack Framework
|
|
* Laravel the API Backend
|
|
|
|
## Meet Laravel
|
|
|
|
Laravel is a web application framework with expressive, elegant syntax. A web
|
|
framework provides a structure and starting point for creating your
|
|
application, allowing you to focus on creating something amazing while we
|
|
sweat the details.
|
|
|
|
Laravel strives to provide an amazing developer experience while providing
|
|
powerful features such as thorough dependency injection, an expressive
|
|
database abstraction layer, queues and scheduled jobs, unit and integration
|
|
testing, and more.
|
|
|
|
Whether you are new to PHP web frameworks or have years of experience, Laravel
|
|
is a framework that can grow with you. We'll help you take your first steps as
|
|
a web developer or give you a boost as you take your expertise to the next
|
|
level. We can't wait to see what you build.
|
|
|
|
### Why Laravel?
|
|
|
|
There are a variety of tools and frameworks available to you when building a
|
|
web application. However, we believe Laravel is the best choice for building
|
|
modern, full-stack web applications.
|
|
|
|
#### A Progressive Framework
|
|
|
|
We like to call Laravel a "progressive" framework. By that, we mean that
|
|
Laravel grows with you. If you're just taking your first steps into web
|
|
development, Laravel's vast library of documentation, guides, and [video
|
|
tutorials](https://laracasts.com) will help you learn the ropes without
|
|
becoming overwhelmed.
|
|
|
|
If you're a senior developer, Laravel gives you robust tools for [dependency
|
|
injection](/docs/12.x/container), [unit testing](/docs/12.x/testing),
|
|
[queues](/docs/12.x/queues), [real-time events](/docs/12.x/broadcasting), and
|
|
more. Laravel is fine-tuned for building professional web applications and
|
|
ready to handle enterprise work loads.
|
|
|
|
#### A Scalable Framework
|
|
|
|
Laravel is incredibly scalable. Thanks to the scaling-friendly nature of PHP
|
|
and Laravel's built-in support for fast, distributed cache systems like Redis,
|
|
horizontal scaling with Laravel is a breeze. In fact, Laravel applications
|
|
have been easily scaled to handle hundreds of millions of requests per month.
|
|
|
|
Need extreme scaling? Platforms like [Laravel
|
|
Cloud](https://cloud.laravel.com) allow you to run your Laravel application at
|
|
nearly limitless scale.
|
|
|
|
#### A Community Framework
|
|
|
|
Laravel combines the best packages in the PHP ecosystem to offer the most
|
|
robust and developer friendly framework available. In addition, thousands of
|
|
talented developers from around the world have [contributed to the
|
|
framework](https://github.com/laravel/framework). Who knows, maybe you'll even
|
|
become a Laravel contributor.
|
|
|
|
## Creating a Laravel Application
|
|
|
|
### Installing PHP and the Laravel Installer
|
|
|
|
Before creating your first Laravel application, make sure that your local
|
|
machine has [PHP](https://php.net), [Composer](https://getcomposer.org), and
|
|
[the Laravel installer](https://github.com/laravel/installer) installed. In
|
|
addition, you should install either [Node and NPM](https://nodejs.org) or
|
|
[Bun](https://bun.sh/) so that you can compile your application's frontend
|
|
assets.
|
|
|
|
If you don't have PHP and Composer installed on your local machine, the
|
|
following commands will install PHP, Composer, and the Laravel installer on
|
|
macOS, Windows, or Linux:
|
|
|
|
macOS Windows PowerShell Linux
|
|
|
|
|
|
|
|
1/bin/bash -c "$(curl -fsSL https://php.new/install/mac/8.4)"
|
|
|
|
|
|
/bin/bash -c "$(curl -fsSL https://php.new/install/mac/8.4)"
|
|
|
|
|
|
1# Run as administrator...
|
|
|
|
2Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://php.new/install/windows/8.4'))
|
|
|
|
|
|
# Run as administrator...
|
|
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://php.new/install/windows/8.4'))
|
|
|
|
|
|
1/bin/bash -c "$(curl -fsSL https://php.new/install/linux/8.4)"
|
|
|
|
|
|
/bin/bash -c "$(curl -fsSL https://php.new/install/linux/8.4)"
|
|
|
|
After running one of the commands above, you should restart your terminal
|
|
session. To update PHP, Composer, and the Laravel installer after installing
|
|
them via `php.new`, you can re-run the command in your terminal.
|
|
|
|
If you already have PHP and Composer installed, you may install the Laravel
|
|
installer via Composer:
|
|
|
|
|
|
|
|
1composer global require laravel/installer
|
|
|
|
|
|
composer global require laravel/installer
|
|
|
|
For a fully-featured, graphical PHP installation and management experience,
|
|
check out Laravel Herd.
|
|
|
|
### Creating an Application
|
|
|
|
After you have installed PHP, Composer, and the Laravel installer, you're
|
|
ready to create a new Laravel application. The Laravel installer will prompt
|
|
you to select your preferred testing framework, database, and starter kit:
|
|
|
|
|
|
|
|
1laravel new example-app
|
|
|
|
|
|
laravel new example-app
|
|
|
|
Once the application has been created, you can start Laravel's local
|
|
development server, queue worker, and Vite development server using the `dev`
|
|
Composer script:
|
|
|
|
|
|
|
|
1cd example-app
|
|
|
|
2npm install && npm run build
|
|
|
|
3composer run dev
|
|
|
|
|
|
cd example-app
|
|
npm install && npm run build
|
|
composer run dev
|
|
|
|
Once you have started the development server, your application will be
|
|
accessible in your web browser at <http://localhost:8000>. Next, you're ready
|
|
to start taking your next steps into the Laravel ecosystem. Of course, you may
|
|
also want to configure a database.
|
|
|
|
If you would like a head start when developing your Laravel application,
|
|
consider using one of our [starter kits](/docs/12.x/starter-kits). Laravel's
|
|
starter kits provide backend and frontend authentication scaffolding for your
|
|
new Laravel application.
|
|
|
|
## Initial Configuration
|
|
|
|
All of the configuration files for the Laravel framework are stored in the
|
|
`config` directory. Each option is documented, so feel free to look through
|
|
the files and get familiar with the options available to you.
|
|
|
|
Laravel needs almost no additional configuration out of the box. You are free
|
|
to get started developing! However, you may wish to review the
|
|
`config/app.php` file and its documentation. It contains several options such
|
|
as `url` and `locale` that you may wish to change according to your
|
|
application.
|
|
|
|
### Environment Based Configuration
|
|
|
|
Since many of Laravel's configuration option values may vary depending on
|
|
whether your application is running on your local machine or on a production
|
|
web server, many important configuration values are defined using the `.env`
|
|
file that exists at the root of your application.
|
|
|
|
Your `.env` file should not be committed to your application's source control,
|
|
since each developer / server using your application could require a different
|
|
environment configuration. Furthermore, this would be a security risk in the
|
|
event an intruder gains access to your source control repository, since any
|
|
sensitive credentials would be exposed.
|
|
|
|
For more information about the `.env` file and environment based
|
|
configuration, check out the full [configuration
|
|
documentation](/docs/12.x/configuration#environment-configuration).
|
|
|
|
### Databases and Migrations
|
|
|
|
Now that you have created your Laravel application, you probably want to store
|
|
some data in a database. By default, your application's `.env` configuration
|
|
file specifies that Laravel will be interacting with an SQLite database.
|
|
|
|
During the creation of the application, Laravel created a
|
|
`database/database.sqlite` file for you, and ran the necessary migrations to
|
|
create the application's database tables.
|
|
|
|
If you prefer to use another database driver such as MySQL or PostgreSQL, you
|
|
can update your `.env` configuration file to use the appropriate database. For
|
|
example, if you wish to use MySQL, update your `.env` configuration file's
|
|
`DB_*` variables like so:
|
|
|
|
|
|
|
|
1DB_CONNECTION=mysql
|
|
|
|
2DB_HOST=127.0.0.1
|
|
|
|
3DB_PORT=3306
|
|
|
|
4DB_DATABASE=laravel
|
|
|
|
5DB_USERNAME=root
|
|
|
|
6DB_PASSWORD=
|
|
|
|
|
|
DB_CONNECTION=mysql
|
|
DB_HOST=127.0.0.1
|
|
DB_PORT=3306
|
|
DB_DATABASE=laravel
|
|
DB_USERNAME=root
|
|
DB_PASSWORD=
|
|
|
|
If you choose to use a database other than SQLite, you will need to create the
|
|
database and run your application's [database
|
|
migrations](/docs/12.x/migrations):
|
|
|
|
|
|
|
|
1php artisan migrate
|
|
|
|
|
|
php artisan migrate
|
|
|
|
If you are developing on macOS or Windows and need to install MySQL,
|
|
PostgreSQL, or Redis locally, consider using [Herd
|
|
Pro](https://herd.laravel.com/#plans) or [DBngin](https://dbngin.com/).
|
|
|
|
### Directory Configuration
|
|
|
|
Laravel should always be served out of the root of the "web directory"
|
|
configured for your web server. You should not attempt to serve a Laravel
|
|
application out of a subdirectory of the "web directory". Attempting to do so
|
|
could expose sensitive files present within your application.
|
|
|
|
## Installation Using Herd
|
|
|
|
[Laravel Herd](https://herd.laravel.com) is a blazing fast, native Laravel and
|
|
PHP development environment for macOS and Windows. Herd includes everything
|
|
you need to get started with Laravel development, including PHP and Nginx.
|
|
|
|
Once you install Herd, you're ready to start developing with Laravel. Herd
|
|
includes command line tools for `php`, `composer`, `laravel`, `expose`,
|
|
`node`, `npm`, and `nvm`.
|
|
|
|
[Herd Pro](https://herd.laravel.com/#plans) augments Herd with additional
|
|
powerful features, such as the ability to create and manage local MySQL,
|
|
Postgres, and Redis databases, as well as local mail viewing and log
|
|
monitoring.
|
|
|
|
### Herd on macOS
|
|
|
|
If you develop on macOS, you can download the Herd installer from the [Herd
|
|
website](https://herd.laravel.com). The installer automatically downloads the
|
|
latest version of PHP and configures your Mac to always run
|
|
[Nginx](https://www.nginx.com/) in the background.
|
|
|
|
Herd for macOS uses [dnsmasq](https://en.wikipedia.org/wiki/Dnsmasq) to
|
|
support "parked" directories. Any Laravel application in a parked directory
|
|
will automatically be served by Herd. By default, Herd creates a parked
|
|
directory at `~/Herd` and you can access any Laravel application in this
|
|
directory on the `.test` domain using its directory name.
|
|
|
|
After installing Herd, the fastest way to create a new Laravel application is
|
|
using the Laravel CLI, which is bundled with Herd:
|
|
|
|
|
|
|
|
1cd ~/Herd
|
|
|
|
2laravel new my-app
|
|
|
|
3cd my-app
|
|
|
|
4herd open
|
|
|
|
|
|
cd ~/Herd
|
|
laravel new my-app
|
|
cd my-app
|
|
herd open
|
|
|
|
Of course, you can always manage your parked directories and other PHP
|
|
settings via Herd's UI, which can be opened from the Herd menu in your system
|
|
tray.
|
|
|
|
You can learn more about Herd by checking out the [Herd
|
|
documentation](https://herd.laravel.com/docs).
|
|
|
|
### Herd on Windows
|
|
|
|
You can download the Windows installer for Herd on the [Herd
|
|
website](https://herd.laravel.com/windows). After the installation finishes,
|
|
you can start Herd to complete the onboarding process and access the Herd UI
|
|
for the first time.
|
|
|
|
The Herd UI is accessible by left-clicking on Herd's system tray icon. A
|
|
right-click opens the quick menu with access to all tools that you need on a
|
|
daily basis.
|
|
|
|
During installation, Herd creates a "parked" directory in your home directory
|
|
at `%USERPROFILE%\Herd`. Any Laravel application in a parked directory will
|
|
automatically be served by Herd, and you can access any Laravel application in
|
|
this directory on the `.test` domain using its directory name.
|
|
|
|
After installing Herd, the fastest way to create a new Laravel application is
|
|
using the Laravel CLI, which is bundled with Herd. To get started, open
|
|
Powershell and run the following commands:
|
|
|
|
|
|
|
|
1cd ~\Herd
|
|
|
|
2laravel new my-app
|
|
|
|
3cd my-app
|
|
|
|
4herd open
|
|
|
|
|
|
cd ~\Herd
|
|
laravel new my-app
|
|
cd my-app
|
|
herd open
|
|
|
|
You can learn more about Herd by checking out the [Herd documentation for
|
|
Windows](https://herd.laravel.com/docs/windows).
|
|
|
|
## IDE Support
|
|
|
|
You are free to use any code editor you wish when developing Laravel
|
|
applications. If you're looking for lightweight and extensible editors, [VS
|
|
Code](https://code.visualstudio.com) or [Cursor](https://cursor.com) combined
|
|
with the official [Laravel VS Code
|
|
Extension](https://marketplace.visualstudio.com/items?itemName=laravel.vscode-
|
|
laravel) offers excellent Laravel support with features like syntax
|
|
highlighting, snippets, artisan command integration, and smart autocompletion
|
|
for Eloquent models, routes, middleware, assets, config, and Inertia.js.
|
|
|
|
[PhpStorm](https://www.jetbrains.com/phpstorm/laravel/) by JetBrains combined
|
|
with the [Laravel Idea plugin](https://laravel-idea.com/) provides extensive
|
|
support for Laravel and its ecosystem including Laravel Pint, Larastan, and
|
|
Pest. The framework support covers Blade templates, smart autocompletion for
|
|
Eloquent models, routes, views, translations, and components, along with
|
|
powerful code generation and navigation across Laravel projects.
|
|
|
|
For those seeking a cloud-based development experience, [Firebase
|
|
Studio](https://firebase.studio/) provides instant access to building with
|
|
Laravel directly in your browser. With zero setup required, Firebase Studio
|
|
makes it easy to start building Laravel applications from any device.
|
|
|
|
## Laravel and AI
|
|
|
|
[Laravel Boost](https://github.com/laravel/boost) is a powerful tool that
|
|
bridges the gap between AI coding agents and Laravel applications. Boost
|
|
provides AI agents with Laravel-specific context, tools, and guidelines so
|
|
they can generate more accurate, version-specific code that follows Laravel
|
|
conventions.
|
|
|
|
When you install Boost in your Laravel application, AI agents gain access to
|
|
over 15 specialized tools including the ability to know which packages you are
|
|
using, query your database, search the Laravel documentation, read browser
|
|
logs, generate tests, and execute code via Tinker.
|
|
|
|
In addition, Boost gives AI agents access to over 17,000 pieces of vectorized
|
|
Laravel ecosystem documentation, specific to your installed package versions.
|
|
This means agents can provide guidance targeted to the exact versions your
|
|
project uses.
|
|
|
|
Boost also includes Laravel-maintained AI guidelines that help agents to
|
|
follow framework conventions, write appropriate tests, and avoid common
|
|
pitfalls when generating Laravel code.
|
|
|
|
### Installing Laravel Boost
|
|
|
|
Boost can be installed in Laravel 10, 11, and 12 applications running PHP 8.1
|
|
or higher. To get started, install Boost as a development dependency:
|
|
|
|
|
|
|
|
1composer require laravel/boost --dev
|
|
|
|
|
|
composer require laravel/boost --dev
|
|
|
|
Once installed, run the interactive installer:
|
|
|
|
|
|
|
|
1php artisan boost:install
|
|
|
|
|
|
php artisan boost:install
|
|
|
|
The installer will auto-detect your IDE and AI agents, allowing you to opt
|
|
into the features that make sense for your project. Boost respects existing
|
|
project conventions and doesn't force opinionated style rules by default.
|
|
|
|
To learn more about Boost, check out the [Laravel Boost repository on
|
|
GitHub](https://github.com/laravel/boost).
|
|
|
|
## Next Steps
|
|
|
|
Now that you have created your Laravel application, you may be wondering what
|
|
to learn next. First, we strongly recommend becoming familiar with how Laravel
|
|
works by reading the following documentation:
|
|
|
|
* [Request Lifecycle](/docs/12.x/lifecycle)
|
|
* [Configuration](/docs/12.x/configuration)
|
|
* [Directory Structure](/docs/12.x/structure)
|
|
* [Frontend](/docs/12.x/frontend)
|
|
* [Service Container](/docs/12.x/container)
|
|
* [Facades](/docs/12.x/facades)
|
|
|
|
How you want to use Laravel will also dictate the next steps on your journey.
|
|
There are a variety of ways to use Laravel, and we'll explore two primary use
|
|
cases for the framework below.
|
|
|
|
### Laravel the Full Stack Framework
|
|
|
|
Laravel may serve as a full stack framework. By "full stack" framework we mean
|
|
that you are going to use Laravel to route requests to your application and
|
|
render your frontend via [Blade templates](/docs/12.x/blade) or a single-page
|
|
application hybrid technology like [Inertia](https://inertiajs.com). This is
|
|
the most common way to use the Laravel framework, and, in our opinion, the
|
|
most productive way to use Laravel.
|
|
|
|
If this is how you plan to use Laravel, you may want to check out our
|
|
documentation on [frontend development](/docs/12.x/frontend),
|
|
[routing](/docs/12.x/routing), [views](/docs/12.x/views), or the [Eloquent
|
|
ORM](/docs/12.x/eloquent). In addition, you might be interested in learning
|
|
about community packages like [Livewire](https://livewire.laravel.com) and
|
|
[Inertia](https://inertiajs.com). These packages allow you to use Laravel as a
|
|
full-stack framework while enjoying many of the UI benefits provided by
|
|
single-page JavaScript applications.
|
|
|
|
If you are using Laravel as a full stack framework, we also strongly encourage
|
|
you to learn how to compile your application's CSS and JavaScript using
|
|
[Vite](/docs/12.x/vite).
|
|
|
|
If you want to get a head start building your application, check out one of
|
|
our official [application starter kits](/docs/12.x/starter-kits).
|
|
|
|
### Laravel the API Backend
|
|
|
|
Laravel may also serve as an API backend to a JavaScript single-page
|
|
application or mobile application. For example, you might use Laravel as an
|
|
API backend for your [Next.js](https://nextjs.org) application. In this
|
|
context, you may use Laravel to provide [authentication](/docs/12.x/sanctum)
|
|
and data storage / retrieval for your application, while also taking advantage
|
|
of Laravel's powerful services such as queues, emails, notifications, and
|
|
more.
|
|
|
|
If this is how you plan to use Laravel, you may want to check out our
|
|
documentation on [routing](/docs/12.x/routing), [Laravel
|
|
Sanctum](/docs/12.x/sanctum), and the [Eloquent ORM](/docs/12.x/eloquent).
|
|
|