Configurar mod_wsgi per a la teva aplicació Python

Aquí et mostro com configurar Apache per servir una aplicació Flask. La configuració per a Django seria similar, però amb alguns canvis.

1 Crea run fitxer de configuració per al teu projecte Flask. Crea un fitxer, per exemple, /etc/apache2/sites-available/myflaskapp.conf (Ubuntu/Debian) o /etc/httpd/conf.d/myflaskapp.conf (Red Hat/CentOS), amb el següent contingut:

<VirtualHost *:80>
    ServerAdmin webmaster@yourdomain.com
    ServerName yourdomain.com
    DocumentRoot /var/www/myflaskapp

    WSGIDaemonProcess myflaskapp python-path=/var/www/myflaskapp:/path/to/your/venv/lib/python3.x/site-packages
    WSGIProcessGroup myflaskapp
    WSGIScriptAlias / /var/www/myflaskapp/myflaskapp.wsgi

    <Directory /var/www/myflaskapp>
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>


Explicació:

  • ServerName: El nom de domini per accedir a l’aplicació.
  • DocumentRoot: La ubicació del teu projecte.
  • WSGIDaemonProcess: Configura l’entorn del procés WSGI, especificant el camí al directori del projecte i la ubicació del teu entorn virtual.
  • WSGIScriptAlias: El fitxer .wsgi que Apache utilitzarà per comunicar-se amb la teva aplicació Python.
  • Copilot proposa: sudo a2ensite myflaskapp.conf i sudo systemctl restart apache2

2 Crea el fitxer .wsgi per a la teva aplicació Flask a /var/www/myflaskapp/myflaskapp.wsgi amb el següent contingut:

import sys
import logging
from pathlib import Path

# Configura el directori del projecte
project_home = Path('/var/www/myflaskapp')
if project_home not in sys.path:
    sys.path.insert(0, str(project_home))

from app import app as application  # Assegura't que aquest camí apunti a l'aplicació Flask

logging.basicConfig(stream=sys.stderr)

3 Habilita la nova configuració (Ubuntu/Debian):

Nota: Canvia app a la importació correcta si el teu fitxer principal de l’aplicació té un nom diferent o si utilitzes un mòdul diferent.

sudo a2ensite myflaskapp

4 Reinicia Apache per aplicar els canvis:

sudo systemctl restart httpd


3. Prova l’Aplicació

Si tens problemes, revisa els fitxers de registre d’Apache (/var/log/apache2/error.log o /var/log/httpd/error_log) per obtenir més informació sobre els errors que puguis estar trobant.

Després de reiniciar Apache, intenta accedir a la teva aplicació a través del navegador. Si has configurat tot correctament, hauries de veure la teva aplicació Python servida per Apache.

Aplicació web “Hello, Flask!”. Guia

HELLO, FLASK

Quan combines Flask amb Gunicorn en un entorn virtual, estàs creant una aplicació web que pot gestionar múltiples peticions de manera eficient, cosa que és essencial per a aplicacions en producció. Això implica configurar el servidor, gestionar les dependències i assegurar-te que l’aplicació funcioni correctament en un entorn controlat.

1. Crear un Entorn Virtual

Comença creant un entorn virtual per a la teva aplicació. Això aïlla les dependències de la teva aplicació del sistema global de Python.

python3 -m venv /volume2/web/0-python/ent_virt_mut/

2. Activar l’Entorn Virtual

Activa l’entorn virtual.

3. Instal·lar les Dependències

  • Linux/MacOS: source /volume2/web/0-python/ent_virt_mut/bin/activate

3. Instal·lar dependenciències

Instal·la Flask i gunicorn dins de l’entorn virtual.

pip install flask gunicorn

