How to Install WHMCS on a Plesk Server, Step by Step

WHMCS 9 requirements (PHP 8.2+, ionCube 13, MySQL), creating the site in Plesk, running the installer, the cron job and the first settings to lock down.

Published
Reading time
4 min

WHMCS is the billing and client-area system most hosting companies run on: it takes orders, raises invoices, creates the hosting account in Plesk and answers support tickets, all under your brand. Installing it takes about half an hour if the server already meets the requirements. This guide walks through a clean install on a Plesk server, which is exactly what our reseller plans provide.

What WHMCS 9 needs

Check these before you upload a single file. Most failed installs are one of these four.

Requirement WHMCS 9
PHP 8.2 minimum, 8.3 recommended
ionCube Loader version 13 or newer
Database MySQL 8 or MariaDB 10.6+
PHP extensions curl, gd, json, mbstring, openssl, pdo_mysql, xml, zip, intl

In Plesk, every one of these is a setting rather than a compile job. Under Websites & Domains → PHP Settings for the site, pick a PHP 8.3 handler (FPM served by Apache or nginx both work) and tick the extensions above. ionCube ships with Plesk's PHP builds; if php -v on that handler does not mention it, enable it under Tools & Settings → PHP Settings → the handler → ionCube.

Step 1: create the site

Run WHMCS on its own subdomain, not inside your marketing site. billing.yourbrand.com or my.yourbrand.com are the usual choices.

  1. Websites & Domains → Add Subdomain, name it, and let Plesk create the document root.
  2. Point the subdomain's DNS at the server if you manage DNS elsewhere.
  3. Issue a Let's Encrypt certificate straight away: SSL/TLS Certificates → Install. WHMCS will refuse to log you in over plain HTTP, and the licence check expects HTTPS.

Step 2: create the database

Databases → Add Database. Use a dedicated user with a long generated password and grant it access only to this database. Note the database name, user and password; the installer asks for them.

Step 3: upload the files

Download the release ZIP from your WHMCS account or, if the licence came with your hosting plan, from the link we send. Upload the ZIP through Files in Plesk and extract it into the subdomain's document root, so that index.php sits directly in the root, not in a whmcs/ subfolder.

Then rename the sample configuration file:

bash
mv configuration.php.new configuration.php
chmod 666 configuration.php

The installer needs to write to it once; you will tighten the permission afterwards.

Step 4: run the installer

Open https://billing.yourbrand.com/install/install.php in a browser. The installer checks PHP, ionCube and extensions first; anything red is a real blocker, so fix it in Plesk before continuing. Then:

  1. Accept the licence agreement.
  2. Enter the licence key.
  3. Enter the database name, user and password from step 2.
  4. Create the first administrator account. Use a real name and a strong password; this is the account that can see every client's data.

When it finishes, the installer tells you to delete the install/ directory. Do it now:

bash
rm -rf install/
chmod 400 configuration.php

Step 5: set up the cron job

WHMCS does nothing on a schedule until you give it a cron job. Invoices, suspensions, reminders and domain renewals all depend on it. In Plesk, Scheduled Tasks → Add Task, type Run a PHP script, pointing at:

/var/www/vhosts/yourbrand.com/billing.yourbrand.com/crons/cron.php

Run it every five minutes with the -q flag so it produces no output. WHMCS decides internally which tasks are due; running it often is correct and cheap. Confirm it is working under Configuration → System Settings → Automation Settings, where the last run time updates.

Step 6: the first five settings

Before you create products, set these under Configuration → System Settings:

  • General Settings → General: company name, the WHMCS URL with https://, and the logo.
  • General Settings → Localisation: currency, date format and time zone. Changing currency after you have invoices is painful, so decide now.
  • Mail: an SMTP account on your own domain, so invoices and welcome emails do not land in spam. Our guide on fixing WHMCS email delivery covers the details.
  • Two-Factor Authentication: turn it on for administrators.
  • Servers: add your Plesk server so orders provision automatically, covered in connecting WHMCS to Plesk.

Move the writable directories out of the web root

WHMCS writes to three directories: attachments, downloads and templates_c. Leaving them under the document root means anything uploaded through a ticket is a public URL. Move them one level up and tell WHMCS where they went in configuration.php:

php
$attachments_dir = "/var/www/vhosts/yourbrand.com/whmcs-data/attachments/";
$downloads_dir = "/var/www/vhosts/yourbrand.com/whmcs-data/downloads/";
$templates_compiledir = "/var/www/vhosts/yourbrand.com/whmcs-data/templates_c/";

The WHMCS security checklist goes through this and the rest of the lock-down.

When the licence came with your hosting

If you are on a VPSPioneer Partner Grow or Partner Pro plan, the WHMCS licence is included and we do this whole install for you, on your reseller account, and connect it to your Plesk panel. Open a ticket with the subdomain you want to use and it is live within one working day.

#whmcs#plesk#installation#ioncube#billing

Keep reading

More from WHMCS

All guides

WHMCS

WHMCS Cron Not Running: How to Find the Cause and Fix It

Why invoices and suspensions stop when the WHMCS cron fails, the exact cron command for WHMCS 9, how to read the cron log, and the six failures we see most.

4 min read →

Plesk

Plesk for Beginners: A Tour of the Panel

Where everything is in Plesk — domains, files, databases, mail, DNS, SSL, PHP, backups, WordPress Toolkit — and what to click for the first ten jobs.

3 min read →

WordPress

How to Install WordPress on Plesk with WordPress Toolkit

Install WordPress on Plesk in two minutes with WordPress Toolkit, then set the day-one options: SSL, updates, hardening, backups and staging.

3 min read →