Preparación de un servidor Linux para ejecutar una aplicación web en Python

11 de marzo de 2020

Lang: cs en de es

Hay muchas tecnologías que se pueden utilizar para desarrollar aplicaciones web. Una de ellas es el lenguaje Python y el framework Django. En este artículo, describiré cómo preparar un servidor Linux (VPS) para ejecutar una aplicación web programada en Python.

En este artículo voy a describir la instalación de un servidor Linux con la distribución Debian 9 sobre el que ejecutaré una aplicación web escrita en Python. Antes, sin embargo, necesitaré poner en marcha el servidor web y el entorno Python y conectar el servidor web a la aplicación Python. El resultado será un servidor físico o VPS para ejecutar la aplicación Python/Django. Por supuesto, la aplicación también estará conectada a base de datos SQL, pero ese no es el tema de este artículo - esta información está en el artículo Bases de datos PostgreSQL y MySQL/MariaDB.

Antecedentes

El procedimiento de instalación y configuración es el siguiente:

  1. Instalación de Python
  2. Instalación y puesta en marcha del servidor web Nginx
  3. .
  4. Configuración del entorno Python
  5. Cómo configurar Nginx
  6. Instalación de Django
  7. Configurar uwsgi
  8. Conectar Python
  9. Conectar Python
  10. Conectando la aplicación Python y el servidor web

Python

Lo primero que hay que elegir es si necesitas Python versión 3 o Python versión 2.

Instalando la versión 3 de Python:

apt-get install python3

Instalar la versión 2 de Python:
apt-get install python2

WSGI HTTP

WSGI es un núcleo de Web Server Gateway Interface. Es una convención para llamar a servidores web y reenviar peticiones a aplicaciones web. Que está soportado por el Django framework escrito en el lenguaje de programación Python. Con este framework, te mostraré cómo poner en marcha un servidor web Python. Detalles qué es WSGI.

Además del framework Django, existen otros frameworks escritos en Python tales como Flask.

Como implementación de WSGI, podemos utilizar Gunicorn o UWSGI. Yo uso UWSGI en algún sitio y Gunicorn en otro.

Instalación de uwsgi:

apt-get install uwsgi
Ni siquiera necesitamos instalar uwsgi en el sistema, ya que podemos usar la versión que instalemos con las librerías para la aplicación.

Como he comentado anteriormente, utilizaremos Nginx como servidor web. Por lo tanto, si ya tienes instalado el servidor web apache, es buena idea limpiar el sistema del mismo con el comando:

apt-get purge apache2

Para instalar el servidor web Nginx, utiliza el comando:

apt-get install nginx

Instala virtualenv, que es una herramienta para crear un entorno aislado para ejecutar aplicaciones Python. Para instalarlo, utiliza el comando:

apt-get virtualenv

Tutorial general del servidor web Python

Vamos a crear un entorno para aplicaciones web en Python versión 2. Para Python versión 3, es casi lo mismo.

Crea un directorio donde guardaremos el entorno y los datos del proyecto:

DIR=/var/www/test2/mysite
mkdir $DIR
cd $DIR
Crear un entorno aislado:
virtualenv --python=python2 --always-copy venv
Cambiar a un entorno aislado:
source venv/bin/activate

Instalaremos todas las librerías para el entorno aislado utilizando la tecnología pip.

No necesitamos tener UWSGI en el sistema, sino que podemos instalarlo directamente en este comando aislado:

pip install uwsgi

Entorno virtual Python 3

Creación de un entorno aislado:

virtualenv --python=python3 --always-copy venv
Cambiar al entorno:
source venv/bin/activate

Cómo configurar un servidor web Nginx

Crea un archivo /etc/nginx/sites-available/mysite_nginx.conf con el siguiente contenido:

# el componente upstream al que nginx necesita conectarse.
upstream django {
    # server unix:///path/to/your/mysite/mysite.sock; # para un socket de archivos.
    server 127.0.0.1:8001; # para un socket de puerto web (usaremos este primero)
}

