Skip to content

部署

介绍

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

服务器配置

Nginx

如果你将应用程序部署到运行 Nginx 的服务器上,可以使用以下配置文件作为配置 Web 服务器的起点。根据你的服务器配置,可能需要自定义此文件。如果你需要服务器管理方面的帮助,可以考虑使用 Laravel Forge 等服务:

php
server {
    listen 80;
    server_name example.com;
    root /example.com/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    index index.html index.htm 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/php7.2-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

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

优化

自动加载优化

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

php
composer install --optimize-autoloader --no-dev
lightbulb

除了优化自动加载器外,还应确保在项目的源代码控制库中包含 composer.lock 文件。当存在 composer.lock 文件时,项目的依赖项可以更快地安装。

优化配置加载

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

php
php artisan config:cache

此命令会将 Laravel 的所有配置文件合并为一个缓存文件,从而大大减少框架在加载配置值时访问文件系统的次数。

exclamation

如果在部署过程中执行 config:cache 命令,应确保仅在配置文件中调用 env 函数。一旦配置被缓存,.env 文件将不会被加载,所有对 env 函数的调用将返回 null

优化路由加载

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

php
php artisan route:cache

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

exclamation

由于此功能使用 PHP 序列化,因此只能为仅使用控制器路由的应用程序缓存路由。PHP 无法序列化闭包。

使用 Forge 部署

如果你还没有准备好管理自己的服务器配置,或者不熟悉配置运行强大 Laravel 应用程序所需的各种服务,Laravel Forge 是一个很好的替代方案。

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