Keegan Turner
  • πŸ‘‹Hello World.
  • πŸ“šHow-To Guides
    • Integrating Git on your local host
    • βš–οΈLoad Balancing with HAProxy
    • πŸ‘¨β€πŸ’»Code Server - Self Hosted VSCode alternative
    • πŸ•ΈοΈWordPress + LAMP - Self Hosted CMS
    • ☁️Nextcloud - Self Hosted file sync & sharing solution
    • ⏳Grafana Cloud - Cloud Hosted Monitoring
    • βŒ›Prometheus + Grafana - Self Hosted monitoring stack solution
    • πŸ›³οΈPortainer + Docker - Self Hosted container management UI
    • 🐬MariaDB - Self Hosted database server
    • πŸ€–Let's Encrypt + Certbot - Secure your web services with SSL certificates
    • ◀️Nginx Proxy Manager - Self Hosted domain controller with LE SSL certificates
    • πŸ–₯️LXD - Linux OS containers
    • 🐧Linux basics: commands
    • 🐧Linux basics: file paths
    • 🐧Linux basics: SWAP file
  • 🚫Bytes of Caution
Powered by GitBook
On this page
  1. How-To Guides

WordPress + LAMP - Self Hosted CMS

2023-10-21

PreviousCode Server - Self Hosted VSCode alternativeNextNextcloud - Self Hosted file sync & sharing solution

Last updated 1 year ago

WordPress is one of the most popular content management systems and today we will deploy this famous open-source program on our very own cloud instance

First, create your virtual cloud instance. I will be making use of Ubuntu on xneelo.

Create an instance: How to guides

Step 1

Update repositories

sudo apt update -y
sudo apt upgrade -y

Step 2

Install the

sudo apt install apache2

Start and enable Apache

sudo systemctl start apache2
sudo systemctl enable apache2

Step 3

Install

sudo apt install mariadb-server

Secure the database (Follow the instructions after running the command)

sudo mysql_secure_installation

Copy the following code into a bash file.

This script will allow you to create a database, username, and password without the need to manually configure this.

Create the file

sudo nano adduser.sh

Paste the below code in the file and save the file by pressing Ctrl + x, Y & Enter

#!/bin/bash

# Prompt the user for database details
read -p "Enter the desired database name: " db_name
read -p "Enter the desired username: " username
read -s -p "Enter the desired password: " password
echo

# Access the MariaDB server
mysql -u root -p <<EOF
# Create the database
CREATE DATABASE $db_name;

# Create the user and set the password
CREATE USER '$username'@'localhost' IDENTIFIED BY '$password';

# Grant privileges to the user on the database
GRANT ALL PRIVILEGES ON $db_name.* TO '$username'@'localhost';

# Flush privileges
FLUSH PRIVILEGES;

EOF

# Inform the user about the success
echo "Database, username, and password created successfully."

Run the script and set your database credentials

sudo bash adduser.sh

Step 4

Install PHP

sudo apt install php libapache2-mod-php php-mysql

Step 5

Navigate to the html directory

cd /var/www/html

Download and install WordPress

sudo wget https://wordpress.org/latest.tar.gz

Unpack the Tar file

sudo tar -xzvf latest.tar.gz

Move the WordPress files

sudo mv wordpress/* .

Remove the empty directory & tar.gz file

sudo rmdir wordpress
sudo rm latest.tar.gz

Set the permissions

sudo chown -R www-data:www-data /var/www/html/

Copy the WP-Config file

sudo cp wp-config-sample.php wp-config.php

Configure the wp-config file with the MySQL database credentials

sudo nano wp-config.php

Update the lines as indicated below:

define('DB_NAME', 'yourdbname');
define('DB_USER', 'yourdbuser');
define('DB_PASSWORD', 'yourdbpassword');

Remove the default index.html page

sudo rm index.html

Create the .htaccess file

sudo touch .htaccess

Complete the installation

Open your web browser of choice and navigate to your instance IP address. The WordPress installation wizard should appear.

You can follow the on-screen instructions to complete the installation

Your WordPress website will be accessible on your instance server IP address. You can connect a custom domain name to the website by pointing your DNS A '@' & 'www' records to the instance server IP address

You need to update the 000-default.conf file with your domain name. This file controls the default virtual host settings for your web server. To update the file, type the following command:

sudo nano /etc/apache2/sites-available/000-default.conf

This will open the file in the nano text editor. Look for the ServerName directive and replace the default value with your domain name. Save the file (Ctrl + x, Y & Enter) and exit the editor.

Thats it! You have installed WordPress and can continue to develop your website!

xneelo Cloud
AWS EC2
MS Azure VM
Apache web server
MariaDB database server
πŸ“š
πŸ•ΈοΈ
Page cover image