Moved to http://forum.interserver.net/forum/threads/beta-convert-to-nginx-on-a-centos-cpanel-server.1857/
I’ve been working on a script slowly to convert a cpanel server to nginx for a while. I consider the script now to be good enough to allow others to use it. Some things to consider:
* tested on centos 5/6
* only available for cpanel
* I don’t have an easy way to convert back yet (but will add this in and show below how it can be easily removed.
* You must be able to run commands as root in SSH
* non static content is proxied to apache
Converting to nginx
Run the following ssh commands
Code:
rsync -a rsync://mirror.trouble-free.net/admin /admin
/admin/upscripts
1) Install + convert
/admin/convert2nginx yes all
Nginx will be installed, the apache vhosts converted and started up. But you are not done, you should also
2) Add to cron
*/2 * * * * /admin/nginx_monitor.sh >/dev/null 2>&1
3) Remove fileprotect
/scripts/disablefileprotect
4) Configure mod_rpaf by adding the below to /usr/local/apache/conf/includes/pre_virtualhost_global.conf
The install process also configured mod_rpaf. Note change RPAFproxy_ips to your server IPs.
LoadModule rpaf_module modules/mod_rpaf-2.0.so
RPAFenable On
# Enable reverse proxy add forward
RPAFproxy_ips 127.0.0.1 10.0.0.1
# which ips are forwarding requests to us
RPAFsethostname On
# let rpaf update vhost settings
# allows to have the same hostnames as in the "real"
# configuration for the forwarding Apache
RPAFheader X-Forwarded-For
# Allows you to change which header mod_rpaf looks
# for when trying to find the ip the that is forwarding
# our requests
Once done restart apache with /scripts/restartsrv_httpd
So what just happened? /admin/convert2nginx did the following
* installed nginx
* installed mod_rpaf
* converted the vhosts to nginx (/usr/local/nginx/conf/virtual.include)
* added /admin/nginx_monitor.sh to /etc/rc.d/rc.local
* created /scripts/legacypostwwwacct and /etc/logrotate.d/nginx
* change /var/cpanel/cpanel.config to reflect apache_port=0.0.0.0:81
Your steps are to add the cron and configure mod_rpaf, and if needed disable file protect.
Disabling nginx
To disable edit /var/cpanel/cpanel.config and change apache_port=0.0.0.0:81 to apache_port=0.0.0.0:80
Save and run
killall -9 nginx
/usr/local/cpanel/whostmgr/bin/whostmgr2 --updatetweaksettings
/usr/local/cpanel/bin/build_apache_conf
/scripts/restartsrv_httpd
nginx_monitor.sh will not run if the apache port is not set to 81
To remove completely: delete /usr/local/nginx, /etc/logrotate.d/nginx, /scripts/legacypostwwwacct, nginx_monitor from cron and /etc/rc.d/rc.local startup of nginx
To do
Add in support for file protect (better to get cloudlinux with cagefs anyway)
Add in DA support
Add in removal script
John Quaglieri
InterServer Inc