thelinuxvault blog

Installation of Concrete5 CMS on Fedora Linux

Concrete5 is an open-source content management system (CMS) known for its user-friendly interface, flexibility, and robust features. It allows users to build and manage websites with ease, even without extensive technical knowledge. If you’re a Fedora Linux user looking to host a Concrete5 site, this guide will walk you through the entire installation process—from setting up prerequisites to configuring the CMS via the web-based wizard. By the end, you’ll have a fully functional Concrete5 instance running on your Fedora server.

2026-02

Table of Contents#

  1. Prerequisites
  2. Step 1: Update Fedora System
  3. Step 2: Install the LAMP Stack
  4. Step 3: Configure MariaDB Database
  5. Step 4: Configure PHP
  6. Step 5: Download and Prepare Concrete5
  7. Step 6: Configure Apache Virtual Host
  8. Step 7: Complete Concrete5 Installation via Web Wizard
  9. Troubleshooting Common Issues
  10. Conclusion
  11. References

Prerequisites#

Before starting, ensure you have:

  • A Fedora Linux system (Fedora 36/37/38 recommended).
  • Sudo or root access to the server.
  • A stable internet connection.
  • Basic familiarity with Linux command-line operations.

Step 1: Update Fedora System#

First, update your Fedora system to ensure all packages are up-to-date. Open a terminal and run:

sudo dnf update -y

This ensures you have the latest security patches and dependencies.

Step 2: Install the LAMP Stack#

Concrete5 requires a web server, database server, and PHP. We’ll use the LAMP stack (Linux, Apache, MariaDB, PHP) for this setup.

2.1 Install Apache Web Server#

Apache is the most popular web server and is fully compatible with Concrete5. Install it with:

sudo dnf install httpd -y

Start and enable Apache to run on boot:

sudo systemctl start httpd
sudo systemctl enable httpd

Verify Apache is running:

sudo systemctl status httpd

You should see active (running) in the output.

2.2 Install MariaDB Database Server#

MariaDB (a fork of MySQL) is the default database server on Fedora. Install it with:

sudo dnf install mariadb-server -y

Start and enable MariaDB:

sudo systemctl start mariadb
sudo systemctl enable mariadb

Secure MariaDB (set a root password, remove anonymous users, etc.):

sudo mysql_secure_installation

Follow the prompts to configure security settings (recommended: set a strong root password, disable remote root login, and remove test databases).

2.3 Install PHP and Required Extensions#

Concrete5 requires PHP 7.4 or higher. Fedora 36+ ships with PHP 8.1+, which is compatible. Install PHP and critical extensions:

sudo dnf install php php-mbstring php-zip php-gd php-pdo php-mysqlnd php-json php-curl php-xml php-ctype php-session -y

Verify PHP installation:

php -v

You should see PHP 8.x.x in the output.

Step 3: Configure MariaDB Database#

Concrete5 needs a dedicated database and user. Log into MariaDB as root:

sudo mysql -u root -p

Enter the root password you set earlier. Run the following SQL commands to create a database (e.g., concrete5_db), user (e.g., concrete5_user), and grant permissions:

CREATE DATABASE concrete5_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'concrete5_user'@'localhost' IDENTIFIED BY 'StrongPassword123!'; -- Replace with your password
GRANT ALL PRIVILEGES ON concrete5_db.* TO 'concrete5_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Replace StrongPassword123! with a secure password.

Step 4: Configure PHP#

Concrete5 requires specific PHP settings (e.g., memory limit, file upload size). Edit the PHP configuration file:

sudo nano /etc/php.ini

Update the following values (adjust as needed):

memory_limit = 256M       ; Minimum required for Concrete5
upload_max_filesize = 32M ; For uploading themes/plugins
post_max_size = 32M
max_execution_time = 120

Save and exit (Ctrl+O, Enter, Ctrl+X). Restart Apache to apply changes:

sudo systemctl restart httpd

