部署

未匹配的标注

部署

简介

当你准备部署你的 Laravel 应用到生产环境时,请确保几个重要的注意点以保证你的应用能尽可能高效的运行。本文中我们将会覆盖几个重点来确保你的 Laravel 应用部署得当。

服务器配置

Nginx

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

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 文件,便可以很快地安装项目中需要的依赖项。

优化配置加载

当你准备部署应用到生产环境时,你应该部署过程中运行 config:cache Artisan 命令:

php artisan config:cache

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

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

优化路由加载

如果你在构建一个拥有大量路由的大型应用,你应该确保你在部署的过程中执行 route:cache

php artisan route:cache

这个命令将会把所有的路由注册所见到一个缓存文件的单个函数调用,从而在注册上百个路由时能够提高路由注册的性能。

优化视图加载

当你往生产环境中部署应用时,你应该确保在部署过程中运行 view:cache

php artisan view:cache

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

使用 Forge / Vapor 部署

如果你还没有准备好管理自己的服务器配置,或者不熟悉对强大的 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 的创建者对 Laravel Vapor 进行了微调,可以与框架无缝协作,这样您就可以像以前一样继续开发 Laravel 应用程序。

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

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
上一篇 下一篇
Summer
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
贡献者:6
讨论数量: 0
发起讨论 只看当前版本


暂无话题~