Deploy Laravel 5.7 App on VULTR VC2

Laravel is a prominent member of a new generation of web frameworks. It is an open source PHP framework and is getting more attention from developers. It is intended for the development of web applications following the model–view–controller architectural pattern.

Using Laravel, we can develop scalable, feature-rich and secure websites and applications and can deliver the completed projects within a short period of time. This ensures the long-term relationship between you and your clients. The current latest version of Laravel is 5.7.

Now coming to Vultr Cloud Compute(VC2), it features 100% SSD and latest generation Intel CPUs. Vultr’s 100% SSD and 100% Intel compute plans are engineered to deliver both speed and reliability our cloud application can depend on. Beyond all the above features, it is the cheapest cloud platform available right now.

Here we are going to deploy a Laravel  5.7 application on Vultr VC2. We’ll be using the latest LTS version of Ubuntu, which is 18.04.1 LTS on our cloud instance.



SETTING UP AN UBUNTU SERVER ON VC2

  • From your Vultr Dashboard, Goto Servers tab on the left side.
  • Press Deploy new server FAB button on the top right corner.
  • Now select a suitable Server Location.
  • Select Ubuntu 18.04 as Server Type.
  • Choose a Server size with IPV4 address.
  • Deploy.
  • Now Enter your console.



SETTING UP LARAVEL ON UBUNTU SERVER

1. INSTALL APACHE2

Laravel requires a web server to run. The commonly used web servers today are, Apache2 and NGINX. In this guide, we are using Apache2. You can install Apache2 with the below command.

sudo apt-get install apache2

2. INSTALL PHP AND IT’S EXTENSIONS

Since Laravel is a PHP framework, PHP and some of its extensions need to be installed. The latest version of PHP is php7.2 and it is also supported by Laravel 5.7. So can install the php7.2 and it’s extensions.

sudo apt install php7.2-common php7.2-cli php7.2-gd php7.2-mysql php7.2-curl php7.2-intl php7.2-mbstring php7.2-bcmath php7.2-imap php7.2-xml php7.2-zip

3. INSTALL MYSQL

Laravel also need a database server. Most using database with PHP is Mysql.

sudo apt-get install mysql-server mysql-client
sudo mysql_secure_installation

When prompted, answer the questions below by following the guide.

Enter current password for root (enter for none): (Press Enter)
Set root password? [Y/n]: Y
New password: (Enter password for mysql DB)
Re-enter new password: (Repeat password)
Remove anonymous users? [Y/n]: Y
Disallow root login remotely? [Y/n]: Y
Remove test database and access to it? [Y/n]:  Y
Reload privilege tables now? [Y/n]:  Y

In the latest version of MySQL, it rollbacks the support for the root user. So, you can not migrate the database with root user. So that we need to create a new user and grant all privileges to the user.

sudo mysql --user=root mysql

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION;
EXIT;

4. INSTALL PHPMYADMIN

phpMyAdmin is a free software tool written in PHP, intended to handle the administration of MySql over the Web. It can be installed using the command below.

sudo apt-get install phpmyadmin

It will ask for your MySQL credentials and you have to give it properly.

We can access the phpmyadmin panel using the link below.

http://[ ipv4_address_off_your_server ]/phpmyadmin

if it is giving an error “The requested URL /phpmyadmin was not found on this server”, do the below steps.

  1. Open apache2.conf file using nano editor.
sudo -H nano /etc/apache2/apache2.conf

2. Paste the following line to the end of the file.

Include /etc/phpmyadmin/apache.conf

3. Restart apache server

/etc/init.d/apache2 restart



5. INSTALL COMPOSER

The composer is an application-level package manager for PHP that provides a standard format for managing dependencies of PHP software and required libraries. It helps us installing/updating various requirements/components for our app. The composer can be installed with the below command.

sudo apt-get install composer

6. CLONE YOUR LARAVEL PROJECT

Now we can clone our project from git repository to /var/www/html directory of our server. we also need to run composer install to install all composer dependencies required for our project.

git clone [ link_to_your_git_repository ]
composer install

7. SETTING PERMISSIONS FOR THE PROJECT DIRECTORY

We have to set permissions for working with this project directory since as by default the system may only allow us to change the contents in our project directory as root.

sudo chown -R www-data:www-data /var/www/html/laravel
sudo chmod -R 755 /var/www/html/laravel/storage

8. CREATING DATABASE

Now create a database on the Mysql server which will be the DB of our Laravel application. This can be done using MySQL commands below.

mysql -u username -p
CREATE DATABASE dbname;
USE dbname;
EXIT;

 



9. CONFIGURE THE APPLICATION ENVIRONMENT

In this step, we’ll modify some security-related application settings, allow the application to connect to the database, and prepare the database for usage. Edit the .env file in your project folder. If there is no .env file in your project, we have to create a file and paste all the contents from sampe.env to the file created and save the file with .env filename.

APP_ENV=production
APP_DEBUG=false
DB_DATABASE=(The database name you created earlier)
DB_USERNAME=(Your Mysql username. Usually root)
BD_PASSWORD=(Your Mysql password)

10. MIGRATE DATABASE

Migrate the database to our system using the command below.

php artisan migrate

11. ACCESSING YOUR LARAVEL APP

Now On your browser, enter

http://[ ipv4_address_off_your_server ]/[project_directory]/public

And this will lead us to the home page of the Laravel application we have created.

12. CREATE VIRTUALHOST IN APACHE SERVER

To serve our app to a connected domain, we have to add the lines below to our /etc/apache2/sites-enabled file.

<VirtualHost *:80>
        ServerAdmin webmaster@example.com
        ServerName phalcon.example.com
        DocumentRoot /var/www/[project_directory]/public
        <Directory /var/www/[project_directory]/>
            Options all
            AllowOverride all      
</Directory>
</VirtualHost>

Now we can assess the home page of our Laravel application. But the routes will not work. For this,

a2enmod rewrite

Edit /etc/apache2/apache2.conf, changing the “AllowOverride”
directive for the /var/www directory : AllowOverride All

service apache2 restart

Now we can access our app using the server IP.

http://[ YOUR_IP_ADDRESS ]

We can also connect a domain to our server’s IP.

2 thoughts on “Deploy Laravel 5.7 App on VULTR VC2

  1. sudo apt-get install phpmyadmin
    (This command doesn’t work with this error message…)

    Reading package lists… Done
    Building dependency tree
    Reading state information… Done
    Package phpmyadmin is not available, but is referred to by another package.
    This may mean that the package is missing, has been obsoleted, or
    is only available from another source
    E: Package ‘phpmyadmin’ has no installation candidate

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.