Django is a Python-based free and open-source web framework that can be used for developing dynamic websites and web applications. In this article, we will explain the procedures to configure Django with Apache in CentOS 7.



  • Server running with CentOS 7
  • Static IP address configured on your system. (We are using IP as an example)
  • User with sudo privilege.


Install Apache Web Server

Before starting the configuration, update the server with the latest version using the following command. It will install all the latest patches and security updates to your system.

sudo yum update -y


Install the EPEL repository on your server using the following command.

sudo yum install epel-release -y


After enabling the EPEL repository, you can install Apache and other required packages using the following command.

sudo yum install python2-pip httpd mod_wsgi -y

Proceed to the next step once the installation is completed.


Install Django


Before installing Django, it is required to create the Python virtual environment. So you will need to install “virtualenv”.

sudo pip install virtualenv


After installing the “virtualenv” create a project directory for Django.

sudo mkdir /opt/djangoproject


Create a Python virtual environment using the following commands.

cd /opt/djangoproject sudo virtualenv djangoprojectenv


Enable the virtual environment to install packages.

sudo source djangoprojectenv/bin/activate


Install Django in the djangoprojectenv shell using pip command.

djangoprojectenv) [root@server djangoproject]# pip install django


Once the installation is completed, you can verify the Django version using the following command.

(djangoprojectenv) [root@server djangoproject]# django-admin --version


You should see something similar to:



Create the Django Project


Once Django is installed in the directory, create first Django project using the following command.

djangoprojectenv) [root@server djangoproject]# startproject myfirstproject.


Next, Modify the file “"

(djangoprojectenv) [root@server djangoproject]# vi myfirstproject/


Add the following line at the end of the file and save.

STATIC_ROOT = os.path.join(BASE_DIR, "static/")


Transfer the database of the project to the SQLite database using the command given below.

(djangoprojectenv) [root@server djangoproject]# ./ migrate


Output :

Operations to perform: 
Apply all migrations: admin, auth, contenttypes, sessions 
Running migrations: 
Applying contenttypes.0001_initial... OK 
Applying auth.0001_initial... OK 
Applying admin.0001_initial... OK 
Applying admin.0002_logentry_remove_auto_add... OK 
Applying contenttypes.0002_remove_content_type_name... OK 
Applying auth.0002_alter_permission_name_max_length... OK 
Applying auth.0003_alter_user_email_max_length... OK 
Applying auth.0004_alter_user_username_opts... OK 
Applying auth.0005_alter_user_last_login_null... OK 
Applying auth.0006_require_contenttypes_0002... OK 
Applying auth.0007_alter_validators_add_error_messages... OK 
Applying auth.0008_alter_user_username_max_length... OK 
Applying sessions.0001_initial... OK 


Create a superuser for Django. While creating superuser you will be asked to select a username, e-mail address and password.

(djangoprojectenv) [root@server djangoproject]# ./ createsuperuser 
Username (leave blank to use 'root'): djangoadmin 
Email address:   
Password (again):  
Superuser created successfully.


Collect all of the static content into the directory location we configured earlier using the following command.

(djangoprojectenv) [root@server djangoproject]# ./ collectstatic


Add server’s IP address to “" file to access Django from the remote machine.

(djangoprojectenv) [root@server djangoproject]# vi djangoprojectenv/lib64/python2.7/site-packages/django/http/

 Add server IP address as shown below and save the file.

allowed_hosts = ['localhost', '', '[::1]'


Test Django project by running the following command.

(djangoprojectenv) [root@server djangoproject]#./ runserver


Open your web browser and type the URL “", you should see your first Django page.



You can also access the Django admin page by typing the URL “" on your web browser. Enter username “djangoadmin" and the password which you have created earlier.



To exit from your virtual environment, use the following command.

(djangoprojectenv) [root@server djangoproject]# deactivate


Configure Django for Apache

After creating a Django project, it is time to configure Apache web server for Django. Create a new configuration file.

sudo vi /etc/httpd/conf.d/django.conf


Add the following code and save the file.

Alias /static /opt/djangoproject/static 
<Directory /opt/djangoproject/static>  
Require all granted 
<Directory /opt/djangoproject/myfirstproject>    
Require all granted    
WSGIDaemonProcess myfirstproject python-path=/opt/djangoproject:/opt/djangoproject/djangoprojectenv/lib/python2.7/site-packages 
WSGIProcessGroup myfirstproject 
WSGIScriptAlias / /opt/djangoproject/myfirstproject/


Restart Apache service and enable it to start at boot.

sudo systemctl restart httpd sudo systemctl enable httpd


Set proper ownership so “httpd" has permission to use the Django project directory.

sudo chown -R apache:apache /opt/djangoproject


You can access your Django site using the URL “" on your web browser without specifying any port.


Was this answer helpful? 0 Users Found This Useful (0 Votes)