Step 5: Download and Prepare Concrete5#

5.1 Download Concrete5#

Visit the Concrete5 downloads page to get the latest stable version. As of 2024, the latest version is 9.2.x. Use wget to download it directly to your server:

wget https://www.concrete5.org/download_file/-/view/123456/ -O concrete5.zip --no-check-certificate

(Replace 123456 with the actual download ID from the Concrete5 website.)

5.2 Extract and Move Files#

Extract the ZIP archive:

unzip concrete5.zip

This creates a folder like concrete5-9.2.x. Move it to Apache’s web root (/var/www/html) and rename it for simplicity (e.g., concrete5):

sudo mv concrete5-9.2.x /var/www/html/concrete5

5.3 Set Permissions and SELinux Context#

Concrete5 needs write access to certain directories. Set ownership to the Apache user (apache):

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

Set file/directory permissions:

sudo find /var/www/html/concrete5 -type d -exec chmod 755 {} \;
sudo find /var/www/html/concrete5 -type f -exec chmod 644 {} \;

Fedora uses SELinux (a security module) by default. Allow Apache to read/write to the Concrete5 directory:

sudo chcon -R -t httpd_sys_content_rw_t /var/www/html/concrete5

Step 6: Configure Apache Virtual Host#

Create a virtual host file to define your Concrete5 site. Replace example.com with your domain or localhost for local testing:

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

Add the following configuration (adjust ServerName and paths):

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/html/concrete5/public
 
    <Directory /var/www/html/concrete5/public>
        AllowOverride All
        Require all granted
    </Directory>
 
    ErrorLog /var/log/httpd/concrete5_error.log
    CustomLog /var/log/httpd/concrete5_access.log combined
</VirtualHost>

Note: Recent Concrete5 versions use a public subdirectory for security. Ensure DocumentRoot points to /var/www/html/concrete5/public.

Test Apache configuration for errors:

sudo httpd -t

If you see Syntax OK, restart Apache:

sudo systemctl restart httpd

Step 7: Complete Concrete5 Installation via Web Wizard#

  1. Open a browser and navigate to your server’s IP or domain (e.g., http://example.com or http://localhost/concrete5/public).
  2. The Concrete5 installer will launch. Click Install Concrete5.
  3. Database Setup:
    • Database Server: localhost
    • Database Username: concrete5_user
    • Database Password: The password you set for concrete5_user
    • Database Name: concrete5_db Click Continue.
  4. Site Information:
    • Site Name: Your website name (e.g., "My Concrete5 Site")
    • Admin Email: Your email address
    • Admin Password: A strong password for the admin account Click Install Now.
  5. Wait for the installation to complete. You’ll be redirected to the Concrete5 dashboard.

Troubleshooting Common Issues#

403 Forbidden Error#

  • Cause: Incorrect permissions or SELinux context.
  • Fix: Re-run the permission and SELinux commands in Step 5.3.

PHP Extensions Missing#

  • Cause: A required PHP extension isn’t installed.
  • Fix: Check Concrete5’s system requirements and install missing extensions with sudo dnf install php-[extension].

Database Connection Failed#

  • Cause: Incorrect database credentials or MariaDB not running.
  • Fix: Verify MariaDB is running (sudo systemctl status mariadb) and double-check the database name, user, and password in Step 3.

Firewall Blocking Access#

  • Cause: Fedora’s firewall (firewalld) is blocking HTTP/HTTPS.
  • Fix: Allow HTTP/HTTPS through the firewall:
    sudo firewall-cmd --add-service=http --permanent
    sudo firewall-cmd --add-service=https --permanent
    sudo firewall-cmd --reload

Conclusion#

You’ve successfully installed Concrete5 CMS on Fedora Linux! You can now customize your site with themes, plugins, and content via the user-friendly dashboard. For advanced configurations (e.g., SSL/TLS with Let’s Encrypt), refer to the references below.

References#