For completing postgresql requirements of virtual environment, install “libpq-dev” and “python-dev” packages, outside of virtual environment.
$ deactivate (if you are in virtual environment)
$ sudo apt-get install libpq-dev python-dev
Re-activate virtual environment and install psycopg2 from pip repo.
$ pip install psycopg2
By the way, in the name of conformist approach install ipython in virtual environment.
$ pip install ipython
PostgreSQL engine and python connection libraries are ready.
Now, lets prepare wsgi file for current project. (I assumed apache and mod_wsgi installed and configured) I’m going to use /var/www/project path for example for environment root in wsgi file.
ENV_DIR = [‘/var/www/project’]
import site, os, sys
base = os.path.dirname(__file__)
sys.path.insert(0, base)
sys.path.append(os.path.dirname(base))
# Remember original path.
prev_sys_path = list(sys.path)
# Add each new site-packages directory.
for directory in ENV_DIR:
site.addsitedir(directory)
# For taking new directories to the front reorder path.
new_sys_path = []
for item in list(sys.path):
if item not in prev_sys_path:
new_sys_path.append(item)
sys.path.remove(item)
sys.path[:0] = new_sys_path
os.environ[‘PYTHON_EGG_CACHE’] = ‘/tmp/project_eggs’
sys.stdout = sys.stderr
os.environ[‘DJANGO_SETTINGS_MODULE’] = ‘%s.settings’ % os.path.basename(base)
from django.core.handlers.wsgi import WSGIHandler
application = WSGIHandler()
Place the wsgi file above into root of the django project which created inside of the virtual environment directory (eg. /var/www/project/django/)
So wsgi file is ready, and we can configure apache to use this wsgi file:
<VirtualHost *:80>
WSGIDaemonProcess project_name user=username group=usergroup processes=3 threads=15 inactivity-timeout=120 maximum-requests=50 python-path=/var/www/project/lib/pyton2.7/site-packages
WSGIProcessGroup project_name
WSGIApplicationGroup %{GLOBAL}
WSGIScriptAlias / /var/www/project/django/wsgi
ServerName project_name.com
ServerAdmin admin@project_name.com
CustomLog /var/www/project/django/log/access_log combined
ErrorLog /var/www/project/django/log/error_log
Alias /static “/var/www/project/django/static”
</VirtualHost>
Save this file under /etc/apace/sites-available as “project.conf”
Run “$ a2ensite project.conf” command and restart (or reload) the apache service.
Now you can see the running django installation at “http://www.project_name.com”

Son zamanlarda sanal sunucularla haşır neşir olduğumu son iki yazımdan anlamışsınızdır. Tabi çok profesyonel çözümler olmamakla birlikte şirket içinde 4 çekirdekli 8GB bellekli bir sunucunun hiçbir çekirdeğini ve 1mb belleğini heba etmeyecek şekilde hem dışarıya hem içeriye hizmet verebilmesini sağlamak amacıyla çözüm üretme çabası içindeyim. Buna sebep olarak geçen iki yazımdan sonra şimdi de Host makinedeki Apache dışarıya hizmet verirken Guest makinada kurulu olan Apache’nin apayrı veritabanı motoru ile apayrı bir projeyi sunmasını sağlamak gerekliliği doğdu.
Apache’yi kuracağımız bir modül ile DDoS saldırılarından koruyabilirsiniz.