Deployment

Introduction

当您准备好将 Laravel 应用程序部署到生产环境时,您可以做一些重要的事情来确保您的应用程序尽可能高效地运行。在本文档中,我们将介绍一些很好的起点,以确保正确部署 Laravel 应用程序。

服务器要求

Laravel 框架有一些系统要求。您应该确保您的 Web 服务器具有以下最低 PHP 版本和扩展:

  • PHP >= 8.1
  • Ctype PHP 扩展
  • 卷曲 PHP 扩展
  • DOM PHP 扩展
  • 文件信息 PHP 扩展
  • 过滤 PHP 扩展
  • 哈希 PHP 扩展
  • Mbstring PHP 扩展
  • OpenSSL PHP 扩展
  • PCRE PHP 扩展
  • PDO PHP 扩展
  • 会话 PHP 扩展
  • 分词器 PHP 扩展
  • XML PHP 扩展

服务器配置

Nginx

如果您将应用程序部署到运行 Nginx 的服务器,您可以使用以下配置文件作为配置 Web 服务器的起点。很可能需要根据服务器的配置自定义此文件。如果你需要管理服务器方面的帮助,请考虑使用第一方 Laravel 服务器管理和部署服务,例如Laravel 锻造.

请确保,就像下面的配置一样,您的网络服务器将所有请求定向到您的应用程序的public/index.php 文件。你不应该试图移动index.php 文件到项目的根目录,因为从项目根目录提供应用程序会将许多敏感的配置文件暴露给公共互联网:

server {
    listen 80;
    listen [::]:80;
    server_name example.com;
    root /srv/example.com/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";

    index index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}

Optimization

自动加载器优化

部署到生产环境时,请确保您正在优化 Composer 的类自动加载器映射,以便 Composer 可以快速找到要为给定类加载的正确文件:

composer install --optimize-autoloader --no-dev

Note
除了优化自动加载器之外,您应该始终确保包含一个composer.lock 项目的源代码控制存储库中的文件。当一个composer.lock 文件存在。

优化配置加载

将应用程序部署到生产环境时,您应该确保运行config:cache 部署过程中的 Artisan 命令:

php artisan config:cache

此命令会将 Laravel 的所有配置文件合并到一个缓存文件中,这大大减少了框架在加载配置值时必须对文件系统进行的访问次数。

Warning
如果你执行config:cache 命令在部署过程中,你应该确保你只调用env 从您的配置文件中运行。一旦配置被缓存,.env 文件将不会被加载,所有调用env 功能.env 变量将返回null.

优化路由加载

如果你正在构建一个有很多路由的大型应用程序,你应该确保你正在运行route:cache 部署过程中的 Artisan 命令:

php artisan route:cache

此命令将所有路由注册减少到缓存文件中的单个方法调用,从而在注册数百个路由时提高路由注册的性能。

优化视图加载

将应用程序部署到生产环境时,您应该确保运行view:cache 部署过程中的 Artisan 命令:

php artisan view:cache

此命令预编译所有 Blade 视图,因此它们不会按需编译,从而提高每个返回视图的请求的性能。

调试模式

config/app.php 配置文件中的调试选项决定了有多少错误信息实际显示给用户。默认情况下,此选项设置为尊重APP_DEBUG 环境变量,存储在您的应用程序的.env 文件。

在您的生产环境中,此值应始终为false.如果APP_DEBUG 变量设置为true 在生产中,您冒着将敏感配置值暴露给应用程序最终用户的风险。

使用 Forge / Vapor 部署

Laravel 锻造

如果您还没有准备好管理自己的服务器配置,或者不习惯配置运行强大的 Laravel 应用程序所需的所有各种服务,Laravel 锻造 是一个很好的选择。

Laravel Forge 可以在各种基础设施提供商(如 DigitalOcean、Linode、AWS 等)上创建服务器。此外,Forge 安装和管理构建强大的 Laravel 应用程序所需的所有工具,例如 Nginx、MySQL、Redis、Memcached、Beanstalk 等。

Note 想要使用 Laravel Forge 进行部署的完整指南吗?查看Laravel 训练营 和熔炉Laracasts 上可用的视频系列.

Laravel 蒸气

如果你想要一个完全无服务器、自动扩展的部署平台,为 Laravel 调优,请查看Laravel 蒸气. Laravel Vapor 是 Laravel 的无服务器部署平台,由 AWS 提供支持。在 Vapor 上启动您的 Laravel 基础架构,并爱上无服务器的可扩展简单性。 Laravel Vapor 由 Laravel 的创建者进行了微调,可以与框架无缝协作,因此您可以像以前一样继续编写 Laravel 应用程序。

豫ICP备18041297号-2