Install vTiger CRM on CentOS 8 – Quick‑Start Guide
You’ll learn how to get a fresh vtiger install up and running on CentOS 8 in under an hour, with all the tweaks that actually matter so your database stays happy and your web server doesn’t choke.
1. Get the machine ready
sudo dnf update -y sudo dnf install epel-release -y # EPEL for extra packages
CentOS 8 ships with a lean set of repos; many PHP extensions live in EPEL, so you avoid pulling broken dependencies later.
2. Install Apache and turn it on
sudo dnf install httpd -y sudo systemctl enable --now httpd
Apache is the de‑facto web server vtiger expects. The enable flag ensures it starts at boot, which saves you from the “port 80 in use” drama when you reboot.
3. Set up MariaDB (or MySQL)
sudo dnf install mariadb-server -y sudo systemctl enable --now mariadb sudo mysql_secure_installation # Follow prompts, set root password
vtiger needs a relational DB with UTF‑8 support. Securely installing MariaDB removes the default “anonymous user” trap that can expose your data.
4. Install PHP and extensions
sudo dnf install php php-mysqlnd php-gd \
php-xml php-json php-mbstring php-curl -y
The mbstring and curl packages are notorious for breaking vtiger’s Composer bootstrap if missing. Without them, the installer will error out before you even hit “next.”
> I once installed vtiger on a fresh CentOS 8 VM, skipped php-mbstring, and got stuck with “Call to undefined function mb_strlen()” in the composer output.
5. Configure PHP for vtiger
Edit /etc/php.ini:
memory_limit = 256M max_execution_time = 180 post_max_size = 64M upload_max_filesize = 20M date.timezone = America/New_York # or your local zone
vtiger can be memory hungry during the import of demo data. A higher limit prevents silent timeouts. The timezone avoids “DateTime conversion error” warnings.
6. Open HTTP ports in firewalld
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --reload
If you’re running on a cloud instance, the default firewall blocks port 80 and you’ll see “Unable to reach vtiger” from a browser.
7. Create the database & user for vtiger
mysql -u root -p CREATE DATABASE vtiger CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; GRANT ALL PRIVILEGES ON vtiger.* TO 'vtigeruser'@'localhost' IDENTIFIED BY 'StrongPass!123'; FLUSH PRIVILEGES; EXIT;
The UTF‑8 mb4 collation supports emojis and special characters, which vtiger can store in customer notes. Granting privileges to a dedicated user keeps your root account safer.
8. Download vtiger
cd /var/www/html sudo wget https://sourceforge.net/projects/vtigercrm/files/latest/download -O vtiger.zip sudo unzip vtiger.zip sudo rm vtiger.zip
Downloading from SourceForge ensures you get the latest community release. Unzipping into /var/www/html places it where Apache expects public files.
9. Set correct ownership & permissions
sudo chown -R apache:apache vtigercrm
sudo find vtigercrm -type d -exec chmod 750 {} \;
sudo find vtigercrm -type f -exec chmod 640 {} \;
Apache runs as the apache user; otherwise it can’t read config files or write logs. Tight permissions prevent a rogue script from tampering with your PHP code.
10. Configure SELinux (if enabled)
sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/html/vtigercrm(/.*)?" sudo restorecon -Rv /var/www/html/vtigercrm
SELinux is a common source of “Permission denied” errors. Setting the proper context lets Apache read vtiger’s files without compromising security.
11. Finish the web‑based setup
Navigate to http://your-server-ip/vtigercrm/ in your browser. The wizard will:
1. Detect PHP and MySQL versions.
2. Ask for database credentials you created earlier.
3. Allow you to import demo data or start with a blank slate.
What to watch out for?
If the installer complains about “cannot connect to database,” double‑check that vtigeruser can log in from localhost. A common pitfall is an incorrect password or missing privileges, especially on fresh installations where MySQL’s authentication plugin defaults have changed.
12. Final tweaks
Create a symbolic link for easier access:
sudo ln -s /var/www/html/vtigercrm /var/www/html/vtiger
Now you can hit http://your-server-ip/vtiger instead of the longer path. It’s a small vanity, but it makes URLs cleaner when you’re juggling multiple applications.
There you have it—vtiger CRM running on CentOS 8 with all the knobs turned so you can focus on managing leads rather than chasing PHP errors.