Ejecución de una aplicación Django en un servidor web o administrado en Hetzner

0 acciones
0
0
0
0

Introducción

En este tutorial, aprenderemos a ejecutar una aplicación Python Django en servidores de Hetzner Webhosting o Managed Server. Django es un framework web de Python. Por defecto, el framework se ejecuta en WSGI (la interfaz entre el servidor web y la aplicación), pero mod_wsgi no está disponible en un servidor Apache administrado. Sin embargo, existen varias maneras de convertir WSGI a otras interfaces compatibles.

Requisitos previos
  • Alojamiento web con soporte SSH (versión 9 o superior) o servidor administrado con acceso SSH habilitado.

Paso 1 – Instalar dependencias

Paso 1.1 – Instalar y activar virtualenv
pip3 install --break-system-packages virtualenv mkdir /usr/home/holu/virtualenvs python3 -m virtualenv /usr/home/holu/virtualenvs/example_com . /usr/home/holu/virtualenvs/example_com/bin/activate
Paso 1.2 – Instalación de Django
pip install django
Paso 1.3 – Instalar Flup (opcional, necesario para FastCGI)
pip install flup

Paso 2: Crear y configurar el proyecto Django

Paso 2.1 – Iniciar el proyecto
mkdir /usr/home/holu/djangoprojects env -C "/usr/home/holu/djangoprojects" django-admin startproject example_com
Paso 2.2 – Configuración del proyecto

Todos los dominios solicitados a la variable HOSTALES PERMITIDOS Añadelo para hacerlo accesible.

vim /home/holu/djangoprojects/example_com/example_com/settings.py

Al golpear I Vaya a “Modo de importación” y agregue todos los dominios solicitados:

ALLOWED_HOSTS = ['example.com']

Al golpear Esc Regrese al "modo de comando" y :wq Entrar para guardar y salir.

Paso 3: Preparar la raíz del documento del servidor web

Cree un directorio de sitio web vacío y cambie la raíz del documento en konsoleH.

mkdir -p /usr/home/holu/public_html/example_com
Opción 1 – FastCGI

Crear .htaccess

vim /usr/home/holu/public_html/example_com/.htaccess

Al golpear I Vaya a “Modo de importación” e ingrese el siguiente contenido:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ djangoapp.fcgi/$1 [QSA,L]
</IfModule>

Al golpear Esc Regrese al "modo de comando" y :wq Entrar para guardar y salir.

Crear un script .fcgi

vim /usr/home/holu/public_html/example_com/djangoapp.fcgi
#!/usr/home/holu/virtualenvs/example_com/bin/python
import sys
import os
import django
from flup.server.fcgi import WSGIServer
from django.core.handlers.wsgi import WSGIHandler
sys.path.append("/usr/home/holu/djangoprojects/example_com")
os.environ['DJANGO_SETTINGS_MODULE']="example_com.settings"
django.setup(set_prefix=False)
WSGIServer(WSGIHandler()).run()

Establecer el permiso de ejecución para el propietario:

chmod 744 /usr/home/holu/public_html/example_com/djangoapp.fcgi
Opción 2 – CGI

Crear .htaccess

vim /usr/home/holu/public_html/example_com/.htaccess

Al golpear I Vaya a “Modo de importación” e ingrese el siguiente contenido:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ djangoapp.cgi/$1 [QSA,L]
</IfModule>

Al golpear Esc Regrese al "modo de comando" y :wq Entrar para guardar y salir.

Creando un script .cgi

vim /usr/home/holu/public_html/example_com/djangoapp.cgi
#!/usr/home/holu/virtualenvs/example_com/bin/python
import sys
import os
import django
import wsgiref.handlers
from django.core.handlers.wsgi import WSGIHandler
sys.path.append("/usr/home/holu/djangoprojects/example_com")
os.environ['DJANGO_SETTINGS_MODULE']="example_com.settings"
django.setup(set_prefix=False)
wsgiref.handlers.CGIHandler().run(WSGIHandler())

Establecer el permiso de ejecución para el propietario:

chmod 744 /usr/home/holu/public_html/example_com/djangoapp.cgi

Paso 4 – Prueba

Para probar, visita tu dominio. Deberías ver algo como la imagen a continuación:

Resultado

Ahora puedes implementar tus aplicaciones Django en un sistema operativo administrado.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

También te puede gustar