- Clone and run your project
sudo apt update
sudo apt install python3-pip python3-dev nginx
sudo pip3 install virtualenv
python3 -m venv env
source ./env/bin/activate
pip install gunicorn
deactivate
sudo vim /etc/systemd/system/gunicorn.socket
Paste the content below
[Unit]
Description=gunicorn socket
[Socket]
ListenStream=/run/gunicorn.sock
[Install]
WantedBy=sockets.target
sudo vim /etc/systemd/system/gunicorn.service
Paste the content below
[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target
[Service]
User=<username>
Group=www-data
WorkingDirectory=/home/<username>/<projectdir>
ExecStart=/home/<username>/<projectdir>/env/bin/gunicorn \
--access-logfile - \
--workers 3 \
--bind unix:/run/gunicorn.sock \
<application_name>.wsgi:application
[Install]
WantedBy=multi-user.target
-
sudo systemctl start gunicorn.socket
-
sudo systemctl enable gunicorn.socket
-
sudo vim /etc/nginx/sites-available/<application_name>
Paste the content below
server {
listen 80;
server_name www.domain_name.com;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/<username>/<projectdir>;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
}
sudo ln -s /etc/nginx/sites-available/<application_name> /etc/nginx/sites-enabled/
sudo systemctl restart nginx
sudo apt install python3-certbot-nginx certbot
sudo certbot --nginx