For those who cannot afford the hustles of developing websites from scratch, there are now several content management systems (CMSs) such as WordPress that you can take advantage of to setup blogs as well as complete websites with a few clicks.
WordPress is a powerful, free and open-source, highly pluggable and customizable CMS that is being used by millions around the world to run blogs and fully functional websites.
It is easy to install and learn, especially for persons who do not have prior website design and development knowledge. With millions of plugins and themes available, developed by an active and dedicated community of fellow users and developers, that you can utilize to tailor your blog or website to work and look just the way you want.
Suggested Read: How to Setup WordPress with LAMP + Postfix as Send-Only Mail Notifications
Requirements:
- A dedicated VPS with a registered domain name, I suggest you to go for Bluehost hosting, which offers 50% off, one Free Domain name and Free SSL.
In this post, we shall run through the various steps you can follow, to install the latest version of WordPress 5.3 on Ubuntu 18.10-18.04, Ubuntu 16.10-16.04 and Linux Mint 18-19 with LAMP (Linux, Apache, MySQL and PHP) stack.
Install LAMP on Ubuntu and Linux Mint
First, we shall uncover the various steps for installation of LAMP stack before progressing to install WordPress.
Step 1: Install Apache Web Server
To install Apache web server, issue the command below:
$ sudo apt-get install apache2 apache2-utils
We need to enable Apache2 web server to start at system boot time, as well start the service as follows:
$ sudo systemctl enable apache2 $ sudo systemctl start apache2
To test whether the server is running, open your web browser and enter http://server_address
. The Apache2 default index page will be displayed in case the web server is up and running.

Note: The Apache default root directory is /var/www/html, all your web files will be stored in this directory.
Step 2: Install MySQL Database Server
Next, we need to install MySQL database server by running the command below:
$ sudo apt-get install mysql-client mysql-server
If you want to install MariaDB, you can install it using following command.
$ sudo apt-get install mariadb-server mariadb-client
During the package installation, you will be prompted to set the root user password for mysql as seen in the image below. Choose a good and secure password, then hit the OK button twice to proceed further.

The database server deployment is not yet secure, for this reason, issue the following command to harden it’s security:
$ sudo mysql_secure_installation
Firstly, you will be asked to install the ‘validate_password’ plugin, so type in Y/Yes
and press Enter, and also choose the default password strength level. On my system, I already installed it.
Importantly, if you do not want to change the root password, then type N/No
when prompted to do so. Answer Y/Yes
for the rest of the subsequent questions.
Step 3: Install PHP and Modules
Last but not least, we shall install PHP and a few modules for it to work with the web and database servers using the command below:
$ sudo apt-get install php7.0 php7.0-mysql libapache2-mod-php7.0 php7.0-cli php7.0-cgi php7.0-gd
Furthermore, to test if php is working in collaboration with the web server, we need to create a info.php
file inside /var/www/html.
$ sudo vi /var/www/html/info.php
And paste the code below into the file, save it and exit.
<?php phpinfo(); ?>
When that is done, open your web browser and type in the this address http://server_address/info.php
. You should be able to view the php info page below as a confirmation.

