The world knows that cPanel/WHM is not too Django, or python friendly. However, this is a step by step tutorial which will help you install Python 2.7 with mod_wsgi onto CentOS 5 or 6 and cPanel so that you can begin Python development on a cPanel/WHM VPS or server. All of our Shared and Reseller plans come with a Django/Python friendly hosting environment.
This tutorial has been updated on 8/19/13.Prerequisites:
CentOS 5/6 32 or 64 bit with root access
cPanel
Note: We are not using cPanel custom modules guide because it only works with built-in Python 2.6.Creating Python folder
mkdir /usr/src/python2.7
cd /usr/src/python2.7
If required by your project, you can install SQLite by using WHM's built in 'Easy Apache' script and selecting 'MySQLI' on the 'exhaustive list' or options.Installing Python 2.7 into alternate location since we don't want to break Centos 5/6 (yum) that uses Python 2.4
mkdir /usr/src/python2.7
cd /usr/src/python2.7/
wget http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tgz
tar zxvf Python-2.7.5.tgz
cd Python-2.7.5
./configure --prefix=/opt/python2.7 --with-threads --enable-shared
make
make installCreating symbolic link to the alternate Python version
ln -s /opt/python2.7/bin/python /usr/bin/python2.7
echo '/opt/python2.7/lib'>> /etc/ld.so.conf.d/opt-python2.7.conf
ldconfigLet's test if new Python version works
/usr/bin/python2.7If successful you will see something like this:
Python 2.7.2 (default, Sep 3 2011, 18:28:42)[GCC 4.1.2 20080704 (Red Hat 4.1.2-50)] on linux2press control+D to exit
Now we need to install Python setup-tools
cd /usr/src/python2.7/
wget http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg
sh setuptools-0.6c11-py2.7.egg --prefix=/opt/python2.7Installing virtualenv to our Python 2.7
cd /opt/python2.7/bin/
./easy_install virtualenvInstalling mod_wsgi (this module will work only with python 2.7)
cd /opt/python2.7/lib/python2.7/config/
ln -s ../../libpython2.7.so
cd /usr/src/python2.7/
wget http://modwsgi.googlecode.com/files/mod_wsgi-3.3.tar.gz
tar zxvf mod_wsgi-3.3.tar.gz
cd mod_wsgi-3.3
./configure --with-python=/opt/python2.7/bin/python
make
make installWe need to avoid cPanel's easy_apache clearing up /usr/local/apache/modules folder
mkdir /usr/local/apache/extramodules
mv /usr/local/apache/modules/mod_wsgi.so /usr/local/apache/extramodules/Include mod_wsgi into Apache configuration
nano /usr/local/apache/conf/includes/pre_virtualhost_global.confpaste:
LoadModule wsgi_module /usr/local/apache/extramodules/mod_wsgi.so
AddHandler wsgi-script .wsgiBefore we restart Apache, lets test if we have the correct configuration
service httpd configtestYou should get this answer:
Syntax OKNow restart Apache
/scripts/restartsrv httpd
Python 2.7 with mod_wsgi is now installed on your cPanel server.You can create a test.wsgi file to test Python scripts
import os, sys sys.path.append('.') def application(environ, start_response): status = '200 OK' output = 'Testing WSGI!\n' response_headers = [('Content-type', 'text/plain'), ('Content-Length', str(len(output)))] start_response(status, response_headers) return [output]