(ent_virt_mut2) urqtejmi@synology_vall:/volume2/web/0-python$ pip install flask gunicorn
Collecting flask
Using cached flask-3.0.3-py3-none-any.whl (101 kB)
Collecting gunicorn
Downloading gunicorn-23.0.0-py3-none-any.whl (85 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 85.0/85.0 KB 406.6 kB/s eta 0:00:00
Collecting importlib-metadata>=3.6.0
Using cached importlib_metadata-8.4.0-py3-none-any.whl (26 kB)
Collecting Jinja2>=3.1.2
Using cached jinja2-3.1.4-py3-none-any.whl (133 kB)
Collecting Werkzeug>=3.0.0
Using cached werkzeug-3.0.4-py3-none-any.whl (227 kB)
Collecting itsdangerous>=2.1.2
Using cached itsdangerous-2.2.0-py3-none-any.whl (16 kB)
Collecting blinker>=1.6.2
Using cached blinker-1.8.2-py3-none-any.whl (9.5 kB)
Collecting click>=8.1.3
Using cached click-8.1.7-py3-none-any.whl (97 kB)
Collecting packaging
Downloading packaging-24.1-py3-none-any.whl (53 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 54.0/54.0 KB 490.7 kB/s eta 0:00:00
Collecting zipp>=0.5
Using cached zipp-3.20.1-py3-none-any.whl (9.0 kB)
Collecting MarkupSafe>=2.0
Using cached MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (26 kB)
Installing collected packages: zipp, packaging, MarkupSafe, itsdangerous, click, blinker, Werkzeug, Jinja2, importlib-metadata, gunicorn, flask
Successfully installed Jinja2-3.1.4 MarkupSafe-2.1.5 Werkzeug-3.0.4 blinker-1.8.2 click-8.1.7 flask-3.0.3 gunicorn-23.0.0 importlib-metadata-8.4.0 itsdangerous-2.2.0 packaging-24.1 zipp-3.20.1
WARNING: You are using pip version 22.0.4; however, version 24.2 is available.
You should consider upgrading via the ‘/volume2/web/0-python/ent_virt_mut2/bin/python3 -m pip install –upgrade pip’ command.
(ent_virt_mut2) urqtejmi@synology_vall:/volume2/web/0-python$

Per actualitzar pip a la versió més recent, pots fer-ho amb la següent comanda:

/volume2/web/0-python/ent_virt_mut/bin/python3 -m pip install –upgrade pip

4. Instalar les llibreries Necessàries: pip install flask

5. Desactivar l’Entorn Virtual: deactivate

Verifica que l’entorn virtual s’ha creat correctament: ls /volume2/web/0-python/ent_virt_mut2

urqtejmi@synology_vall:/volume2/web/0-python$ ls /volume2/web/0-python/ent_virt_mut2 on hi ha els fitxers o directoris: bin, include, lib, lib64, pyvenv.cfg

ComandesComandes WSL, UNIX, LINUX..Comandes

Aquí es fa una mostra de comandes que es van usant

  1. sudo chmod -R 777 /volume2. La comanda sudo és una abreviació de “superuser do” o “switch user do”. Es tracta d’una comanda que permet als usuaris executar tasques amb privilegis d’administrador o superusuari (root) en sistemes Unix i Linux.Quan utilitzes sudo, introdueixes la teva contrasenya per demostrar que tens permisos per realitzar una acció específica. Això és útil per a tasques que requereixen permisos especials, com instal·lar paquets, modificar fitxers de sistema o executar comandes que afecten tot el sistema. La comanda chmod -R 777 és una comanda que s’utilitza per canviar els permisos d’un fitxer o directori en sistemes Unix i Linux.
  2. ———–
  3. Canviar el nom d’un fitxer: mv /volume2/dateutil_env/wsgi.py /volume2/dateutil_env/wsgi-old.py
  4. ——————-
  5. Moure el fitxer: mv /volume2/web/0-python/test_app.py /volume2/dateutil_env/

ASGI vs. WSGI (Enllaç)

2. Trobar on és un fitxer per exemple apache2.4-> ls -la /var/packages/Apache2.4/

urqtejmi@synology_vall:/volume2/dateutil_env$ ls -la /var/packages/Apache2.4/
total 64

  • Entrar en un entorn virtual: Navega fins al directori de l’entorn virtual:cd /volume2/dateutil_env (per exemple poden haver molts entorns virtuals)
  • Activa l’entorn virtual:source bin/activate Després d’activar l’entorn, el prompt de la línia de comandes hauria de canviar per indicar que estàs dins de l’entorn virtual, per exemple: urqtejmi@synology_vall:/volume2/dateutil_env$ source bin/activate
  • (dateutil_env) urqtejmi@synology_vall:/volume2/dateutil_env$ i per sortir :(dateutil_env) urqtejmi@synology_vall:/volume2/dateutil_env$ deactivate urqtejmi@synology_vall:/volume2/dateutil_env
  • ——————————————————————————
  • Cerca un fitxer: Un cop connectat, utilitza la comanda find per buscar el fitxer o la carpeta dateutil_env. Per exemple: find / -name "dateutil_env" es pot delimitar la recerca find /volume2. Si hi ha problemes amb els permisos: sudo find /volume2 -name "dateutil_env"
  • Què es un entorn Virtual? Un entorn virtual és un espai digital simulat on els usuaris poden interactuar amb objectes, eines i informació, sovint de manera remota o a través de dispositius electrònics1. En el context de la programació, un entorn virtual de Python és una eina que ajuda a mantenir les dependències necessàries per a un projecte en un lloc aïllat, evitant conflictes amb altres projectes.

PyCharm i utilitzant la versió de Python del Synology NAS

Per fer córrer un script com main.py amb PyCharm i utilitzar la versió de Python del teu Synology NAS, segueix aquests passos:

  1. Crea un projecte a PyCharm:
    • Si estàs a la pantalla de benvinguda, fes clic a “New Project”. Si ja tens un projecte obert, selecciona “File” > “New Project” al menú principal.
    • Escull un projecte de tipus “Pure Python” per començar. Aquesta plantilla crearà un projecte buit.
    • Defineix la ubicació del projecte i selecciona l’entorn virtual (Project venv és suficient per defecte).
    • Fes clic a “Create” per crear el projecte1.
  2. Crea un fitxer Python:
  3. Edita el codi Python:
  4. Configura l’intèrpret Python:
    • Vés a “File” > “Settings” > “Project: <nom_del_teuproyecte>” > “Python Interpreter”.
    • Fes clic a l’icona de roda dentada i selecciona “Add”.
    • Escull “SSH Interpreter” i configura la connexió SSH al teu NAS.
    • Selecciona la versió de Python que has creat a l’entorn virtual (per exemple, dateutil_env).
    • Fes clic a “OK” per aplicar els canvis2.

Ara pots desenvolupar i executar el teu codi Python a PyCharm utilitzant la versió de Python del teu Synology NAS. Si tens més preguntes o necessites més ajuda, no dubtis a preguntar! 😊

Pasareles

http://localhost:63342/0-python/test.html?_ijt=ghdjf3ld1spo5i17njv68ffpt5

Estic treballant l’entorn Python amb SO: Nginx, instal·lat en un synology. sobre el terminal SSH funciona sense problema però al intentar fer la sortida per http://81.0.60.36/0-python/test.html, html funciona correctament però el .py fa únicament un llistat del programa font sense obeir les instruccions python, què pot ser?

En un entorn com el teu, cal configurar Nginx perquè processi scripts Python utilitzant un servidor d’aplicacions, com uWSGI, Gunicorn o fins i tot FastCGI.

Possible Causes and Solutions:

  1. Nginx is Not Configured to Handle Python Scripts:
    • By default, Nginx cannot directly execute Python scripts. Nginx typically serves static files (like .html, .css, .js), but for dynamic content (like Python scripts), you need a bridge to execute the code.

Gunicorn es similar a

activar ->Gunicorn –bind 0.0.0.0:8080 wsgi:app

tancar Gunicorn (Ctrl + C)

Sí, Gunicorn és una excel·lent alternativa a uWSGI i no requereix compilar cap codi en C, cosa que el fa més fàcil d’instal·lar i configurar, especialment en entorns com el teu, on la instal·lació d’un compilador de C pot ser problemàtica.

Pasos per Configurar Nginx amb Gunicorn

  1. Instal·lar Gunicorn:
    • Primer, has d’instal·lar Gunicorn dins del teu entorn virtual de Python.
    bash

IDE

Un IDE (Entorn de Desenvolupament Integrat) és una aplicació de programari que proporciona als desenvolupadors d’aplicacions un conjunt d’eines per escriure, editar, depurar i provar codi de manera eficient. Un IDE integra diverses eines de desenvolupament en una única interfície, cosa que facilita i agilita el procés de desenvolupament de programari.

Components típics d’un IDE:

  1. Editor de codi: Un editor de text avançat on els desenvolupadors escriuen el codi. A diferència d’un editor de text senzill, l’editor de codi d’un IDE sovint inclou funcions com l’autocompletat de codi, el ressaltat de sintaxi, i la identificació d’errors en temps real.
  2. Depurador (Debugger): Una eina que permet als desenvolupadors executar el seu codi pas a pas per identificar i corregir errors. El depurador permet pausar l’execució del codi, inspeccionar variables, i veure el flux del programa.
  3. Compilador o intèrpret: Si es tracta d’un llenguatge de programació compilat, l’IDE inclou un compilador per convertir el codi font en codi executable. Si el llenguatge és interpretat (com Python), l’IDE utilitza un intèrpret per executar el codi.
  4. Gestió de projectes: Una funcionalitat per organitzar fitxers i carpetes relacionades amb un projecte de programació. Això inclou la gestió de dependències, biblioteques i recursos.
  5. Integració amb sistemes de control de versions: L’IDE sovint inclou eines per treballar amb sistemes de control de versions com Git, permetent als desenvolupadors gestionar el codi font, fer seguiment de canvis i col·laborar amb altres programadors.
  6. Suport per a proves (Testing): Eines per executar proves automàtiques per garantir que el codi funciona com s’espera.
  7. Emuladors o entorns d’execució: Alguns IDEs inclouen emuladors per provar aplicacions en diferents entorns, com ara aplicacions mòbils en dispositius virtuals.

Avantatges d’utilitzar un IDE:

  • Eficiència: Un IDE agrupa totes les eines necessàries en una única interfície, la qual cosa estalvia temps i millora la productivitat.
  • Facilitat d’ús: Molts IDEs ofereixen assistència per al desenvolupament, com l’autocompletat de codi, suggeriments de funcions i documentació integrada.
  • Depuració avançada: Les eines de depuració d’un IDE permeten trobar i corregir errors de manera més ràpida i precisa.
  • Organització: L’IDE ajuda a mantenir els projectes organitzats, cosa que és especialment útil en projectes grans.

PyCharm, com hem comentat abans, és un exemple d’IDE específic per al desenvolupament en Python, però hi ha molts altres IDEs per a diferents llenguatges i plataformes, com ara Visual Studio per a C# o IntelliJ IDEA per a Java.

Resum de “Programación en Python Desbloqueada para Principiantes”

  • Instal·lar Python al teu sistema. en el cas de Synology només cal instal·lar el paquet y comprovar la instal·lació

urqtejmi@synology_vall:~$ python –version
Python 3.8.15
urqtejmi@synology_vall:~$


  • A continuació, passarem a la instal·lació de PyCharm. tinc instal·lada al windows 11 la versio PyCharm

PyCharm 2023.1.3 (Professional Edition)
Build #PY-231.9161.41, built on June 20, 2023

Què és PyCharm?

PyCharm és un dels IDEs més populars per al desenvolupament en Python. Ofereix una gran varietat de funcionalitats que ajuden els desenvolupadors a escriure, executar, i depurar codi de manera eficient. Algunes de les seves característiques clau inclouen:

  • Autocompletat de codi: Suggeriments intel·ligents mentre escrius codi.
  • Depuració: Eines per trobar i corregir errors en el codi de manera visual.
  • Integració amb sistemes de control de versions: Suport per a Git, Mercurial, etc.
  • Entorn de proves: Suport per a frameworks de proves com unittest, pytest, etc.
  • Refactorització: Eines per reorganitzar codi sense canviar la seva funcionalitat.
  • Suport per a frameworks web: Com Django, Flask, etc.
  • Gestió de paquets: Integració amb pip i altres eines de gestió de paquets.

Si tens algun dubte sobre PyCharm o necessites més informació sobre un tema relacionat, estaré encantat d’ajudar-te!

Synology com servidor de Python

1 Accedir a Synology per SSH:
PS C:\Users\urqte> ssh urqtejmi@192.168.1.41
urqtejmi@192.168.1.41’s password:

urqtejmi@synology_vall:~$

2 Accedir via putty

Instal·lar Python des del centre de paquets. Entrem al synology utilitzant la pantalla del PC via Putty i comprovem la versió instal·lada:

Sí, pots fer servir el teu Synology com a servidor per executar aplicacions Python i servir contingut web. Synology ofereix un entorn robust que pots configurar per executar serveis web amb Python. Aquí tens una guia pas a pas per configurar Synology com a servidor Python:

1. Preparar l’Entorn Python a Synology

  • Accedir a Synology via SSH: Ja ho has fet, així que ja tens accés al terminal de Synology.
  • Verifica Python: Comprova que tens Python instal·lat (ja has comprovat que tens Python 3.8.15 instal·lat).

2. Configurar un Servidor Web Simple amb Python

  • Crea una carpeta per al teu projecte web:
  • /volume2/web/0-python

Sublime Text no troba Python

Si Sublime Text no troba Python malgrat estar instal·lat a la teva màquina Synology, és probable que no estigui configurat correctament en la variable d’entorn o en la configuració de Sublime Text. Aquí tens algunes solucions per resoldre aquest problema:

1. Verificar la ruta de Python en Synology:

  • Trobar la ubicació de Python:
    • Accedeix al teu Synology via SSH (utilitza una aplicació com PuTTY o Terminal a macOS/Linux).
    • Executa el següent comandament per trobar la ubicació de Python 3.9:
    • Això hauria de retornar la ruta completa de l’executable de Python, per exemple: /usr/local/bin/python3.9.

    • bash which python3.9

2. Configurar Sublime Text amb la ruta correcta de Python:

  • Obrir Sublime Text 3:
    • Obre Sublime Text 3.
  • Accedir a la configuració del sistema de construcció (Build System):
    • Ves a Tools > Build System > New Build System....
  • Configurar el sistema de construcció per Python 3.9:
    • Substitueix el contingut del fitxer amb la configuració següent, assegurant-te que la ruta a Python és la que vas trobar al pas anterior:

    • json { "cmd": ["/usr/local/bin/python3.9", "-u", "$file"], "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", "selector": "source.python", "env": {"PYTHONIOENCODING": "utf-8"}, "path": "/usr/local/bin" }
  • Desa aquest fitxer amb un nom com Python3.9.sublime-build.

3. Seleccionar el sistema de construcció a Sublime Text:

  • Després de desar la configuració, torna a Tools > Build System i selecciona el sistema de construcció que acabes de crear (Python3.9).

4. Comprovar la instal·lació de Python:

  • Escriu un simple script de prova com ara:
    python print("Hola, món!")
  • Desa l’arxiu i selecciona Tools > Build (o Ctrl+B/Cmd+B).
  • Si tot està configurat correctament, hauries de veure “Hola, món!” a la consola de Sublime Text.

5. Afegir Python a la variable PATH (opcional):

  • Si tens accés administratiu i pots modificar les variables d’entorn al teu Synology, pots afegir la ruta de Python al PATH. Això permetrà que qualsevol aplicació, incloent Sublime Text, trobi Python sense necessitar la ruta completa:
    • Accedeix a l’usuari a través d’SSH i edita el fitxer .profile o .bashrc del teu usuari:
      bash nano ~/.bashrc
    • Afegeix la línia següent al final del fitxer:
      bash export PATH="/usr/local/bin:$PATH"
    • Desa i tanca l’editor, i després executa:
      bash source ~/.bashrc
    • Ara, prova de nou a executar el script des de Sublime Text.

Aquests passos haurien de resoldre el problema de “Python not found” a Sublime Text. Si encara tens problemes, potser cal revisar altres configuracions o verificar que Python està instal·lat correctament en el teu sistema.

PYTHON a Windows 11 i synology

I found the location of Apache 2.4 conf file (/var/packages/Apache2.4/target/usr/local/etc/apache24/conf/httpd24.conf).

Ha funcionat a la primera fen la instal·lació des de Microsoft Store

No oblidar de comprobar que s’ha instal·lat: cmd: python –version

Microsoft Windows [Versión 10.0.22631.4037]
(c) Microsoft Corporation. Todos los derechos reservados.

C:\Users\urqte>python –version
Python 3.12.5

C:\Users\urqte>python
Python 3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)] on win32
Type “help”, “copyright”, “credits” or “license” for more information.

