Article

Table of Contents
Theme:
Was this article helpful?
Try Vultr Today with

$50 Free on Us!

Want to contribute?

You could earn up to $600 by adding new articles.

Getting Started with the Ubuntu LEMP Vultr Marketplace App

Author: Humphrey Mpairwe

Last Updated: Wed, May 25, 2022
One-Click Apps

Introduction

Vultr's One-Click LEMP application is a Linux web development stack consisting of Nginx, MariaDB/MySQL, and PHP on your choice of Ubuntu or CentOS. This article explains the initial setup steps, default paths, and other configuration details.

The examples in this guide use IP address 192.0.2.123 and the domain name example.com, which you should replace with your instance's actual address and domain name.

After deployment, you can access the server's default webpage via HTTP at http://192.0.2.123 or HTTPS at https://192.0.2.123. When first deployed, the server has a self-signed SSL certificate which requires bypassing the HTTPS warning.

To install a Let's Encrypt SSL certificate, you'll need to create a DNS "A" record for your server. Then, use the instructions from your domain registrar, or follow this guide if you use Vultr DNS.

Connect to the Server

SSH to the server as root using the IP address and password shown on the server information page.

Create a Non-Root sudo User

  1. Create a new user account.

    # adduser exampleuser
    

    Assign the user a strong password, and fill in the required information.

  2. Add the user to the sudo group.

    # adduser exampleuser sudo
    
  3. Switch to the new user.

    # su exampleuser
    
  4. Verify that the user has sudo access.

    $ sudo whoami
    

Output:

    [sudo] password for exampleuser:
    root

Continue the rest of this guide as the sudo user.

Nginx Configuration

  • The default Nginx web root (web files) directory is /usr/share/nginx/html.
  • The Nginx configuration file directories are /etc/nginx, and /etc/nginx/conf.d.

To set up Nginx, backup all default configuration files.

  1. Switch to the /etc/nginx/conf.d directory.

    $ cd /etc/nginx/conf.d/
    
  2. Back up the configuration files.

    $ sudo mv default.conf default.BAK
    $ sudo mv http.conf http.BAK
    $ sudo mv https.conf https.BAK
    
  3. Create a new Nginx configuration file.

    $ sudo touch /etc/nginx/conf.d/example.com.conf
    
  4. Using a text editor, open and edit the file.

    $ sudo nano /etc/nginx/conf.d/example.com.conf
    
  5. Add the following contents to the file. Replace example.com with your actual domain name.

    server {
        listen 80 default_server;
        listen [::]:80 default_server;
        server_name example.com;
    
        # Webroot directory and files
        root /usr/share/nginx/example.com;
        index index.php index.html;
    
        # Handle PHP Files
        location ~ \.php$
        {
            try_files      $uri =404;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    
        # Deny access to .htaccess files.
        location ~ /\.ht {
            deny  all;
        }
    }
    

    Save and close the file.

    This configuration file uses /usr/nginx/share/example.com as the website root directory. To use a different directory such as /var/www/, edit the root directory directive to match your directory name.

    If you do not have a domain name, you can use _ in the server_name directive as a catch-all server name. See Nginx Server Name Syntax for more information.

  6. Create the domain document root (files) directory.

    $ sudo mkdir /usr/share/nginx/example.com
    
  7. Create an index PHP file.

    $ sudo nano /usr/share/nginx/example.com/index.php
    
  8. Add the following contents to the file.

    <? php
    
    echo "Hello World! Your One-Click configuration works";
    
    ?>
    
  9. Save and close the file.

  10. Grant Nginx read and write permissions to the directory.

    $ sudo chown -R www-data:www-data /usr/share/nginx/example.com/
    
  11. Test Nginx for configuration errors.

    $ sudo nginx -t
    
  12. Restart Nginx to load changes.

    $ sudo systemctl restart nginx
    
  13. Test the configuration by visiting your domain.

    http://example.com
    

Install SSL Certificates

You need a DNS "A" record pointing to your server's IP address to use a Let's Encrypt SSL certificate.

To install a Let's Encrypt certificate, follow the Nginx instructions in our guide: Install Let's Encrypt SSL on Ubuntu

MySQL

MariaDB is the drop-in replacement for MySQL installed on the Vultr One-Click server. It uses the same syntax and database commands.

  1. View and copy the root user password.

    $ sudo cat /root/.my.cnf
    

    The output should look similar to the following:

    [client]
    user=root
    password=lR7l3iv7Cc7QhZz
    
  2. Log in to MySQL as root.

    $ sudo mysql -u root -p
    

    Paste the root user password from the previous step into the prompt.

  3. Change the default root password. Replace strong-password with your own password.

    MariaDB [(none)]>  UPDATE mysql.user SET authentication_string=PASSWORD('strong-password') WHERE USER='root';
    
  4. Refresh MySQL privileges.

    MariaDB [(none)]> FLUSH PRIVILEGES;
    
  5. Exit the MySQL console.

    MariaDB [(none)]> EXIT
    
  6. Test your new password by re-accessing the MySQL console as root.

    $ sudo mysql -u root -p
    

    Enter your new password.

See more resources to manage MySQL:

PHP

  1. Verify the PHP version installed on the server.

    $ php -v
    

    Output:

    PHP 7.4.23 (cli) (built: Aug 26 2021 15:51:37) ( NTS )
    Copyright (c) The PHP Group
    Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.23, Copyright (c), by Zend Technologies
    with Xdebug v3.0.4, Copyright (c) 2002-2021, by Derick Rethans
    
  2. To access a list of installed PHP extensions, create a PHP script in your document root (website files) directory.

    $ sudo nano /usr/share/nginx/example.com/test.php
    
  3. Add the following contents to the file.

    <?php
    
    phpinfo();
    
    ?>
    

    Save and close the file.

  4. Visit your domain and load the test.php file through a web browser.

    https://example.com/test.php
    

    One-Click LEMP PHP Extensions

  5. The most common PHP extensions are pre-installed on the server. To install other extensions, use your package manager. For example:

    $ sudo apt install php-tokenizer php-bcmath php-sodium
    

For more information on using PHP, refer to the following resources.

Next Steps

You have successfully deployed Vultr's One-Click LEMP application and configured installed services. Next, fine-tune your server with the following resources according to your web development needs.

Want to contribute?

You could earn up to $600 by adding new articles.