As a developer, it is important to understand who you are developing for. When developing an application for cPanel & WHM servers, there are 5 potential customer profiles to be aware of:
- Data centers
- Website owners
- System administrators
- Hosting providers
Understanding these profiles will help you scope and define a project.
In this article, we will focus on Data centers and the various problems you might encounter when working with them.
Data centers make up a nice segment of the cPanel & WHM customer base. They include the likes of SoftLayer, InMotion Hosting, Knownhost, SingleHop, as well as a long list of our worldwide hosting providers. These organizations have spent a considerable amount of time automating server, cloud and VPS deployments. As an application developer, being part of the deployment process is important.
Automated server deployments come in many shapes and sizes, but the important thing to remember is to avoid having a manual installation step as part of the deployment process. Imagine deploying thousands of servers each month and having to log into each in order run a manual installation at the end. This is a real problem for streamlined product delivery. Overcoming this problem can help you, the application developer, gain access to a core distribution channel.
The ideal scenario is getting your application integrated with the deployment, or ordering, process. By this I mean when a potential data center customer is navigating the ordering system, your application becomes a selectable configuration option included with the server purchase, and it is automatically installed and configured. Without automation capability you will have to overcome the challenge of convincing the data center to manually install and configure your application, for each customer who requests it. The closer you can get to achieving automated deployments, the more interested data centers will be in your product.
One way to resolve this problem is to distribute your application as an RPM. An RPM allows the data center to automate installation and configuration at deployment time, without investing resources in working with a variety of third-party applications, each with their own peculiar method of installation and configuration. Decreasing the amount of work involved for a potential customer or client will increase the likelihood of their being willing to distribute your application.
There are other advantages, as well as disadvantages, to using RPMs for your application installation. RPMs are a standardized package format on the Linux platform. This means that Linux-based cPanel & WHM servers come standard with tools to manage RPMs from the command line. Such systems also provide a means of integrating custom RPMs at operating system installation time — for example, using kickstart profiles.
A disadvantage of using RPM is it locks you out of the small part of the cPanel & WHM server base that does not use an RPM package format. While that portion of the server base is expected to diminish over time, excluding yourself from some customers is something to consider.
There is more work involved in packaging your application as an RPM than as a tarball. There are numerous resources available to help you learn and overcome these challenges, such as the book Maximum RPM.
Once in the deployment process, an issue can arise if your application is installed too soon in the process. For example, if your application requires the basic cPanel & WHM setup to first be performed, there may be insufficient data in /etc/wwwacct.conf for your application’s needs. A resolution for this problem is to create a WHM Plugin that handles the configuration of your application. This way, your configuration step can be performed after the WHM Initial Setup Wizard has been run.