print(“Hola, món!”)
Hola, món!

La resposta a si és millor Sublime Text o PyCharm com a eina per treballar amb Python depèn de les teves necessitats específiques, preferències personals i el tipus de projectes amb què treballes. Aquí tens una comparació que t’ajudarà a decidir:

Sublime Text

  • Lleuger i ràpid: Sublime Text és molt lleuger i ràpid. Es carrega ràpidament i no consumeix molts recursos, la qual cosa el fa ideal per a màquines amb especificacions baixes o si necessites un editor ràpid.
  • Altament personalitzable: Disposa de nombrosos plugins i paquets que pots instal·lar per adaptar-lo a les teves necessitats. Per a Python, pots afegir suport per a la sintaxi, l’execució de scripts, depuració bàsica, etc., però has de configurar manualment aquestes eines.
  • Editor de text pur: És un editor de text molt potent amb funcionalitats bàsiques de codificació, però no és un entorn de desenvolupament integrat (IDE). Això significa que algunes funcionalitats avançades, com la depuració o l’exploració de projectes, poden ser limitades en comparació amb un IDE complet.
  • Versatilitat: Sublime Text no està centrat en un sol llenguatge de programació, per la qual cosa és útil si treballes amb diversos llenguatges de codificació.

PyCharm

  • IDE complet: PyCharm és un entorn de desenvolupament integrat (IDE) específic per a Python, amb totes les funcionalitats necessàries per a la programació avançada. Inclou eines de depuració, proves, integració amb sistemes de control de versions (com Git), i moltes altres característiques integrades.
  • Facilitats per a Python: PyCharm ofereix suport excel·lent per a Python, amb completat de codi avançat, refactorització automàtica, navegació ràpida pel codi, i molt més. Això el fa molt potent per a projectes grans i complexes en Python.
  • Configuració mínima: PyCharm ve preconfigurat per treballar amb Python de manera eficient, sense la necessitat de buscar plugins o configurar l’entorn manualment.
  • Consells i ajudes: A més de suportar frameworks populars com Django i Flask, PyCharm ofereix guies, consells, i suggeriments que faciliten la programació, especialment útil per a principiants.
  • Més pesat: A diferència de Sublime Text, PyCharm és més pesat i pot consumir més recursos, per la qual cosa podria no ser la millor opció en màquines amb menys potència.

Conclusió

  • Si prefereixes un editor de text lleuger i ràpid, que pots personalitzar segons les teves necessitats, i estàs còmode configurant el teu entorn de desenvolupament, Sublime Text pot ser l’opció adequada.
  • Si busques un IDE complet amb totes les eines necessàries per al desenvolupament avançat en Python, i valores tenir-ho tot integrat en una sola eina, PyCharm és la millor elecció.

Si estàs treballant en projectes Python complexos o a gran escala, PyCharm probablement t’oferirà una millor experiència. Però si prefereixes una eina més senzilla i ràpida, Sublime Text és una opció excel·lent.

—————————————————-

Es pot executar des del terminal de Synology habilitant el servei SSH i accedint des del Windows 11 amb puTTY amb la comanda python3 hola-mon.py

Windows Subsystem for Linux (WSL):
WSL et permet executar un entorn Linux directament dins de Windows, incloent Bash.
Per accedir-hi:
Assegura’t que tens WSL instal·lat. Si no, pots instal·lar-lo seguint les instruccions de Microsoft.
Després d’instal·lar WSL, obre el terminal de WSL escrivint wsl al menú d’inici de Windows o des del CMD.
Un cop dins de WSL, estaràs en un entorn Bash completament funcional.

Instalat