Deploy the application to the production environment


brief introduction

When you are ready to deploy the Larravel application to the production environment, there are some important things that can ensure that the application runs as efficiently as possible. In this document, we will discuss these things to do to ensure that the application is deployed in the best way.

Server Configuration

Nginx

If the server where the application is deployed runs Nginx, you can use the following configuration file to configure the Web server. In most cases, this file needs to be adjusted according to the server configuration (if you want a tool to help manage the server, you can consider using 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; } }

optimization

Auto load optimization

When deploying the application to the production environment, ensure that the automatic loading mapping of the optimized Composer class is performed so that Composer can quickly find the file to load for the given class:

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

Note: In addition to optimizing the autoloader, include it in the project code warehouse composer.lock File, so that project dependencies can be installed faster.

Optimize configuration loading

When deploying the application to the production environment, you need to ensure that Artisan commands are run during the deployment process config:cache

 php artisan config:cache

This command will merge all Laravel configuration files into a cache file, thus greatly reducing the framework's IO operations on the file system when loading configuration values.

Note: If you execute config:cache Command, you need to ensure that only the env Function. Once the configuration is cached, it will not be loaded again .env File, so all pairs of env All function calls will return null

Optimize route loading

If you are building a large application with a large number of routes, you need to ensure that Artisan commands are run during deployment route:cache

 php artisan route:cache

This command will generate a cache file to condense all route registrations into a single method call, thus improving the performance of route registration when registering a large number of routes.

Note: Because this feature uses the PHP serialization function, only controller based application routes can be cached, because PHP cannot serialize closures.

Deploy using Forge

If you are not confident in your own management of server configuration, installation of various tools and software, and maintenance of services required for large-scale applications, or feel that these operations are too cumbersome, then Laravel Forge It is a good choice.

Laravel Forge can create servers in different cloud service providers (such as DigitalOcean, Linode, AWS, etc.). In addition, Forge will help you install and manage all the tools needed to build large-scale Laravel applications, such as Nginx, MySQL, Redis, Memcached, Beanstalk, and so on.


give the thumbs-up Cancel Like Collection Cancel Collection

<<Previous: Lightweight development environment: Valet

>>Next: The life cycle of a Laravel request