Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisioneRevisione precedente
Prossima revisione
Revisione precedente
python:django:how_to_deploy_on_apache_ubuntu [2025/11/22 03:01] – WIP apressatopython:django:how_to_deploy_on_apache_ubuntu [2025/11/22 04:13] (versione attuale) – FIX apressato
Linea 6: Linea 6:
  
 ===== 1. Configurare il backend Web ===== ===== 1. Configurare il backend Web =====
-==== 1.1. Configurazione di Apache ====+==== 1.1. Configurazione Progetto ====
 === 1.1.1. Installazione software per l'utente "WebMaster" e creazione Cartelle che ospiteranno il progetto === === 1.1.1. Installazione software per l'utente "WebMaster" e creazione Cartelle che ospiteranno il progetto ===
 Loggarsi come utente <#WebMaster> Loggarsi come utente <#WebMaster>
Linea 24: Linea 24:
 Copiare il progetto django nella cartella <#djangoprj> usando SCP o clonando il progetto da github/gitlab. Copiare il progetto django nella cartella <#djangoprj> usando SCP o clonando il progetto da github/gitlab.
  
-spostarsi nella cartella del progetto+Spostarsi nella cartella del progetto
 <cli>cd /home/<#webmaster>/www/django/<#djangoprj></cli> <cli>cd /home/<#webmaster>/www/django/<#djangoprj></cli>
  
-=== 1.1.2. Configurare il progetto ===+=== 1.1.2. Ambiente Virtuale e Librerie ===
  
 == Creazione virtual environment con UV == == Creazione virtual environment con UV ==
-se il progetto contiene giá un file //''pyproject.toml''// usare+Se il progetto contiene giá un file //''pyproject.toml''// usare
 <cli>uv sync</cli> <cli>uv sync</cli>
  
Linea 39: Linea 39:
 </cli> </cli>
  
-una volta installati tutti i pacchetti necessari aggiungere i seguenti+Una volta installati tutti i pacchetti necessari aggiungere i seguenti
 <cli> <cli>
 uv pip install daphne uv pip install daphne
Linea 59: Linea 59:
 </cli> </cli>
  
-=== Modifiche a ''settings.py'' ===+=== 1.1.3. Modifiche a ''settings.py'' ===
 Il file settings richiede alcune modifiche post deploy per il corretto funzionamento. Il file settings richiede alcune modifiche post deploy per il corretto funzionamento.
 <cli>nano /home/<#webmaster>/www/django/<#djangoprj>/<#djangoprj>/settings.py</cli> <cli>nano /home/<#webmaster>/www/django/<#djangoprj>/<#djangoprj>/settings.py</cli>
Linea 155: Linea 155:
 </file> </file>
  
-=== 1.1.3. Ultimi ritocchi al progetto ===+=== 1.1.4. Ultimi ritocchi al progetto ===
 Preparazione il DB Preparazione il DB
 <cli> <cli>
