How to install a WordPress Blog to your Laravel Website

2020/01/23 14:04:24

Laravel is a free, open-source PHP web framework, created by Taylor Otwell and intended for the development of web applications following the model–view–controller architectural pattern and based on Symfony.

WordPress is a content management system based on PHP and MySQL that is usually used with the MySQL.

Creating a blog using laravel isn't difficult but why create something which is already existing and solve our primary purpose? Yes, I'm talking about WordPress. WordPress is trusted and rock-solid as a blogging platform, so let’s just install it alongside our Laravel Web Application.

So one may ask - why do I need to think of adding a blog to a laravel app? Answer to the question is simple - the benefits of SEO(Search Engine Optimization) & MOZ Rank (Domain Authority)

Who’s this for?

If you are one who understands the importance of DA & SEO Scores and wants a blog within your primary domain (ex. madgeek.in), this article is for you.

Let’s assume you have

  • Web Server
  • A Web server running on top of Ubuntu with Apache
  • LAMP stack

Step 1: Download A Copy of WordPress

Download the latest copy of WordPress available to a temporary location. When you download the file, it will be in a zipped package. You can download the same in CLI mode using the following command.

curl -O https://wordpress.org/latest.tar.gz

(or)

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

Not sure how to access server CLI? - For Windows System and for MAC follow my previous video on How to add domain and host websites on DigitalOcean droplet.

If you are not comfortable with the commands, download the zip file and upload it to a temporary location in your web server. Wondering how to upload files to the server? - Check this video.

Step 2: Create a Blog Directory For The WordPress Files

For such Laravel-WordPress integration, we will configure it in such a way that when you visit the Laravel application that currently resides on the root domain, you will be able to append a /blog to the domain and reach your blog.

Let's say, your Laravel project domain is https://www.madgeek.in, we will ensure that blog traffics are pushed to http://madgeek.in/blog with full support for pretty URLs, administration control and all the other bells and whistles of WordPress without disturbing the existing Laravel application.

This is how to complete the laravel-wordpress integration.

  • Create a blog directory within the public directory of your Laravel Installation
  • Place all the WordPress files in the blog directory
  • Create a new database on your server to support the new WordPress install
  • Update your apache configuration
  • Restart the apache service
  • Install WordPress

Note: Again, we make a few assumptions for this tutorial. One being that you have your own VPS, and two being that it is a LAMP stack. LAMP is Linux, Apache, MySQL, and PHP.

The index.php file in the laravel project public directory is the entry into your Laravel application. You will load the WordPress files into the public/blog directory so that the index.php file for WordPress exists in blog directory. This is the entry into your WordPress blog.

Step 3: Create a database for the WordPress install

If you have a GUI tool such as phpmyadmin installed, this will be a easy process. If not, follow the video below:

Step 4: Update Apache Configurations

Change the .htaccess file located within your WordPress or blog directory, if it does not exists use the following command

nano .htaccess

(or)

touch .htaccess
nano .htaccess


and paste the below configuration in the .htaccess file

RewriteEngine On

# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* -

# Redirect Trailing Slashes If Not A Folder…
# RewriteCond %{REQUEST_FILENAME} !-d
#RewriteCond %{REQUEST_URI} (.+)/$
#RewriteRule ^ %1

# Handle Front Controller…
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php 


The below settings will cause your posts infinite redirection, so ensure to comment these out

# Redirect Trailing Slashes If Not A Folder…
# RewriteCond %{REQUEST_FILENAME} !-d
#RewriteCond %{REQUEST_URI} (.+)/$
#RewriteRule ^ %1 


Once you have updated the apache configuration file, be sure to restart the apache service using the following command

sudo service apache2 restart

Step 5: Configure wp-config.php

Set up your database configuration for the blog by renaming wp-config-sample.php to wp-config.php and fill in the credentials to connect to the new database you created in step 3.

One can manually change the wp-config.php file or let WordPress installer do it for you. If you wish WordPress installer to create the wp-config.php file, hit the URL yourdomain.com/blog

A snippet of that configuration file might look a bit like this.

// ** MySQL settings — You can get this info from your web host ** //
/** The name of the database for WordPress */
define(‘DB_NAME’, ‘wordpress’);

/** MySQL database username */
define(‘DB_USER’, ‘YOUR-USER-NAME’);

/** MySQL database password */
define(‘DB_PASSWORD’, ‘YOUR-PASSWORD’);

/** 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’, ‘’);

Step 6. Run Through the WordPress Install

With all of the legwork out of the way, you can now point a browser to http://madgeek.in/blog and you will be greeted with the familiar install screen of a WordPress installation. Fill out the fields as needed and submit the data, and you should now have your working blog right alongside your Laravel application on the same domain.