How to deploy Django on Ubuntu with Postgresql and apache and python3.9 (Production level).

Sumit Kumar Sharan
2 min readDec 22, 2020

--

Step 1: Install the required libraries

i) To install Apache Server

“sudo apt-get install apache2”

ii) To install wsgi library

“sudo apt-get install libapache2-mod-wsgi-py3”

iii)To install python 3.9

a) Download python 3.9.1

wget https://www.python.org/ftp/python/3.9.1/Python-3.9.1.tgz

b) Extract it

tar -xf Python-3.9.1.tgz 

c) Go to the extracted directory

cd Python-3.9.1./configure --enable-optimizations 

d) Install make

sudo apt install build-essential

e) Now, Install it using following command

sudo make altinstall

f) Check installation

python3.9 --version

g) Set it as alternatives

sudo update-alternatives --install /usr/bin/python3 python /usr/bin/python3.7 1 sudo update-alternatives --install /usr/bin/python3 python /usr/local/bin/python3.9 2

h) Now Set Alternatives

$ sudo update-alternatives --config python3
There are 2 choices for the alternative python (providing /usr/bin/python3).

Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/local/bin/python3.9 2 auto mode
1 /usr/bin/python3.7 1 manual mode
2 /usr/local/bin/python3.9 2 manual mode

Press <enter> to keep the current choice[*], or type selection number:

i) Set python3 as python

nano ~/.bashrc
alias python=python3
source ~/.bashrc

Step 2: Changing the configuration file of apache2

i) To open the configuration file

“sudo nano /etc/apache2/sites-available/000-default.conf”

ii) Add following lines at the bottom of this file (Change the project name according to your project.)

WSGIDaemonProcess www-data python-home=/djangoProject/venv python-path=/djangoProject/myFirstProject
WSGIProcessGroup www-data
WSGIScriptAlias / /djangoProject/myFirstProject/myFirstProject/wsgi.py

<Directory /djangoProject/myFirstProject/myFirstProject>
Require all granted
</Directory>

Alias /media/ /djangoProject/myFirstProject/media/
Alias /static/ /djangoProject/myFirstProject/static/

<Directory /djangoProject/myFirstProject/static>
Require all granted
</Directory>

<Directory /djangoProject/myFirstProject/media>
Require all granted
</Directory>

After adding it will look as follows:

<VirtualHost *:80>

ServerName www.example.com

ServerAdmin webmaster@localhost
DocumentRoot /var/www/html

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

WSGIDaemonProcess www-data python-home=/djangoProject/venv python-path=/djangoProject/myFirstProject
WSGIProcessGroup www-data
WSGIScriptAlias / /djangoProject/myFirstProject/myFirstProject/wsgi.py

<Directory /djangoProject/myFirstProject/myFirstProject>
Require all granted
</Directory>

Alias /media/ /djangoProject/myFirstProject/media/
Alias /static/ /djangoProject/myFirstProject/static/

<Directory /djangoProject/myFirstProject/static>
Require all granted
</Directory>

<Directory /djangoProject/myFirstProject/media>
Require all granted
</Directory>

</VirtualHost>

Step 3: Check the syntax error

sudo apache2ctl configtest

Step 4: Restart Apache Server

sudo systemctl restart apache2

Hosting of Django Project on Apache Server is that much easy.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

No responses yet

Write a response