Linea 168: Linea 168:
 <cli>exit</cli> <cli>exit</cli>
  
 +==== 2.1. Configurare Daphne con Systemd ====
 +=== 2.1.1. Creare il service file ===
 +<cli>sudo nano /etc/systemd/system/daphne-<#djangoprj>.service</cli>
 +=== 2.1.2. Contenuto del service file ===
 +<file>
 +[Unit]
 +Description=Daphne ASGI Server per <#djangoprj>
 +After=network.target
 +
 +[Service]
 +Type=simple
 +User=<#webmaster>
 +Group=<#webmaster>
 +WorkingDirectory=/home/<#webmaster>/www/django/<#djangoprj>
 +Environment="PATH=/home/<#webmaster>/www/django/<#djangoprj>/.venv/bin"
 +Environment="DJANGO_SETTINGS_MODULE=<#djangoprj>.settings"
 +
 +ExecStart=/home/<#webmaster>/www/django/<#djangoprj>/.venv/bin/daphne \
 +    -b 127.0.0.1 \
 +    -p 8001 \
 +    --proxy-headers \
 +    --access-log - \
 +    <#djangoprj>.asgi:application
 +
 +Restart=on-failure
 +RestartSec=5s
 +
 +[Install]
 +WantedBy=multi-user.target
 +</file>
 +
 +=== 2.1.3 Avviare il servizio ===
 +<cli>
 +sudo systemctl daemon-reload
 +sudo systemctl start daphne-<#djangoprj>
 +sudo systemctl enable daphne-<#djangoprj>
 +sudo systemctl status daphne-<#djangoprj>
 +</cli>
 +
 +==== 3.1 Configurare Apache ====
 +=== 3.1.1 Backup della configurazione esistente ===
 +<cli>
 +sudo cp /etc/apache2/sites-available/010-miosito.com.conf /etc/apache2/sites-available/010-miosito.com.conf.backup
 +</cli>
 +
 +=== 3.1.2. Modificare 010-miosito.com.conf ===
 +<cli>sudo nano /etc/apache2/sites-available/010-miosito.com.conf</cli>
 +
 +=== 3.1.3. Configurazione da aggiungere ===
 +<file>
 +    # ===== CONFIGURAZIONE DJANGO - SOTTOCARTELLA =====
 +
 +    # File statici Django
 +    Alias /<#djangoprj>/static /home/<#webmaster>/www/django/<#djangoprj>/staticfiles
 +    <Directory /home/<#webmaster>/www/django/<#djangoprj>/staticfiles>
 +        Require all granted
 +        Options -Indexes
 +    </Directory>
 +
 +    # File media Django
 +    Alias /<#djangoprj>/media /home/<#webmaster>/www/django/<#djangoprj>/media
 +    <Directory /home/<#webmaster>/www/django/<#djangoprj>/media>
 +        Require all granted
 +        Options -Indexes
 +    </Directory>
 +
 +    # Proxy per Django (sottocartella)
 +    ProxyPreserveHost On
 +
 +    # Non fare proxy di static e media
 +    ProxyPass /<#djangoprj>/static !
 +    ProxyPass /<#djangoprj>/media !
 +
 +    # WebSocket per Django (se necessario)
 +    RewriteEngine On
 +    RewriteCond %{HTTP:Upgrade} ^websocket$ [NC]
 +    RewriteCond %{HTTP:Connection} ^upgrade$ [NC]
 +    RewriteRule ^/<#djangoprj>/(.*)$ ws://127.0.0.1:8001/$1 [P,L]
 +
 +    # Proxy HTTP per Django
 +    ProxyPass /<#djangoprj> http://127.0.0.1:8001/<#djangoprj>
 +    ProxyPassReverse /<#djangoprj> http://127.0.0.1:8001/<#djangoprj>
 +</file>
 +
 +==== 4.1 Impostare i Permessi ====
 +Dare ownership all'utente webmaster ed al gruppo www-data
 +<cli>
 +sudo chown -R <#webmaster>:www-data /home/<#webmaster>/www/django
 +sudo chown -R <#webmaster>:www-data /home/<#webmaster>/www/django/<#djangoprj>/staticfiles/
 +sudo chown -R <#webmaster>:www-data /home/<#webmaster>/www/django/<#djangoprj>/media/
 +</cli>
 +
 +Permessi corretti
 +<cli>
 +sudo chmod -R 755 /home/<#webmaster>/www/django/<#djangoprj>
 +sudo chmod -R 775 /home/<#webmaster>/www/django/<#djangoprj>/media
 +sudo chmod -R 775 /home/<#webmaster>/www/django/<#djangoprj>/db # Se usi SQLite
 +sudo chmod 644 /home/<#webmaster>/www/django/<#djangoprj>/db/db.sqlite3  # Se usi SQLite
 +</cli>
 +
 +Permettere ad Apache di leggere i file
 +<cli>
 +sudo chmod 755 /home/<#webmaster>
 +sudo chmod 755 /home/<#webmaster>/www
 +</cli>
 +
 +Ricaricare la configurazione
 +<cli>sudo systemctl restart apache2</cli>
 +
 +===== 2. Controlli =====
 +==== 2.1. Controlla il file di servizio ====
 +<cli>
 +sudo systemctl cat daphne-<#djangoprj>.service
 +</cli>
 +
 +==== 2.2. Verifica lo status dettagliato ====
 +<cli>
 +sudo systemctl status daphne-<#djangoprj>.service -l
 +</cli>
 +
 +==== 2.3. Controlla i log completi ====
 +<cli>
 +sudo journalctl -u daphne-<#djangoprj>.service -n 50 --no-pager
 +</cli>
 +Per capire quale file settings.py viene caricato
 +li>
 +sudo journalctl -u daphne-<#djangoprj>.service -n 100 --no-pager
 +</cli>
 +
 +===== 3. Test =====
 +==== 3.1. Riavviare il servizio Dafne ====
 +Il file settings.py viene caricato all'avvio del servizio, qualsiasi variazione non viene presa in considerazione se non riavviando il servizio. \\ 
 +Quindi prima di testare riavviare il servizio.
 +<cli>
 +sudo systemctl restart daphne-<#djangoprj>.service
 +</cli>
  
 +==== 3.2. Test di Accesso ====
 +Per testare aprire un bowser e puntare a **http://[miosito.com]/<#djangoprj>**.
  
python/django/how_to_deploy_on_apache_ubuntu.1763780516.txt.gz · Ultima modifica: 2025/11/22 03:01 da apressato
Torna su
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0