Guides 11792 Published by

The guide walks through installing SuiteCRM on a fresh CentOS 8 system by first enabling the EPEL and Remi repositories to pull PHP 7.4 and MariaDB, then installing Apache, MySQL, and all required PHP extensions. It explains how to secure MySQL, create a dedicated CRM database with utf8mb4 collation, download the latest SuiteCRM package into /var/www/html, and set proper ownership so Apache can write logs and uploads. The tutorial sets up an Apache virtual host, adjusts file permissions, restarts services, and offers optional SSL, performance tweaks, and backup reminders. It ends with practical tips to avoid common pitfalls such as missing PHP modules or incorrect repository packages.



Installing SuiteCRM on CentOS 8 – A Straight‑Forward Guide

If you’re looking to get SuiteCRM up and running on a fresh CentOS 8 box, this walk‑through will show you exactly how to pull the stack together without tripping over common pitfalls.

1. Prerequisites
  • A CentOS 8 system with root or sudo privileges
  • An internet connection for downloading packages
  • Basic knowledge of terminal commands

Real‑world note: I once had a server where php-fpm crashed because the mod_php module was missing from the stack—always double‑check that the PHP packages you install match your web server.

2. Set Up Repositories

SuiteCRM requires PHP 7.4+ and MySQL 8 (or MariaDB). CentOS 8 ships with older defaults, so we’ll enable the EPEL and Remi repos first.

sudo dnf install -y epel-release
sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm

> Why this matters: Without these repos you can’t pull PHP 7.4 or the newer MariaDB packages that SuiteCRM expects.

3. Install Core Packages
sudo dnf module enable php:remi-7.4 -y
sudo dnf install -y httpd mariadb-server php php-mysqlnd php-gd php-curl php-xml php-mbstring php-zip php-bcmath
  • httpd – Apache web server
  • mariadb-server – MySQL‑compatible database
  • PHP extensions – SuiteCRM relies on these for everything from XML parsing to session handling
4. Start and Secure the Database
sudo systemctl enable --now mariadb
sudo mysql_secure_installation

During the secure install, set a strong root password, remove anonymous users, disallow remote root logins, and drop the test database.

> If you skip this step, your database will be exposed to anyone on the network—no one wants that.

5. Create SuiteCRM Database & User
sudo mysql -u root -p

Inside MySQL:

CREATE DATABASE suitecrm CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL PRIVILEGES ON suitecrm.* TO 'suiteuser'@'localhost' IDENTIFIED BY 'StrongPassword!23';
FLUSH PRIVILEGES;
EXIT;

> The utf8mb4 collation is essential; SuiteCRM stores emojis and special characters. Forgetting this leads to data corruption.

6. Pull the Latest SuiteCRM
cd /var/www/html
sudo wget https://suitecrm.com/downloads/SuiteCRM-7.x.x.zip
sudo unzip SuiteCRM-7.x.x.zip
sudo mv SuiteCRM suitecrm

> I’ve seen sites fail to work because they used an older zip that lacked the necessary composer.json for dependencies.

7. Set File Permissions
cd /var/www/html/suitecrm
sudo chown -R apache:apache .
sudo find . -type d -exec chmod 755 {} \;
sudo find . -type f -exec chmod 644 {} \;

> Apache must own the files; otherwise, PHP scripts can’t write logs or upload documents. The directory/file permissions keep everything readable while preventing arbitrary writes.

8. Configure Apache VirtualHost

Create /etc/httpd/conf.d/suitecrm.conf:

<VirtualHost *:80>
    ServerName suitecrm.yourdomain.com
    DocumentRoot /var/www/html/suitecrm

    <Directory "/var/www/html/suitecrm">
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog /var/log/httpd/suitecrm_error.log
    CustomLog /var/log/httpd/suitecrm_access.log combined
</VirtualHost>

> The AllowOverride All line lets SuiteCRM’s .htaccess file manage URL rewriting without manual Apache edits.

9. Restart Services
sudo systemctl enable --now httpd
sudo systemctl restart httpd

Now point your browser to http://suitecrm.yourdomain.com. The installer will launch, asking for the database credentials you created earlier and a few optional settings.

> If the page fails to load or throws “PHP Fatal error: Uncaught Error: Call to undefined function …”, double‑check that all PHP extensions are installed and Apache restarted after any changes.

10. Post‑Installation Tweaks
  • SSL: Use Let’s Encrypt for free HTTPS certificates (sudo dnf install certbot python3-certbot-apache).
  • Performance: Enable PHP OPCache via /etc/php-fpm.d/www.conf or the Apache module.
  • Backups: Schedule regular database dumps and file system snapshots.

You’ve just installed SuiteCRM on CentOS 8 without pulling a coffee cup. If you hit snags, check that every package is from the right repo and that your firewall isn’t blocking port 80/443. Happy CRM‑ing!