部署

本文档最新版为 7.x,旧版本可能放弃维护,推荐阅读最新版!

部署

简介

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

服务器配置

Nginx

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

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可以很快的找到正确的加载文件去加载给定的类:

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 Artisan 命令:

php artisan route:cache

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

注意:由于此功能使用 PHP 序列化,你仅能缓存专门使用基于控制器路由的应用程序路由。PHP 不能序列化闭包路由。

使用 Forge 部署

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

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

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

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
上一篇 下一篇
Summer
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
贡献者:7
讨论数量: 3
发起讨论 只看当前版本


ruodee
config:cache 执行前,为什么要确保配置文件调用了 env 函数?
0 个点赞 | 5 个回复 | 问答 | 课程版本 5.6
mowangjuanzi
5.8 文档翻译有错误
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.8
zzb75110
forge 可以部署到阿里云吗
0 个点赞 | 0 个回复 | 问答 | 课程版本 5.6