How to Serve Django Applications with Apache and mod_wsgi on Ubuntu 16.04 LST

How to Serve Django Applications with Apache and mod_wsgi on Ubuntu 16.04 LST

View on GitHub

How to Serve Django Applications with Apache and mod_wsgi on Ubuntu 16.04 LST

Author : wiflux@gmail.com Dharminder Singh Negi

Project home:

https://wiflux.github.io/setup-django-apache/

Step 1 : Install Apache

$ sudo apt-get update
$ sudo apt-get install apache2

Step 2 : Install apache2 mod wsgi and pip

For Python 2.x
$ sudo apt-get update
$ sudo apt-get install libapache2-mod-wsgi
$ sudo apt-get install python-pip
For Python 3.x
$ sudo apt-get update
$ sudo apt-get install libapache2-mod-wsgi-py3
$ sudo apt-get install python3-pip

Step 3 : Install virtualenv and setup

For Python 2.x
$ sudo pip install virtualenv
$ cd /var/www/html/ 
$ virtualenv -p python myenv //if deafult python version is default 2.x
For Python 3.x
$ sudo pip3 install virtualenv
$ cd /var/www/html/ 
$ virtualenv -p python3 myenv 

Step 4 : Activate virtual environment

$ source venv/bin/activate

Step 5 : Install Django

(myenv) $ pip install -e django

Step 6 : Check Django Version

(myenv) $ python -m django --version

Step 7 : Create new Django Application

(myenv) $ django-admin startproject mysite

Step 8 : Check your Django Application

(myenv) $ cd mysite
(myenv) $ python manage.py runserver
November 03, 2017 - 13:01:32
Django version 1.11.6, using settings mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Step 9 : Test application on browser

Open http://127.0.0.1:8000/ Url into your browser if you will see a webpage then congratulation Django is working properly.

Step 10 : Configure Django Project with Apache.

First you should exit from virtual environment by using “deactivate” command. Then you need to edit apache virtual host file.

(myenv) $ deactivate
$ sudo nano /etc/apache2/sites-available/000-default.conf 

Step 11: Now Add below listed settings.

<VirtualHost *:80>
        ServerName mysite.com

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html/mysite
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined


       WSGIDaemonProcess mysite python-home=/var/www/html/myenv/python-path=/var/www/html/mysite
WSGIProcessGroup mysite
       WSGIScriptAlias / /var/www/html/mysite/mysite/wsgi.py process-group=mysite

      <Directory /var/www/html/mysite/mysite>
           <Files wsgi.py>
                  Require all granted
            </Files>
      </Directory>
</VirtualHost>

Referance : Django Documentation

Step 11: Final Test

Now open your domain name i.e http://mysite.com or your server ip address i.e http://192.168.100.23 into your browser.