Category Archives: Development

Django Centos 6 Beginners Installation Guide

NOTE: This article was rewritten for CentOS 6.4. please read the updated post.


Django Centos 6

So you want your first django centos based web site? This is quite easy to install and configure. I’ll cover how to install Python/Django on your centos.

Django Centos


  • Centos 6.x
  • Apache (httpd)


What is Python?

Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Its syntax is said to be clear and expressive.” from Wikipedia.



What is Django?

“Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.” from

Installing Python


you may need the EPEL repositories for Centos.

cd /opt/
rpm -Uvh epel-release-6-8.noarch.rpm
rm epel-release-6-8.noarch.rpm -f


Installation Process

Simple as:

yum install python

test python by typing: “python” and you should see something similar to:

As for this time being of writing (June 18 2012), the version of python@EPEL is 2.6.6

Django works with any Python version from 2.6.5 to 2.7. It also features experimental support for versions 3.2 and 3.3. All these versions of Python include a lightweight database called SQLite so you won’t need to set up a database just yet unless you need other SQL


Installing SQL

If you need other SQL Server else then SQLite,  you can follow:
MySQL/MongoDB/CouchDB on RHEL/Centos 6.3
If you don’t need SQL and you installed Python 2.5 or later, you can skip this step for now.





Installing Django

yum install Django


Testing Django

Test Django by typing python on your command and then:

import django
print django.get_version()

As you can see, the RPM version is version 1.3.1, while the current release version is 1.4.1. while you are not too far behind using EPEL, you won’t get to play with the last options. Internationalization: in template code is not available in 1.3.1 for example but only from Django 1.4



Creating Project

From the command, cd into a directory where you’d like to store your app, then run the following command:

django-admin startproject mysite
cd mysite


Starting Server

python runserver

You’ve started the Django development server, a lightweight Web server – easier to startwithout having to deal with configuring a production server — such as Apache — until you’re ready for production.

Browse to with your Web browser. You’ll see a “Welcome to Django” page. It worked!

To change port:

python runserver 8080

If you need to start the server to answer not only locally, use:

python runserver


Remember: Apache loads Django environment when starting and keep running it even when source is changed! I suggest you to use Django ‘runserver’ (which automatically restarts on source code changes) in development sessions, unless you need some Apache-specific features.


Configure more…

Config Database

Edit mysite/ It’s a normal Python module with module-level variables representing Django settings.

Help here.


Django using Apache

To run your Django application inside apache – use either mod_python or mod_wsgi, Support for mod_python will be deprecated in a future release of Django. If you are configuring a new deployment, you are strongly encouraged to consider using mod_wsgi or any of the other supported backends.


Install mod_python

For this to work, you must have apache installed and configured.

yum install mod_python

python using mod_python

you need to configure you apache/VirtualHost to:

    AddHandler mod_python .py
    PythonHandler mod_python.publisher | .py
    AddHandler mod_python .psp .psp_
    PythonHandler mod_python.psp | .psp .psp_
    PythonDebug On


Testing mod_python

Create a ‘’ file in your apache server. put inside:

<% req.write("Hello World!") %>

and browse to www.your.server/ and you should see the “Hello World!” there.

Django using mod_python

Edit your httpd.conf file:

<Location "/mysite/">
    SetHandler python-program
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE mysite.settings
    PythonOption django.root /mysite
    PythonDebug On

read more…



Install mod_wsgi

Deploying Django with Apache and mod_wsgi is the recommended way to get Django into production.

yum install mod_wsgi


to use mod_wsgi, create an apache folder inside your project and create a django.wsgi file:

import os, sys
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'

import django.core.handlers.wsgi

application = django.core.handlers.wsgi.WSGIHandler()


and configure your apache with:

<VirtualHost *:80>

WSGIScriptAlias / /var/www/django/mysite/apache/django.wsgi

# Alias /robots.txt /var/www/django/mysite/static/robots.txt
# Alias /favicon.ico /var/www/django/mysite/static/favicon.ico
Alias /static/admin/ /usr/lib/python2.6/site-packages/django/contrib/admin/media/
Alias /static/ /var/www/django/mysite/static/
Alias /media/ /var/www/django/mysite/media/

<Directory /var/www/django/mysite>
Order allow,deny
Allow from all

