How to Install WordPress App on a Linode VPS on Ubuntu 18.04

After spending a long time on SSH console, Speed testing tools, and web hosting panels; I figured out a server stack that you can use to host a Fast WordPress website. Hosting a WordPress site is not a big task if you know how to get a shared hosting plan from Interserver. But when you want to ultimately control your web server and manage it at your own to host WordPress, you need to know the best stack.

installing wordpress on Linode VPS

Here’s what I have explained in this tutorial.

  1. Deploying a Linode cloud server with Ubuntu 18.04 (You can choose any other OS but Ubuntu is best)
  2. Nginx as webserver
  3. Php7.4 FPM
  4. Installation of PhpMyAdmin and accessing it through your domain
  5. Uploading WordPress using SFTP (Filezilla)
  6. Setting up Varnish Cache on Nginx

To start with, you can deploy a VPS on Linode for 5$ a month. The configuration of such VPS would be 1v CPU, 1GB RAM, 25GB SSD storage and 1TB bandwidth.

create linode

START A 7 DAYS FREE TRIAL NOW

LOGIN as root in putty, terminal or browser SSH terminal.

Start with the commands below.

I have also recorded the whole setup process in above 4 videos.

sudo apt-get update

This will update all the packages on my ubuntu machine.

sudo apt-get install nginx

Nginx server will be installed. Nginx is considered to be better than Apache when it comes to talking about performance; and that too when you run WordPress application only.

sudo apt-get install mysql-server

MySQL server installation will ask you to use storage on your machine. Give permissions by typing Y and enter.

Next, I will go ahead and setup the SQL server with the command below.

sudo mysql_secure_installation

Here, I will skip installing validate password module. Type any letter and enter.

Set a root database password. Type Y whenever it asks.

FLUSH PRIVILEGES;

exit;

For this article, I will install PHP 7.4 fpm because it is the latest version and recommended to run WordPress 5.4 on your server.

sudo apt-get install software-properties-common

sudo add-apt-repository ppa:ondrej/php

sudo apt-get install php7.4 php7.4-fpm php7.4-xml php7.4-mysql php7.4-gd php7.4-bz2 php7.4-cli php7.4-common php7.4-curl php7.4-json php7.4-mbstring php7.4-opcache php7.4-readline php7.4-zip

Lets

sudo nano /etc/php/7.4/fpm/php.ini

You will see a line ;cgi.fix_pathinfo=1, if the line is quoted, remove the quote “;” and replace ‘1’ with ‘0’

cgi.fix_pathinfo=0

Start the php7.4 module using the command below

service php7.4-fpm start

Using the below command, I will edit the default server block in the Nginx configuration.

sudo nano /etc/nginx/sites-available/default

server{
listen 80 default_server;
listen [::]:80 default_server;

root /var/www/html;
index index.php index.html index.htm index.nginx-debin.html;

server_name mydomain;

location / {
try_files $uri $uri/ /index.php$is_args$args;
}

location ~ \.php$ {
include snippets/fastcgi.php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}

location ~ /\.ht {
deny all;
}

}

You have to make sure every rule is not commented out. if the comments are there, just select the whole content on the file and replace with the above content. (after replacing the bold characters with your values)

sudo nginx -t

You can test the server block file for any syntax error using above commands. If the command returns “syntax is OK”, proceed to the next command and reload the Nginx Server.

sudo systemctl reload nginx

Now, the server is setup. Lets install PhpMyadmin

sudo apt-get update

sudo apt-get install phpmyadmin

Lets link to Phpmyadmin

sudo ln -s /usr/share/phpmyadmin /var/www/mydomain

sudo phpenmod mcrypt

Do not panic if the above command does not work. Let’s move the next.

sudo service php7.4-fpm restart

Let’s change the phpmyadmin dashboard location. I will simply navigate to my document rule and make a link to the phpmyadmin there.

cd /var/www/html

sudo mv phpmyadmin database

I have used database only to rename the phpmyadmin link inside the document root, you can use anything to keep it secret.

Open yourdomain/database to verify the install.


So far, we have installed Nginx, PHP 7.4 fpm, MySQL and phpmyadmin on the Ubuntu 18.04.

Now is the time to access your MySQL through SSH and create a database, a new database user, and grant all permissions to that user.

LOGIN to your server as root and enter the MySQL

sudo mysql -u root -p

Enter your MySQL root password and hit enter.


Lets create a database (below are SQL commands)

CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

GRANT ALL ON wordpress.* TO ‘wpdbuser‘@’localhost’ IDENTIFIED BY ‘password‘;

You should replace the values in bold characters with your own values.

  • wordpress – your database name
  • wpdbuser – database user’s username
  • password – database user password

Now is the time to login to your database through the phpmyadmin console.


I will use FileZilla to upload the WordPress files in the document root directory of the server.

Download WordPress

  • Edit the wp-config.php
  • Archive the whole WordPress
  • Rename it to site.zip
  • Upload it to /var/www/mydomain

I am back on the SSH terminal now and I will install zip and unzip on the server.

sudo apt-get update

sudo apt-get install zip unzip

Navigate to the document root and unzip the file here.

cd /var/www/mydomain/

sudo unzip site.zip

sudo rm -r site.zip

Open your browser and hit your domain in the address bar. You should see the WordPress Installation Screen.

Choose the language, Input values, and Run the installation. You should now be able to visit your website on yourdomain.com and sign in to your WordPress.

Let’s set the ownership so that you can install themes and plugins from the WordPress dashboard.

chown -R www-data:www-data /var/www/mydomain

Conclusion

You can host a WordPress site yourself with ease on Linode VPS or any other cloud VPS hosting provider. Please feel free to use comments to ask your questions and request more videos/tutorials.