Table of Contents#
- Prerequisites
- Step 1: Update Fedora System
- Step 2: Install the LAMP Stack
- Step 3: Configure MariaDB Database
- Step 4: Configure PHP
- Step 5: Download and Prepare Concrete5
- Step 6: Configure Apache Virtual Host
- Step 7: Complete Concrete5 Installation via Web Wizard
- Troubleshooting Common Issues
- Conclusion
- 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 -yThis 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 -yStart and enable Apache to run on boot:
sudo systemctl start httpd
sudo systemctl enable httpdVerify Apache is running:
sudo systemctl status httpdYou 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 -yStart and enable MariaDB:
sudo systemctl start mariadb
sudo systemctl enable mariadbSecure MariaDB (set a root password, remove anonymous users, etc.):
sudo mysql_secure_installationFollow 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 -yVerify PHP installation:
php -vYou 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 -pEnter 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.iniUpdate 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 = 120Save and exit (Ctrl+O, Enter, Ctrl+X). Restart Apache to apply changes:
sudo systemctl restart httpdStep 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.zipThis 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/concrete55.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/concrete5Set 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/concrete5Step 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.confAdd 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 -tIf you see Syntax OK, restart Apache:
sudo systemctl restart httpdStep 7: Complete Concrete5 Installation via Web Wizard#
- Open a browser and navigate to your server’s IP or domain (e.g.,
http://example.comorhttp://localhost/concrete5/public). - The Concrete5 installer will launch. Click Install Concrete5.
- Database Setup:
- Database Server:
localhost - Database Username:
concrete5_user - Database Password: The password you set for
concrete5_user - Database Name:
concrete5_dbClick Continue.
- Database Server:
- 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.
- 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.