<Directory /var/www/django/mysite/media>
Order deny,allow
Allow from all

<Directory /var/www/django/mysite/static>
Order deny,allow
Allow from all


read more on: multiple django sites with apache & mod_wsgi



That’s it!


You’ve Python / Django installed on your Centos 6.3 and a new project template waiting for you to work on.


Continue reading…

* this article is an edited version of an older article.

Android preference multiple dependency with CheckBoxPreference

Android preference multiple dependency

Android preference multiple dependency is not out-of-the-box feature until api level 14 introduced us with SwitchPreference (extends TwoStatePreference) to implement such feature. the old CheckBoxPreference can’t do that.


If your app is designed for newer systems only, (min-api equal or higher than 14) that won’t be a problem for you – because you can use the new SwitchPreference element to get at least 2 states, but if your app designed to work with older api support, or more than 2 dependencies on one element – you need another method.

Note: you can always implement both ways! use the ‘/xml-v14‘ directory to create multiple version of your XML, better with include, one for API 14 with SwitchPreference, and one for the old API’s with the following solution.

Continue reading

Tutorial: Your first WSGI Python web application served on Apache HTTPd.


We’ll create a new python project using wsgi (web server gateway interface)



Python based web applications can be served in several ways. You can use the old and good CGI interface, or use the more common used mod_python. FastCGI and SCGI are also an option. but most of those ways supports the WSGI interface which is the recommended way. You can learn more about each way, and the cons and pros of each, and what is wsgi  in this great tutorial/article: How to use python in the web.

We’ll build a skeleton for a Python based WSGI web application hosted on Apache HTTPd. I’ve choosed WSGI over other methods to promote web application portability across a variety of web servers.



  • Python
  • Apache HTTPd Service running and working. trim instance is better.




red-hat/fedora/centos: install mod_wsgi using:

yum install mod_wsgi

debain/ubuntu: install mod_wsgi using:

apt-get install mod_wsgi


Virtual Application

configure your httpd with:

WSGIScriptAlias /myapp /var/www/myapp/myapp.wsgi
<Directory /var/www/myapp>
   Order allow,deny
   Allow from all
WSGIScriptAlias /myapp /var/www/myapp/myapp.wsgi
<Directory /var/www/myapp>
   Order allow,deny
   Allow from all



Create the file myapp.wsgi at ‘/var/www/myapp’ and fill it with the example from mod_wsgi documentation:

def application(environ, start_response):
    status = '200 OK'
    output = 'Hello World!'
    response_headers = [('Content-type', 'text/plain'),
                        ('Content-Length', str(len(output)))]
    start_response(status, response_headers)
    return [output]
def application(environ, start_response):
    status = '200 OK'
    output = 'Hello World!'

    response_headers = [('Content-type', 'text/plain'),
                        ('Content-Length', str(len(output)))]
    start_response(status, response_headers)

    return [output]

You may need to restart your apache using: service httpd restart.

Now use your browser to see the ‘Hello World’ response from your first wsgi server.



More information


Happy wsgi python-ing…!

CodeLobster Handy Code Tools Review – Free portable IDE for PHP/HTML/CSS/JavaScript development


Excited today, I’m going to try a new IDE for Windows: CodeLobster PHP Edition 4.5.1.

With almost 30 years experience in development, from the age of Commodore & QBasic to today’s VS, Eclipse, NetBeans, Vi, etc….  I’ve used them all to create some code (even  NotePad). Sometimes, I am using more then one editor at once!


Continue reading

Fix WordPress Plugin HTML5 Swiffy Insert

Google Swiffy

Swiffy is a web-based tool developed by Google that converts SWF files to HTML5.
Its main goal is to display Flash contents on devices that do not support Flash, such as iPhone, iPad, and Android Tablets.

Continue reading

Django: Preserve table data when changing model (adding fields)


Django, out-of-the-box doesn’t knows how to add rows to your db when the model changed, You have 2 options:

  1. manually add the field to the db. (I won’t demonstrate this)
  2. export data > reset your db > import data.

Continue reading

Create a Google Adsense Responsive Design using JavaScript


In this tutorial we will explain how to implement a Google Adsense Responsive Design without violating Google Adsense Policy.

Continue reading