How to Fix 'The error was: NoInstallationError("Could not find a usable 'nginx' binary. Ensure nginx exists, the binary is executable, and your PATH is set correctly.",)'
I’ll show you how to resolve the error The error was: NoInstallationError(“Could not find a usable ‘nginx’ binary. Ensure nginx exists, the binary is executable, and your PATH is set correctly.”,).
The process set up in How to Set Up Automatic SSL Certificate Renewal with Let’s Encrypt using certbot and crontab was failing with an error.
The following error message was output in the cron execution log:
Saving debug log to /var/log/letsencrypt/letsencrypt.log
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/codenote.net.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cert is due for renewal, auto-renewing...
Non-interactive renewal: random delay of 18.66088887793885 seconds
Could not choose appropriate plugin: The nginx plugin is not working; there may be problems with your existing configuration.
The error was: NoInstallationError("Could not find a usable 'nginx' binary. Ensure nginx exists, the binary is executable, and your PATH is set correctly.",)
Attempting to renew cert (codenote.net) from /etc/letsencrypt/renewal/codenote.net.conf produced an unexpected error: The nginx plugin is not working; there may be problems with your existing configuration.
The error was: NoInstallationError("Could not find a usable 'nginx' binary. Ensure nginx exists, the binary is executable, and your PATH is set correctly.",). Skipping.
All renewal attempts failed. The following certs could not be renewed:
/etc/letsencrypt/live/codenote.net/fullchain.pem (failure)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
All renewal attempts failed. The following certs could not be renewed:
/etc/letsencrypt/live/codenote.net/fullchain.pem (failure)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1 renew failure(s), 0 parse failure(s)
As the error message The error was: NoInstallationError(“Could not find a usable ‘nginx’ binary. Ensure nginx exists, the binary is executable, and your PATH is set correctly.”,) indicates, the PATH is not set properly, so let’s review the crontab PATH.
$ crontab -l
PATH=/usr/local/bin:/bin:/usr/bin
$ which nginx
/usr/sbin/nginx
Since this was the situation, you just need to add /usr/sbin to the PATH in crontab as follows:
$ crontab -l
PATH=/usr/local/bin:/usr/sbin:/bin:/usr/bin
That’s all from the Gemba, where we faced a crontab PATH configuration oversight issue.