Concrete5 is an open source content management platform used to publish and manage online content. Just like WordPress and Joomla. It is written in PHP and uses MariaDB as a database back-end. It is easy to use as it creates pages and content through a browser. Concrete5 CMS can be installed on any Linux environment.

This article will cover how to install and configure Concrete5 on Ubuntu 20.04. Before we can dive in, make sure you have the following items. Below are the setup requirements for Concrete5 CMS with Apache on Ubuntu 20.04.

  1. Ubuntu 20.04 server.
  2. A user with sudo permissions.
  3. Fully qualified domain name. (FQDN)

Step 1: Update Ubuntu System

Make sure your system is up-to-date and all the packages updated.

sudo apt update
sudo apt upgrade -y

You may consider a reboot after upgrade:

sudo reboot

Step 2: Install PHP and Database dependencies

After update, we now install Apache, MariaDB, PHP and PHP-modules:

sudo apt install apache2 mariadb-server php libapache2-mod-php libapache2-mod-php php-common php-mbstring php-xmlrpc php-soap php-gd php-xml php-intl php-mysql php-cli php-ldap php-zip php-curl

Accept installation prompt:

The following NEW packages will be installed:
  apache2 apache2-bin apache2-data apache2-utils fontconfig-config fonts-dejavu-core galera-3 libapache2-mod-php libapache2-mod-php7.4 libapr1 libaprutil1
  libaprutil1-dbd-sqlite3 libaprutil1-ldap libcgi-fast-perl libcgi-pm-perl libconfig-inifiles-perl libdbd-mysql-perl libdbi-perl libencode-locale-perl
  libfcgi-perl libfontconfig1 libgd3 libhtml-parser-perl libhtml-tagset-perl libhtml-template-perl libhttp-date-perl libhttp-message-perl libio-html-perl
  libjansson4 libjbig0 libjpeg-turbo8 libjpeg8 liblua5.2-0 liblwp-mediatypes-perl libmysqlclient21 libonig5 libsnappy1v5 libterm-readkey-perl libtiff5
  libtimedate-perl liburi-perl libwebp6 libxmlrpc-epi0 libxpm4 libzip5 mariadb-client-10.3 mariadb-client-core-10.3 mariadb-common mariadb-server
  mariadb-server-10.3 mariadb-server-core-10.3 mysql-common php php-cli php-common php-curl php-gd php-intl php-ldap php-mbstring php-mysql php-soap php-xml
  php-xmlrpc php-zip php7.4 php7.4-cli php7.4-common php7.4-curl php7.4-gd php7.4-intl php7.4-json php7.4-ldap php7.4-mbstring php7.4-mysql php7.4-opcache
  php7.4-readline php7.4-soap php7.4-xml php7.4-xmlrpc php7.4-zip socat ssl-cert
0 upgraded, 83 newly installed, 0 to remove and 56 not upgraded.
Need to get 30.1 MB of archives.
After this operation, 210 MB of additional disk space will be used.
Do you want to continue? [Y/n] y

Step 3: Configure PHP for Concrete5 on Ubuntu 20.04

We will be required to do some initial configurations before we can now install Concrete5.

Edit the file /etc/php/*/apache2/php.ini and make the changes as highlighted below:

$ sudo vim /etc/php/*/apache2/php.ini

Now edit the following lines to have values as below:

file_uploads = On
allow_url_fopen = On
memory_limit = 256M

upload_max_filesize = 64M

Also set correct timezone:

date.timezone = Africa/Nairobi

Restart the Apache service for the changes made to apply

systemctl restart apache2

Step 4: Configure MariaDB Database

Configure your MariaDB server using the secure installation practices.

Now you need to create a database and a user for concrete5. To achieve this, first login to MariaDB with the root user command:

$ sudo mysql -u root -p

Then create a database and a user with the following command:

CREATE USER 'concrete5admin'@'localhost' IDENTIFIED BY '[email protected]';

Remember to use a strong password of your own when creating the database user.

Grant privileges on the concrete5 database to the user we created above.

GRANT ALL ON concrete5.* TO 'concrete5admin'@'localhost' IDENTIFIED BY '[email protected]' WITH GRANT OPTION;

Finally flush privileges and exit the database as follows:


Step 5: Configure Concrete5 on Ubuntu 20.04

Downloading Concrete5 CMS.

Here we need to get the latest version of Concrete5 CMS. Go to the official website for the URL of the latest version.

wget --trust-server-names -O

Extract the downloaded file:


After extraction, we need to move the file to Apache web root directory:

sudo mv concrete5-* /var/www/html/concrete5

Now, we need to set ownership and permission rights to the concrete5 directory as below

sudo chown -R www-data:www-data /var/www/html/concrete5/
sudo chmod -R 755 /var/www/html/concrete

Configuring Apache web server

Here, you need to create a configuration file for Apache virtual host to support concete5 CMS:

sudo vim /etc/apache2/sites-available/concrete5.conf

In the file, add the following lines:

<VirtualHost *:80>
     ServerAdmin [email protected]
     DocumentRoot /var/www/html/concrete5/

     <Directory /var/www/html/concrete5/>
        Options +FollowSymlinks
        AllowOverride All
        Require all granted

     ErrorLog ${APACHE_LOG_DIR}/error.log
     CustomLog ${APACHE_LOG_DIR}/access.log combined


For the ServerAdmin and ServerName, you replace with your fully qualified domain name (FQDN)

Then enable the Apache virtual host and the rewrite module as follows:

sudo a2ensite concrete5.conf
sudo a2enmod rewrite

To apply changes, you need to restart Apache 2

sudo systemctl restart apache2

Then check the status of Apache2 service.

$ systemctl status apache2

You should get an output similar to this.

With this output, the Apache server is now configured to host concrete5 CMS.

Step 6: Concrete5 CMS Web Interface.

Now you proceed to a web browser to access Concrete5 CMS web interface with this URL // You will be redirected to the following page

Select the your language and click the arrow to proceed to the following page

This site lists all the required libraries. Make sure all of them are installed then proceed with your installation as shown

You will be required to input the database credentials that you created earlier.

Proceed to installation, the installation will complete and you will be get the info below:

Finally click on the edit your site button and the following dashboard will appear.

At this point, Concrete5 CMS is now ready for use and you can now publish your content. You can also secure your website using Let’s Encrypt free SSL.

Check out more articles on this website:

Install WordPress With Nginx and PHP-FPM on FreeBSD

Setup WordPress 5 website with Nginx on Amazon Linux 2


Please enter your comment!
Please enter your name here