Laravel + MySQL

Build scalable Web Apps with a pre-configured Laravel server and a managed MySQL database. Laravel is a powerful PHP framework that is used for developing web applications. A major benefit of Laravel is that you’re able to separate the presentation code from the business logic.

Use Cases

  • SaaS Applications
    • Laravel offers out-of-the-box tools like Laravel Cashier for subscription billing, while a managed MySQL database provides high-availability architecture, vital for uptime and data integrity in SaaS products.
  • RESTful APIs and Microservices
    • Laravel’s API resources streamline API development with authentication, rate-limiting, and API versioning, while a managed MySQL database ensures consistent, reliable database access and performance tuning.
  • Real-Time Applications
    • Laravel supports real-time capabilities using technologies like WebSockets, and managed MySQL helps with handling high volumes of transactional data.

Software Included

Package Version License
Laravel 11.26.0 MIT License
Nginx 1.18.0 Custom
MySQL server 8.0.37 GPL 2 with modifications
PHP 8.3.12 PHP v3.01
Certbot 2.11.0 Apache 2
Composer 2.7.7 MIT License

Deploying this Offering using the Control Panel

Click the Deploy to DigitalOcean button to deploy this offering. If you aren’t logged in, this link will prompt you to log in with your DigitalOcean account.

Deploy Laravel + MySQL to DO

Getting Started After Deploying Laravel + MySQL

In addition to the package installation, the One-Click also:

  • Enables the UFW firewall to allow only SSH (port 22, rate limited), HTTP (port 80), and HTTPS (port 443) access.

After you create a Laravel One-Click Droplet, you’ll need to log into the Droplet via SSH to finish the Laravel setup.

From a terminal on your local computer, connect to the Droplet as root. Make sure to substitute the Droplet’s public IPv4 address.

ssh root@your_droplet_public_ipv4

If you did not add an SSH key when you created the Droplet, you’ll first be prompted to reset your root password.

Then, the interactive script that runs will first prompt you for your domain or subdomain:

--------------------------------------------------
This setup requires a domain name.  If you do not have one yet, you may
cancel this setup, press Ctrl+C.  This script will run again on your next login
--------------------------------------------------
Enter the domain name for your new Laravel site.
(ex. example.org or test.example.org) do not include www or http/s
--------------------------------------------------
Domain/Subdomain name:

The next prompt asks if you want to use SSL for your website via Let’s Encrypt, which we recommend:

Next, you have the option of configuring LetsEncrypt to secure your new site.  Before doing this, be sure that you have pointed your domain or subdomain to this server's IP address.  You can also run LetsEncrypt certbot later with the command 'certbot --nginx'

Would you like to use LetsEncrypt (certbot) to configure SSL(https) for your new site? (y/n):

Next, run your Laravel migrations:

cd /var/www/laravel
php artisan migrate

At this point, you can visit the Droplet’s IP address or your domain name in your browser to see the Laravel installation.

The web root is /var/www/laravel, and the Laravel configuration file is /var/www/laravel/.env.

You can get information about the PHP installation by logging into the Droplet and running php -i.

In addition, there are a few customized setup steps that we recommend you take.

  • You should consider securing the MySQL instance by running the mysql_secure_installation command.
  • Creating an Nginx server block file for each new site makes it easier to manage changes when hosting multiple sites.

To do so, you’ll need to create two things for each domain: a new directory in /var/www for that domain’s content, and a new server block file in /etc/nginx/sites-available for that domain’s configuration. For a detailed walkthrough, you can follow How to Set Up Nginx Server Blocks.

  • If you didn’t enable HTTPS during the initial setup script, you can enable it manually at any time after your domain name has been pointed to the Droplet’s IP address.

Setting up an SSL certificate enables HTTPS on the web server, which secures the traffic between the server and the clients connecting to it. Certbot is a free and automated way to set up SSL certificates on a server. It’s included as part of the Laravel One-Click to make securing the Droplet easier.

To use Certbot, you’ll need a registered domain name and two DNS records:

  • An A record from the domain (e.g., example.com) to the server’s IP address
  • An A record from a domain prefaced with www (e.g., www.example.com) to the server’s IP address

Additionally, if you’re using a server block file, you’ll need to make sure the server name directive in the Nginx server block (e.g., server_name example.com) is correctly set to the domain.

Once the DNS records and, optionally, the server block files are set up, you can generate the SSL certificate. Make sure to substitute the domain in the command.

certbot --nginx -d example.com -d www.example.com

For a more detailed walkthrough, you can follow How to Secure Nginx with Let’s Encrypt or view Certbot’s official documentation.

Access your Managed Database from your Droplet

Once the MySQL client is installed, you can test the connection to your managed database using the following command:

mysql -h your-database-host -P 3306 -u your-database-username -p
  • Replace your-database-host with the host of your managed database.
  • Replace your-database-username with the username for the database.
  • -p will prompt you to enter the password for the database user.

For example:

mysql -h db.example.com -P 3306 -u your_db_user -p