# configuración del servidor
servidor {
    # el puerto en el que su sitio será servido
    listen 8000;
    # el nombre de dominio para el que servirá
    nombre_servidor ejemplo.com; # sustituya la dirección IP o FQDN de su máquina
    charset utf-8;

    # tamaño máximo de subida
    client_max_body_size 75M;
    # ajustar al gusto

    # Django media
    ubicación /media {
        alias /ruta/su/sitio/media;
        # los archivos multimedia de su proyecto Django - modifíquelos a su gusto
    }

    ubicación /static {
        alias /ruta/a/tu/sitio/estático;
        # los archivos estáticos de su proyecto Django - modifíquelos según sea necesario
    }

    # Por último, envía todas las peticiones que no sean multimedia al servidor Django.
    location / {
        uwsgi_pass django;
        include /ruta/a/tu/sitio/uwsgi_params;
        # el archivo uwsgi_params que instalaste
    }
}

Es bueno conectar el servidor web a la aplicación mediante socket. También necesitas configurar uwsgi para que se inicie automáticamente cuando arranque el servidor. En sistemas antiguos estos son init scripts, pero en sistemas actuales (2019) definitivamente usarás systemd startup. Aquí tienes cómo configurarlo uwsgi arranca con sysmted. Y no olvides activar el comando auto-start service:
systemctl enable webapp.service

El resultado será un servidor con un entorno para aplicaciones web escritas en el framework Django.
No olvides configurar también la seguridad web con certificado y conexión cifrada HTTPS.

Quién necesita Instalación y configuración personalizada de servidor Linux con Python no dude en ponerse en contacto conmigo.

Vídeo demostración de configuración de un servidor web Python

Vídeo demostración con instalación y configuración de servidor Linux para ejecutar aplicación Python con framework Django. El servidor web utilizado es nginx y uwsgi.

    Descripción del vídeo:
  1. Instalación de Python
  2. .
  3. Servidor web Nginx
  4. Configuración del entorno Python
  5. .
  6. Configuración de Nginx
  7. Instalación del framework Django
  8. Cómo configurar uwsgi
  9. Conectando la aplicación Python y el servidor web

Enlaces

Ejecutar Python como una aplicación web:
Django y Nginx
nginx + Django + python 3

Lista de parámetros de UWSGI: uwsgi_params

Artículos sobre un tema similar

VMware frente a Proxmox: comparación de rendimiento
GitLab CI/CD: automatización de pruebas y despliegue de aplicaciones
Migración de VPS de VMware a Proxmox
Cambio en las licencias de VMware
Ejecución de Microsoft SQL Server en Linux
Copia de seguridad: el Proxmox Backup Server
Linux como router y cortafuegos
Cómo subir una imagen Docker al Registro Docker
Linux: gestión de volúmenes lógicos
Software RAID para Linux
Ejecutar una aplicación web detrás de un proxy
Migración de correo electrónico
Construcción multietapa Docker
Copia de seguridad de los datos al encender el ordenador
Podman
Importación de Windows a la virtualización Proxmox
Docker y correo PHP
Virtualización Proxmox
Docker y Cron
Lenovo ThinkPad X1 Carbon: puesta en servicio del módem LTE EM7544
Proyecto Yocto: Cree un sistema operativo personalizado para dispositivos integrados
Cómo solucionar el bajo rendimiento de los archivos compartidos en Docker
Cómo empezar a utilizar Docker correctamente
Instalación de Linux en un servidor HPE ProLiant DL320e dedicado
Cómo poner a prueba una aplicación web
Por qué utilizar el sistema de archivos JFS
Cómo arrancar desde un disco de 4TB con GTP usando UEFI
Sistema de archivos Btrfs
Raspberry PI
WINE - ejecución de programas Windous en Linux
Sistema operativo GNU/Linux

Boletin informativo

Si está interesado en recibir noticias puntuales por correo electrónico.
Puedes registrarte rellenando tu email suscripción de noticias.


+