How to Install Laravel on Ubuntu Linux with Nginx

This post shows students and new users how to install Laravel framework on Ubuntu Linux with Nginx. Laravel is an open source PHP web application framework with cool built-in features such as, routing, authentication, sessions, caching and unit testing.

Laravel can be used as an alternative to CodeIgniter framework. It is designed for ease of use to allow developers create great applications. If you’re looking for a simple and straightforward PHP framework to design your next application, you’ll find Laravel to be useful.

Also, for students and new users learning Linux, the easiest place to start learning is on Ubuntu Linux. Ubuntu is the modern, open source Linux operating system for desktop, servers and other devices.

To get started with installing Laravel on Ubuntu Linux, follow the steps below:

How to install Nginx on Ubuntu Linux

If you’re not using Laravel on a production server, then a web server is not needed. If you want to run Laravel with a web server, then Nginx is a great option, since it’s the most popular web server in use today.

To install Nginx on Ubuntu, run the commands below.

sudo apt update
sudo apt install nginx

After installing, the commands below can be used to stop, start and enable Nginx service to always start up with the server boots.

sudo systemctl stop nginx.service
sudo systemctl start nginx.service
sudo systemctl enable nginx.service

How to install PHP on Ubuntu Linux

Laravel is based on PHP so you’ll need to install PHP and related modules. At the time of this writing, PHP 7.4 is the default in Ubuntu repositories.

To install PHP and related modules run the commands below

sudo apt install php7.4-fpm php7.4-intl php7.4-imap php7.4-mbstring php7.4-xmlrpc php7.4-soap php7.4-gd php7.4-xml php7.4-cli php7.4-zip curl

PHP should be installed and ready to use.

How to install Composer to download Laravel

Now that PHP is installed, you can download Laravel via Composer. Composer is a dependency manager for PHP which we will be using to download Laravel core and related Laravel components.

To do that, run the commands below to install composer.

curl -sS  | sudo php -- --install-dir=/usr/local/bin --filename=composer

After installing Composer, change into root directory and run Composer to download Laravel code packages and create a Laravel project folder called MyProject.

Laravel will automatically create a file named .env. This files includes custom configuration variables including the database credentials. If you’re using a database server, use this file to add its name and password.

cd /var/www/
sudo composer create-project laravel/laravel MyProject --prefer-dist

How to configure Nginx to support Laravel

Finally, configure Apahce2 site configuration file for Laravel. This file will control how users access Laravel content. Run the commands below to create a new configuration file called laravel.conf

sudo nano /etc/nginx/sites-available/laravel.conf

Then copy and paste the content below into the file and save it. Replace the highlighted line with your own domain name and directory root location.

server {
    listen 80;
    server_name example.com;
    root /var/www/MyProject/public;

    add_header X-Frame-Options "SAMEORIGIN";
    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;
    }
}

Save the file and exit.

How to enable Laravel Nginx server block

After configuring the VirtualHost above, enable it by running the commands below

sudo ln -s /etc/nginx/sites-available/laravel.conf /etc/nginx/sites-enabled/

After running the commands above, a new project directory will be created. Run the commands below to set the correct permissions for that directory.

sudo chown -R www-data:www-data /var/www/MyProject/
sudo chmod -R 755 /var/www/MyProject/

Next, run the command below to restart Nginx by running the commands below.

sudo systemctl restart nginx.service

Finally, open your browser and browse to the domain name added in the configuration file above.

You should then see Laravel default home screen. You can begin building your web apps via Laravel on Ubuntyu.

That should do it!

Conclusion:

This post showed you how to install Laravel framework on Ubuntu Linux with Nginx. If you find any error above or have something to add, please use the comment form below.