Making Your Django Project Production-Ready on Ubuntu 22.04: Gunicorn and Nginx Setup
This continuation of our guide will show you how to make your Django project production-ready on a ServerStadium VM using Gunicorn and Nginx.
Step 8: Install and Configure Gunicorn
Install Gunicorn with pip:
pip3 install gunicorn
Test Gunicorn’s ability to serve the project:
gunicorn –workers 3 myproject.wsgi:application –<span class="hljs-built_in">bind</span> 0.0.0.0:8000
Now, visit http://your_server_ip:8000
to confirm it’s serving your Django site correctly.
Step 9: Create a Gunicorn Systemd Service File
Create a systemd service file for Gunicorn to manage your process:
sudo nano /etc/systemd/system/gunicorn.service
Add the following content, adjusting paths and usernames as necessary:
[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target
[Service]
User=yourusername
Group=www-data
WorkingDirectory=/home/yourusername/mydjangoapp
ExecStart=/home/yourusername/mydjangoapp/env/bin/gunicorn \
–access-logfile – \
–workers 3 \
–bind unix:/run/gunicorn.sock \
myproject.wsgi:application
[Install]
WantedBy=multi-user.target
Enable and start the Gunicorn service:
sudo systemctl start gunicorn</div>
<div class="p-4 overflow-y-auto">sudo systemctl <span class="hljs-built_in">enable</span> gunicorn
Step 10: Install and Configure Nginx
Install Nginx:
sudo apt install nginx
Configure Nginx to proxy pass to Gunicorn. Create a new server block:
sudo nano /etc/nginx/sites-available/mydjangoapp
Add the following configuration:
server {
listen 80;
server_name your_server_ip;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/yourusername/mydjangoapp;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
}
sites-enabled
directory:sudo <span class="hljs-built_in">ln</span> -s /etc/nginx/sites-available/mydjangoapp /etc/nginx/sites-enabled
Test your Nginx configuration:
sudo nginx -t
Restart Nginx:
sudo systemctl restart nginx
Step 11: Secure Your Server with a Firewall
Enable the Nginx Full profile on ufw
:
sudo ufw allow <span class="hljs-string">'Nginx Full'</span>
Conclusion
Your Django application is now configured with Gunicorn and Nginx on your ServerStadium VM, ready for production.
For additional support, check out our knowledge base or contact our support team.