How to Install Concrete5 on CentOS 7

Table of Contents

Introduction

Concrete5 is a free and open source content management system written in PHP that can be used for publishing content on the internet.

Concrete5 is specially designed to be easy for users with minimumal technical skills. Concrete5 allows you to customize your site by using the built-in editing toolbar. Concrete5 comes with lots of useful features such as a text editor, content scheduling, spell checker, an advanced permissions system and much more.

We will learn how to install Concrete5 on CentOS 7.

Requirements

  • A server running CentOS 7.
  • A non-root user with sudo privilege..

Getting Started

First we will update the OS with the latest release and update its installed packages and repositories using the command:

sudo yum update -y

Next we will install the EPEL repository on your system:

sudo yum install epel-release -y

Install LAMP

Now we will install the Apache web server, MariaDB, PHP7, and other PHP modules.

You can install all of them by running the following command:

sudo yum install httpd mariadb mariadb-server -y

You will also need to install PHP 7 as a prerequisite of Concrete5. You can install PHP 7 and other required extensions with these commands.

This one will add and enable the webtatic repository:

sudo rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

This installs PHP 7.1 and several PHP modules.

sudo yum install mod_php71w php71w-mysqlnd php71w-xml php71w-common php71w-gd php71w-mbstring php71w-mcrypt php71w-cli php71w-xmlrpc -y

Configure MariaDB Database

By default a new MariaDB installation is not secured. We will need to secure it first.

To do so, run the following script:

sudo mysql_secure_installation

Answer all the questions as shown, being sure to set a secure root password for MariaDB.

Enter current password for root (enter for none): Enter
Set root password? [Y/n]: Y
Remove anonymous users? [Y/n]: Y
Disallow root login remotely? [Y/n]: Y
Remove test database and access to it? [Y/n]: Y
Reload privilege tables now? [Y/n]: Y

Log in to the MariaDB shell with the following command:

mysql -u root -p

Enter the root password when asked, then create a database for Concrete5:

MariaDB [(none)]>CREATE DATABASE concretedb;

Create a database user and password for the contcretdb database:

MariaDB [(none)]>CREATE USER 'concrete_user'@'localhost' IDENTIFIED BY 'password';
MariaDB [(none)]>GRANT ALL PRIVILEGES ON concretedb.* TO 'concrete_user'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
MariaDB [(none)]>FLUSH PRIVILEGES;
MariaDB [(none)]>exit;

Now we can proceed to install Concrete5.

Install Concrete5

You can download the latest stable release of Concrete5 from its official download page. Otherwise, you can download it with the following command:

wget https://core-releases.s3.amazonaws.com/9314/8193/0256/concrete5-8.0.3.zip

Once the download is complete, extract the downloaded archive with the following command:

unzip concrete5-8.0.3.zip

Move the extracted directory to the Apache web root directory:

sudo mv concrete5-8.0.3 /var/www/html/concrete

Give proper permissions to the concrete directory.

sudo chown -R apache:apache /var/www/html/concrete

Configure Apache for Concrete5

Let's configure an Apache virtual host directive for Concrete5. You can do this by creating /etc/httpd/conf.d/concrete.conf file:

sudo nano /etc/httpd/conf.d/concrete.conf

Add the following lines:

<VirtualHost *:80>
  ServerAdmin admin@example.com
  DocumentRoot /var/www/html/concrete
  ServerName example.com
  <Directory /var/www/html/concrete/>
  Options FollowSymLinks
  AllowOverride All
  Order allow,deny
  allow from all
  </Directory>
ErrorLog /var/log/httpd/concrete-error_log
CustomLog /var/log/httpd/concrete-access_log common
</VirtualHost>

Save and close the file, then restart Apache service:

sudo systemctl restart httpd

We should allow HTTP traffic on port 80 through firewalld. You can do this by running the following command:

sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --reload

Access Concrete5

Once everything is set up properly, lets finish the Concrete5 install through a web browser.

Open your favourite web browser and type the URL http://your-server-ip, you should see the following page:

Concrete5 Installation Screen

Choose your language and then click on the Right Arrow button, you should see the Testing Environment Page:

Concrete5 Environment Test

Make sure that all requirements are satisfied, then click the Continue to Installation button, you should see the Site Information page:

Concrete Site Info

Fill out all the details such as site name, admin username, database username, password and the name of the database then click on the Install concrete5 button.

If everything went fine, you will receive the "Installation Complete" message on the screen.

Concrete5 Install Complete

Click the Edit Your Site button to start using Concrete5 as shown in below image:

Concrete5 Dashboard

Summary

You have successfully installed Concrete5 content management system on CentOS 7 server. You can now customize your website, install plugins, themes, and make the site look as per your requirements. You are welcome to leave feedback in the comments section below.