HoganHost blog

How to Fix “Apache Passenger is Required by NodeJS/Python Selector” in cPanel

 You’re trying to deploy a Python app or set up a Node.js environment through cPanel’s built-in selectors and instead of getting started, you’re hit with a wall:

“Apache Passenger is required by Python Selector. Please, contact your hoster.”

Frustrating? Yes. But this is actually one of the more straightforward server-level fixes out there,  if you know what you’re looking at. This guide will walk you through exactly what’s happening, why it happens, and how to resolve it permanently in under two minutes.

What Is Apache Passenger, and Why Does cPanel Need It?

Before jumping into commands, it’s worth understanding the “why” because that context will save you from running into this again.

Phusion Passenger (commonly called mod_passenger) is an application server that acts as the bridge between Apache (your web server) and your application runtime, whether that’s Python or Node.js. Without it, Apache has no way to understand or serve requests destined for these environments.

cPanel’s Python Selector and NodeJS Selector are wrappers that make app deployment user-friendly inside the control panel. But underneath those polished UI buttons, they both depend entirely on Passenger being installed and active on the server. If Passenger isn’t there, the selector tools have nothing to hand off to,  hence the error.

This is a server-level dependency, not a cPanel account issue. Regular cPanel users cannot fix this themselves. It requires root access to the server. If you’re on shared hosting, this is a conversation you’ll need to have with your hosting provider. If you manage your own VPS or dedicated server, keep reading.

Who This Error Actually Affects

This issue typically surfaces in these situations:

  • You’ve just provisioned a new VPS or dedicated server with cPanel/WHM and haven’t fully configured the EasyApache environment yet.
  • A server migration was completed but the Passenger module wasn’t carried over.
  • A WHM update or EasyApache rebuild silently removed or skipped the Passenger package.
  • Your hosting provider has a lean default server stack and didn’t include Passenger in their base setup.

If you’re a shared hosting customer seeing this message, skip down to the “I Don’t Have Root Access” section below.

The Fix: Installing mod_passenger via SSH

You’ll need to be logged into your server as the root user via SSH, or use the Terminal tool inside WHM.

The exact package name you’ll install depends on your CloudLinux version. Here’s how to check yours, followed by the right command for each version.

Step 1: Check Your CloudLinux Version (Optional but Recommended)

cat /etc/cloudlinux-release

This will print something like CloudLinux release 7.9 match that to the commands below.

Step 2: Install the Correct Passenger Package

Cloud Linux 6

yum -y install ea-ruby24-mod_passenger

CloudLinux 7

yum -y install ea-ruby27-mod_passenger

CloudLinux 8

yum -y install ea-ruby27-mod_passenger

Cloud Linux 9

yum -y install ea-apache24-mod-passenger

Note: CloudLinux 9 uses a different package naming convention than its predecessors ea-apache24-mod-passenger instead of the ea-ruby prefixed packages. Don’t copy the wrong one across versions.

Step 3: Verify the Installation

Once the install completes, confirm Passenger is active before heading back to cPanel:

apachectl -M | grep passenger

If you see passenger_module listed in the output, you’re good. If nothing returns, try restarting Apache:

systemctl restart httpd

Then run the grep command again. If it still doesn’t show, there may be an EasyApache profile conflict, see the troubleshooting section below.

Step 4: Confirm in cPanel

Log back into the cPanel account that was showing the error and navigate back to Python Selector or NodeJS Selector. The error banner should be gone, and you should now see the option to create new applications.

What If the Error Comes Back After a WHM Update?

This is more common than it should be. When EasyApache 4 runs a profile rebuild which can happen automatically during updates,  it rebuilds your Apache configuration based on saved profile settings. If Passenger wasn’t explicitly included in that saved profile, it gets stripped out.

The permanent solution: Add Passenger to your EasyApache 4 profile.

  1. In WHM, go to EasyApache 4 under the Software section.
  2. Click Customize on your current profile.
  3. In the Apache Modules section, search for Passenger and ensure it’s toggled on.
  4. Save and provision the profile.

This tells EasyApache to treat Passenger as a required part of your Apache setup on every future rebuild not an optional extra.

I Don’t Have Root Access — What Now?

If you’re on shared or reseller hosting, you won’t have the ability to run any of these commands. The Passenger module lives at the server level, and only your hosting provider can install it.

Here’s what to do:

  1. Open a support ticket with your host referencing this specific error message: “Apache Passenger is required by Python/NodeJS Selector.”
  2. Mention the package names listed above for their CloudLinux version, this saves back-and-forth and shows you’ve already diagnosed the issue.
  3. Ask if they support Passenger on shared plans at all, some budget hosts don’t offer it on shared tiers by design, in which case you may need to upgrade to a VPS to use Python or Node.js app deployments through cPanel.

Framing the request clearly tends to cut ticket resolution time significantly. Most competent support teams can resolve this in one response.

Common Mistakes to Avoid

Installing the wrong package for your OS version. The CloudLinux 6/7/8 packages use the ea-ruby prefix, while CloudLinux 9 uses ea-apache24. Mixing these up won’t break anything, but the install will fail and you’ll waste time debugging a non-issue.

Expecting instant results without restarting Apache. The module loads when Apache starts. If you install Passenger but don’t restart httpd, cPanel still won’t see it.

Not checking EasyApache profiles. Installing via yum directly works immediately, but if you don’t add Passenger to your EA4 profile, the next profile rebuild will undo your fix silently.

Assuming this is a cPanel account-level issue. It isn’t. No amount of adjusting cPanel settings, reinstalling Python apps, or changing PHP handlers will address this. It has to be resolved at the server level.

Quick Reference Summary

CloudLinux Version Install Command
CL 6 yum -y install ea-ruby24-mod_passenger
CL 7 yum -y install ea-ruby27-mod_passenger
CL 8 yum -y install ea-ruby27-mod_passenger
CL 9 yum -y install ea-apache24-mod-passenger

After installing: Restart Apache → Verify with apachectl -M | grep passenger → Add to EasyApache profile to prevent regression.

If you’ve followed this guide and are still seeing the error, there’s likely an EasyApache profile conflict or a permissions issue with the module itself. At that point, checking the Apache error log at /usr/local/apache/logs/error_log will usually surface the underlying cause quickly.

Check out our reliable web hosting

Leave a Comment

Your email address will not be published. Required fields are marked *