Laravel 完整部署

简介

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


服务配置

Nginx

如果要将应用程序部署到运行Nginx的服务器,则可以使用以下配置文件配置Web服务器。 通常情况下需要根据服务器的配置自定义此文件。

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()函数。因为一旦config:cache命令执行了,那.env文件将不会再被加载,这时所有的env()函数都将返回null。

路由加载优化

如果要构建具有许多路由的大型应用程序,则应确保在部署项目中运行 Artisan命令route:cache

$ php artisan route:cache

此命令将所有路由注册到一个缓存文件内的单个方法中,从而提高了注册数百条路由时的路由加载的性能。

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

视图加载优化

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

$ php artisan view:cache

此命令将对所有Blade视图进行预编译,这样就不会按需编译它们,从而提高了为每个请求返回视图的速度。

查看笔记

扫码一下
查看教程更方便