arrow_back
#SSL/HTTPS backend install
snippet : deploy django oldschool
#Pre
sudo apt update
sudo apt install python3-pip python3-dev libpq-dev nginx curl sudo apt install postgresql postgresql-contrib
#Postgre
sudo -u postgres psql
CREATE DATABASE <projectname>;
CREATE USER <user> WITH PASSWORD '<passworddb>';
ALTER ROLE <user> SET client_encoding TO 'utf8';
ALTER ROLE <user> SET default_transaction_isolation TO 'read committed';
ALTER ROLE <user>r SET timezone TO 'Asia/Tehran';
GRANT ALL PRIVILEGES ON DATABASE <projectname> TO <user>; \q
#Environment
sudo -H pip3 install --upgrade pip
sudo -H pip3 install virtualenv
virtualenv env
pip3 install gunicorn psycopg2-binary
migartion folder init.py
mkdir media/images
pip install -r req....
migrate
collectstatic
creatsuperuser
#Gunicorn socket
sudo nano /etc/systemd/system/gunicorn.socket
[Unit]
Description=gunicorn socket
[Socket]
ListenStream=/run/gunicorn.sock
[Install]
WantedBy=sockets.target
#Gunicorn service
sudo nano /etc/systemd/system/gunicorn.service
[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target
[Service]
User=ubuntu
Group=www-data
WorkingDirectory=/home/ubuntu/<projectname>
ExecStart=/home/ubuntu/<projectname>/env/bin/gunicorn \
--access-logfile - \
--workers 3 \
--bind unix:/run/gunicorn.sock \
<projectname>.wsgi:application
[Install]
WantedBy=multi-user.target
#Gunicorn active service
sudo systemctl start gunicorn.socket
sudo systemctl enable gunicorn.socket
#Gunicorn test service
sudo systemctl status gunicorn.socket
sudo journalctl -u gunicorn.socket
sudo systemctl daemon-reload
sudo systemctl restart gunicorn
#nginx
sudo nano /etc/nginx/sites-available/<projectname>
server {
listen 80;
server_name <projectdomain>.com www.<projectdomain>.com;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/ubuntu/<projectname>;
}
location /media/ {
root /home/ubuntu/<projectname>;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
}
sudo ln -s /etc/nginx/sites-available/<projectname> /etc/nginx/sites-enabled
#nginx test
nginx -t
sudo systemctl restart nginx
sudo ufw delete allow 8000
sudo ufw allow 'Nginx Full'
#SSL/HTTPS backend install
sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot python-certbot-nginx
sudo certbot --nginx
#WORKER SYSTEMCTL
[Unit]
Description=worker daemon
Requires=gunicorn.socket
After=network.target
[Service]
User=ubuntu
Group=www-data
WorkingDirectory=/home/ubuntu/<projectname>
ExecStart=/home/ubuntu/<projectname>/env/bin/python3 worker.py
[Install]
WantedBy=multi-user.target
Published @ May 2020