部署

未匹配的标注

部署

简介

当你准备在生产环境部署 Laravel 应用时,请注意以下几点以使你的应用尽可能高效地运行。本文将会提供几个范本以使你的 Laravel 应用部署妥当。

服务器要求

Laravel 框架对系统有一些要求,请确保你的 Web 服务器至少满足以下 PHP 版本及扩展需求。

  • PHP >= 7.3
  • BCMath PHP 扩展
  • Ctype PHP 扩展
  • Fileinfo PHP 扩展
  • JSON PHP 扩展
  • Mbstring PHP 扩展
  • OpenSSL PHP 扩展
  • PDO PHP 扩展
  • Tokenizer PHP 扩展
  • XML PHP 扩展

服务器配置

Nginx

当你想要部署应用到 Nginx 服务器上时,你可能会用到下面这个配置文件作为一个范本来配置你的 Web 服务器。这份文件很可能需要根据你的服务器配置进行一些自定义的修改。如果你想要一些协助以便更好地管理服务器,可以考虑使用 Laravel 服务器管理及部署第一方服务 Laravel Forge

就像下述配置信息一样,请确保你的 Web 服务器将所有请求定向至你应用程序的 public/index.php 文件。切记,绝不能将 index.php 移至项目的根目录,因为从项目根目录为应用提供服务会导致许多敏感的配置文件被暴露在公网:

server {
    listen 80;
    server_name example.com;
    root /srv/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.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.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

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

优化

优化自动加载器

当向生产环境部署时,你应该对 Composer 的类映射自动加载进行优化,使得 Composer 可以很快为指定类找到正确的加载文件:

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

技巧:为了优化自动加载器,你应该确保你的项目代码管理从库中包含了 composer.lock 这个文件。当你的项目中包含了 composer.lock 文件,便可以很快地安装项目中需要的依赖项。

优化配置加载

当向生产环境部署时,在部署过程中,你应该运行 Artisan 命令 config:cache

php artisan config:cache

该命令会将 Laravel 的所有配置文件整合成单个缓存文件,这会极大程度地减少框架加载配置值时对文件系统的访问次数。

注意:如果你在部署过程中运行了 config:cache 命令,你应该确保你仅从配置文件中调用 env 函数。一旦配置被缓存,.env 文件将不再加载并且 env 方法将会返回 null

优化路由加载

如果你构建的是一个拥有大量路由的大型应用,在部署过程中,你应该运行 Artisan 命令 route:cache

php artisan route:cache

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

优化视图加载

当向生产环境部署时,在部署过程中,你应该运行 Artisan 命令 view:cache

php artisan view:cache

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

Debug 模式

配置文件 config/app.php 中的 Debug 选项会决定向用户展示多少错误信息。默认情况下,该项的值取决于 .env 文件中的环境变量 APP_DEBUG。

在生产环境中,这个值永远应该是 false。如果在生产环境中将变量 APP_DEBUG 设为 true,会将敏感的配置信息暴露给用户,这非常危险。

使用 Forge / Vapor 部署

Laravel Forge

如果你对管理服务器的配置信息没有多少把握,或是不熟悉健壮的 Laravel 应用所需要的各种各样的服务配置,Laravel Forge 会是一个不错的选择。

Laravel Forge 能够在各种基础设施提供商(如:DigitalOcean,Linode,AWS 等)上创建服务。 此外,Forge 能够安装并管理健壮的 Laravel 应用所需的所有工具,例如:Nginx, MySQL,Redis,Memcached,Beanstalk 等。

Laravel Vapor

如果你想要一个适配 Laravel 的、完全 Serverless、自动扩展的部署平台,不妨看看 Laravel Vapor。Laravel Vapor 基于 AWS,是用于 Laravel 的 Serverless 部署平台。在 Vapor 上启动你的 Laravel 基础架构,沉溺于 Serverless 可扩展的简单性。Laravel Vapor 由 Laravel 的作者亲手微调,可与框架无缝协作,如此您就可以继续像以前一样开发 Laravel 应用程序。

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
上一篇 下一篇
Summer
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
贡献者:4
讨论数量: 0
发起讨论 只看当前版本


暂无话题~