Step 4: Install WordPress CMS
Download the latest WordPress package and extract it by issuing the commands below on the terminal:
$ wget -c http://wordpress.org/latest.tar.gz $ tar -xzvf latest.tar.gz
Then move the WordPress files from the extracted folder to the Apache default root directory, /var/www/html/:
$ sudo rsync -av wordpress/* /var/www/html/
Next, set the correct permissions on the website directory, that is give ownership of the WordPress files to the web server as follows:
$ sudo chown -R www-data:www-data /var/www/html/ $ sudo chmod -R 755 /var/www/html/
Step 5: Create WordPress Database
Execute the command below and provide the root user password, then hit Enter to move to the mysql shell:
$ mysql -u root -p
At the mysql shell, type the following commands, pressing Enter after each line of a mysql command. Remember to use your own, valid values for database_name, databaseuser, and also use a strong and secure password as databaseuser_password:
mysql> CREATE DATABASE wp_myblog; mysql> GRANT ALL PRIVILEGES ON wp_myblog.* TO 'your_username_here'@'localhost' IDENTIFIED BY 'your_chosen_password_here'; mysql> FLUSH PRIVILEGES; mysql> EXIT;
Go the /var/www/html/ directory and rename existing wp-config-sample.php
to wp-config.php
:
$ sudo mv wp-config-sample.php wp-config.php
then update it with your database information under the MySQL settings section (refer to the highlighted boxes in the image below):
// ** MySQL settings - You can get this info from your web host ** // /** The name of the database for WordPress */ define('DB_NAME', 'database_name_here
'); /** MySQL database username */ define('DB_USER', 'username_here
'); /** MySQL database password */ define('DB_PASSWORD', 'password_here
'); /** MySQL hostname */ define('DB_HOST', 'localhost
'); /** Database Charset to use in creating database tables. */ define('DB_CHARSET', 'utf8
'); /** The Database Collate type. Don't change this if in doubt. */ define('DB_COLLATE',''
);
Afterwards, restart the web server and mysql service using the commands below:
$ sudo systemctl restart apache2.service $ sudo systemctl restart mysql.service
Open your web browser, then enter your server address: http://server-address
to get the welcome page below. Read through the page and click on “Let’s go!” to proceed further and fill all requested on screen information .

Hoping that everything went on just fine, you can now enjoy WordPress on your system. However, to express any concerns or ask questions concerning the steps above or even provide additional information that you think has not been included in this tutorial, you can use the feedback section below to get back to us.
I installed wordpress on ubuntu and I am trying various plugins but how I will check plugin is working on website, I mean will it show changes just by writing IP address on browser or any other process to check plugins effect working or not .
@ashish
Refer to the documentation of a plugin, if you want to know how ti works or how to use it.
Last step
Enter
http://server-adress/wordpress
@Mr.S
Okay, thanks for the addition, but, adding wordpress parameter depends on your website root(where actual wordpress files are stored).
I think a missing step that everyone is likely to hit is the need to remove the “index.html” from the root directory. I removed and things got immediately better. The next hurdle for me is figuring out why the mod-rewrite rules are not working (or that’s what I’m assuming is happening) … basically anything outside the root directory is coming as not found.
Hi,
Thanks for sharing the information. I really need to setup a WordPress on my Linux server, I have one more Question is 512 ram is enough for WordPress on VPS server?
@Gurjeet,
At least you need 1GB of RAM to run a WordPress on a Linux VPS server.
At the final step when I enter my wordpress website it says THIS SITE CAN’T BE REACHED and my IP address took too long to respond.
This problem is driving me crazy PLEASE HELP!
@Ben
Ensure that there is connectivity to your server, if you are running a firewall, check if client requests are allowed via port 80(HTTP) to the web server. You can try pinging your server.
“then update it with your database information under the MySQL settings section (refer to the highlighted boxes in the image below):”
I got stuck at this step. Where should I do all these? Is it I have to go to mysql -u root -p and then type all those command?
@Sara
Do that in the wp-config.php file. Remember, you first have to create the database after running mysql -u root -p, then you add those settings(database host, database name, database username and user password) in the wp-config.php.
Thank you for your respond. When I proceed, I keep on getting the message below. Can you please help me once again?
Why do I keep getting this message when I try to update my database information?
@Sara,
When a file is not properly closed, it will create a temporary file with same name as extension .swp, deleting this file will solve problem.
I’m setting this up on a home server. I had LAMP installed already, and my server IP address would load my “index.html” file. After loading WordPress, it still loads the “index.html” file (so no changes from pre-installation.) If I rename the “index.html” file, then nothing loads. What have I missed in my configuration? I can’t get to the “Let’s Go” welcome page. Thanks!
@Benjamin
Remove the default Apache index.html page and you will get the WordPress page, something like this:
I was having the same problem as Benjamin and I followed your recommendation by removing the default Apache index.html page, now when I load my localhost page I just get an error page that says “Error establishing a database connection”. I followed the tutorial, or I thought I did, do you have any idea what the problem could be?
I have no experience on this, I got stuck on step 2 of step 1. When I type this into virtual box it as a command.
It does nothing, i get the enable part but nothing when i do start?
I am I suppose to type those in together then enter? if so how do you make it hit return to start a new line
@J
The command:
shows no output, to check if Apache2 server has been started yet, simply run this command:
Thanks.
Error establishing a database connection. I double and triple checked that my login details are right. I also checked that my database is up and running.
Only thing I’m not sure is that in:
mysql> GRANT ALL PRIVILEGES ON wp_myblog.* TO 'your_username_here'@'localhost' IDENTIFIED BY 'your_chosen_password_here';
should I include the
' '
or delete them and replace with my username just. The same question about' '
in the wp-config.php file.@kke
You can use the same username in wp-config file here, as long as that user is responsible for managing the wordpress database:
mysql> GRANT ALL PRIVILEGES ON wp_myblog.* TO ‘your_username_here’@’localhost’ IDENTIFIED BY ‘your_chosen_password_here’;
Works like a charm !
Great job putting this together.
@Venkatachalam
We are glad that this worked well for you, thanks for the feedback.
so can you please copy an example ?