User Tools

Site Tools


deployment_raspberry

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
deployment_raspberry [2025/10/10 12:57] – created ninindeployment_raspberry [2025/11/27 22:39] (current) ninin
Line 1: Line 1:
-ip ermitteln:+=== Allgemein ===
  
-login: ssh user@ip+IP ermitteln: 
 +  arp -a 
 + 
 +login: 
 +  ssh user@ip
  
 Virtual environment Virtual environment
-cd sese_project/serious-seeds +    cd sese_project/serious-seeds 
-source env/bin/activate +    python3 -m venv env 
- +    source env/bin/activate 
-Create Database+    pip install -r app/requirements.txt
  
 +Set Environment Variables
 +    export DJANGO_ENV=production
 +    export POSTGRES_DB=<db>
 +    export POSTGRES_USER=<user>
 +    export POSTGRES_PASSWORD=<pw>
  
 Start Dev Server Start Dev Server
-python3 manage.py runserver 0.0.0.0:8000+      python3 manage.py runserver 0.0.0.0:8000 
 + 
 + 
 +=== Turn off power management for network adapter === 
 + 
 +Create a new systemd service file: 
 + 
 +sudo systemctl edit --force --full wifipower.service 
 + 
 +Paste the following content into the file:  
 + 
 +Code 
 + 
 +    [Unit] 
 +    Description=Disable WiFi Power Management 
 +    [Service] 
 +    Type=oneshot 
 +    RemainAfterExit=yes 
 +    ExecStart=/sbin/iw dev wlan0 set power_save off 
 +    [Install] 
 +    WantedBy=multi-user.target 
 + 
 +Save and exit the editor.  
 + 
 +Enable the service: 
 +    sudo systemctl enable wifipower.service.  
 + 
 +Start the service immediately: 
 +    sudo systemctl start wifipower.service 
 + 
 +or reboot the Pi for it to take effect: 
 +    sudo reboot 
 + 
 +=== Create Database === 
 + 
 +  sudo su postgres 
 +  psql 
 +  CREATE DATABASE <db>; 
 +  CREATE USER <user>; 
 +  ALTER USER <user> with encrypted password '<pw>'; 
 +  GRANT ALL PRIVILEGES ON DATABASE <db> TO <user>; 
 +  ALTER DATABASE <db> OWNER TO <user>; 
 + 
 + 
 +=== Deployment Checklist === 
 + 
 +- Static Files 
 +  python manage.py collectstatic 
 + 
 +With cleanup: 
 +  python manage.py collectstatic --noinput --clear 
 + 
 +=== Nginx === 
 + 
 +  sudo nano /etc/nginx/sites-available/seriousseeds 
 + 
 +Next, enable the configuration: 
 + 
 +  sudo ln -s /etc/nginx/sites-available/seriousseeds /etc/nginx/sites-enabled/ 
 + 
 +  sudo nginx -t 
 +  sudo systemctl restart nginx 
 + 
 +Analyse: 
 + 
 +  sudo nginx -T | sed -n '1,200p' | grep -n 'proxy_pass\|upstream' 
 + 
 + 
 +=== Gunicorn === 
 + 
 +  sudo nano /etc/systemd/system/gunicorn.service 
 + 
 +Bei Änderungen: 
 + 
 +  systemctl daemon-reload 
 +  sudo systemctl restart gunicorn 
 +   
 +followed by a hard browser refresh (Ctrl + Shift + R). 
 + 
 + 
 +=== Rollout Release === 
 + 
 +# In deinem Produktionsverzeichnis 
 +  cd /pfad/zu/serious-seeds 
 + 
 +# Aktiviere Virtual Environment 
 +  source env/bin/activate 
 + 
 +# Hole neueste Tags 
 +  git fetch --tags 
 + 
 +# Liste verfügbare Tags auf 
 +  git tag -l 
 + 
 +# Checke das gewünschte Tag aus (mit lokalem Branch, um keinen detached-head zu bekommen) 
 +  git checkout -b production-v1.0.0 tags/v1.0.0 
 + 
 +# Installiere/Update Dependencies 
 +  pip install -r app/requirements.txt 
 + 
 +# Führe Migrations aus (falls nötig) 
 +  python app/manage.py migrate 
 + 
 +# Sammle Static Files 
 +  python app/manage.py collectstatic --noinput 
 + 
 +# Starte Gunicorn neu 
 +  sudo systemctl restart gunicorn 
 + 
 + 
 +=== Tutorial ===
  
 +https://www.teachmemicro.com/building-a-django-webserver-on-raspberry-pi-a-step-by-step-guide/
  
 +https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu#installing-the-packages-from-the-ubuntu-repositories
deployment_raspberry.1760101026.txt.gz · Last modified: by ninin