Instal·lar Python al servidor Apache de Synology.

Per instal·lar Python al teu servidor Apache de Synology, segueix aquests passos:

  1. Instal·la Python: Assegura’t que tens Python instal·lat al teu Synology. Pots fer-ho des del Centre de Paquets.
  2. Configura un entorn virtual: Utilitza SSH per iniciar sessió al teu NAS amb privilegis de root. A continuació, crea un entorn virtual de Python. Aquí tens una guia detallada sobre com fer-ho aquí.
  3. Instal·la pip: Si no tens pip instal·lat, pots fer-ho amb els següents comandaments:
   python -m ensurepip --upgrade
   python -m pip install --upgrade pip

Pots trobar més informació sobre com instal·lar pip aquí.

  1. Configura Apache per utilitzar Python: Hauràs de configurar el teu servidor Apache per utilitzar Python. Això pot incloure la instal·lació de mod_wsgi o una altra solució similar per executar aplicacions Python a través d’Apache.

Si necessites més informació, pots consultar aquesta guia que proporciona instruccions detallades sobre com executar Python al teu Synology.

Pots descarregar un client SSH des d’aquests enllaços:

  • PuTTY: Un client SSH i telnet gratuït per a Windows.

1. Instal·lar Python al Synology

  1. Accedeix al Centre de Paquets del Synology:
    • Inicia sessió a DSM.
    • Obre el Centre de Paquets.
  2. Busca i instal·la Python:
    • Cerca “Python” al Centre de Paquets.
    • Selecciona la versió que necessitis (actualment solen estar disponibles Python 2.x i 3.x).
    • Instal·la Python.

2. Configurar Apache per utilitzar Python (mod_wsgi o CGI)

Perquè Python funcioni amb Apache, necessitaràs configurar-lo correctament. Synology utilitza una versió personalitzada d’Apache, així que hi ha algunes limitacions.

A. Configurar el mòdul WSGI (mod_wsgi)

  1. Instal·la mod_wsgi:
    • Si el teu Synology ho permet, pots compilar o instal·lar mod_wsgi.
    • Connecta’t al Synology mitjançant SSH i executa:bashCopia el codisudo synogear install mod_wsgi
    • Si no està disponible, pots utilitzar Python com a script CGI (veure opció B).
  2. Habilita el mòdul WSGI al fitxer de configuració d’Apache:
    • Editeu el fitxer de configuració d’Apache (pot variar segons el model Synology):bashCopia el codisudo vi /etc/httpd/conf/httpd.conf
    • Afegeix o habilita:apacheCopia el codiLoadModule wsgi_module modules/mod_wsgi.so
    • Defineix un punt final WSGI:apacheCopia el codiWSGIScriptAlias /myapp /var/services/web/myapp.wsgi
  3. Crea el teu script WSGI:
    • Crea un fitxer WSGI a la ruta configurada:bashCopia el codinano /var/services/web/myapp.wsgi
    • Exemple de contingut:pythonCopia el codidef application(environ, start_response): status = '200 OK' output = b'Hello World!' response_headers = [('Content-type', 'text/plain'), ('Content-Length', str(len(output)))] start_response(status, response_headers) return [output]
  4. Reinicia Apache:bashCopia el codisudo synoservicecfg --restart httpd

B. Configurar Python com a script CGI

Si mod_wsgi no està disponible:

  1. Habilita el mòdul CGI a Apache:
    • Edita el fitxer de configuració d’Apache:bashCopia el codisudo vi /etc/httpd/conf/httpd.conf
    • Habilita CGI afegint:apacheCopia el codiScriptAlias /cgi-bin/ "/var/services/web/cgi-bin/" <Directory "/var/services/web/cgi-bin"> AllowOverride None Options +ExecCGI Require all granted AddHandler cgi-script .py </Directory>
  2. Crea la carpeta i els scripts:
    • Crea la carpeta cgi-bin al servidor web:bashCopia el codimkdir -p /var/services/web/cgi-bin chmod +x /var/services/web/cgi-bin
    • Afegeix un script Python:bashCopia el codinano /var/services/web/cgi-bin/hello.py
    • Exemple de contingut:pythonCopia el codi#!/usr/bin/env python3 print("Content-Type: text/html\n") print("<html><body><h1>Hello from Python CGI!</h1></body></html>")
  3. Dóna permisos d’execució:bashCopia el codichmod +x /var/services/web/cgi-bin/hello.py
  4. Reinicia Apache:bashCopia el codisudo synoservicecfg --restart httpd
  5. Accedeix al teu script:
    • Navega a http://<teu_synology>/cgi-bin/hello.py.

3. Solucionar problemes

  • Error 500:
    • Revisa els logs d’Apache al Synology:bashCopia el codicat /var/log/httpd/error_log
  • Python no trobat:
    • Assegura’t que la ruta de Python està definida correctament:bashCopia el codiwhich python3
    • Si és necessari, edita els teus scripts per utilitzar el camí complet (per exemple, #!/usr/local/bin/python3).