
How To Install and Configure Django with Postgres, Nginx, and Gunicorn On Ubuntu 24.04
Welcome to the Greenhost.cloud blog! In this post, we will guide you through the process of setting up a Django application using PostgreSQL as the database, Nginx as the web server, and Gunicorn as the application server on Ubuntu 24.04. By the end of this tutorial, you will have a fully functioning web application ready for production.
Prerequisites
Before we start, make sure you have:
- A server running Ubuntu 24.04
- Root or sudo privileges on your server
- Python 3 and pip installed
- Basic knowledge of the command line
Step 1: Update Your System
First, ensure your system is up to date by running the following commands:
sudo apt update
sudo apt upgrade -yStep 2: Install PostgreSQL
To install PostgreSQL, run:
sudo apt install postgresql postgresql-contrib -yAfter installation, log in to the PostgreSQL shell:
sudo -u postgres psqlCreate a new database and user:
CREATE DATABASE myproject;
CREATE USER myuser WITH PASSWORD 'mypassword';
ALTER ROLE myuser SET client_encoding TO 'utf8';
ALTER ROLE myuser SET default_transaction_isolation TO 'read committed';
ALTER ROLE myuser SET timezone TO 'UTC';
GRANT ALL PRIVILEGES ON DATABASE myproject TO myuser;Exit the PostgreSQL prompt:
\qStep 3: Install Required Packages
Next, install the required packages including Python, pip, and virtualenv:
sudo apt install python3 python3-pip python3-venv -yStep 4: Set Up Django Project
Create a directory for your Django project and navigate to it:
mkdir ~/myproject
cd ~/myprojectCreate a virtual environment and activate it:
python3 -m venv venv
source venv/bin/activateNow, install Django and the PostgreSQL adapter:
pip install django psycopg2Create a new Django project:
django-admin startproject myproject .Step 5: Configure Database Settings
Open the settings.py file in your Django project:
nano myproject/settings.pyFind the DATABASES section and update it to use PostgreSQL:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'myproject',
'USER': 'myuser',
'PASSWORD': 'mypassword',
'HOST': 'localhost',
'PORT': '',
}
}Step 6: Run Migrations
Now, apply the migrations to set up your database:
python manage.py migrateStep 7: Create a Superuser
To manage your Django application, create a superuser:
python manage.py createsuperuserStep 8: Test the Development Server
Run the development server to ensure everything is working:
python manage.py runserverVisit http://127.0.0.1:8000 in your browser. You should see the Django welcome page.
Step 9: Install Gunicorn
Stop the development server (Ctrl + C) and install Gunicorn:
pip install gunicornYou can test Gunicorn by running:
gunicorn --bind 0.0.0.0:8000 myproject.wsgi:applicationStep 10: Install Nginx
Install Nginx to serve your application:
sudo apt install nginx -yStep 11: Configure Nginx
Create a new Nginx configuration file for your project:
sudo nano /etc/nginx/sites-available/myprojectAdd the following configuration:
server {
listen 80;
server_name your_domain.com; # Replace with your domain or IP
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/your_user/myproject; # Replace with your username
}
location / {
include proxy_params;
proxy_pass http://unix:/home/your_user/myproject/myproject.sock; # Replace with your username
}
}Enable the new configuration:
sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabledTest the Nginx configuration:
sudo nginx -tIf everything is fine, restart Nginx:
sudo systemctl restart nginxStep 12: Create a Systemd Service for Gunicorn
Create a new service file for Gunicorn:
sudo nano /etc/systemd/system/gunicorn.serviceAdd the following content:
[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=your_user # Replace with your username
Group=www-data
WorkingDirectory=/home/your_user/myproject # Replace with your username
ExecStart=/home/your_user/myproject/venv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/your_user/myproject/myproject.sock myproject.wsgi:application
[Install]
WantedBy=multi-user.targetEnable and start the Gunicorn service:
sudo systemctl start gunicorn
sudo systemctl enable gunicornStep 13: Adjust Firewall Settings
If you have a firewall enabled, allow Nginx Full:
sudo ufw allow 'Nginx Full'Step 14: Test Your Application
Visit your domain or server’s IP address in your browser. You should see your Django application running!
Conclusion
Congratulations! You have successfully installed and configured Django with PostgreSQL, Nginx, and Gunicorn on Ubuntu 24.04. You are now ready to start building your web application. If you have any questions or need further assistance, feel free to reach out!
For more tutorials like this, stay tuned to the Greenhost.cloud blog.