sudo apt install apache2 apache2-dev python3-venv python3-dev libapache2-mod-wsgi-py3 python3-pip
Ahora hay que instalar los módulos necesarios para Django, estoy hay que hacerlo dentro del entorno elegido para desarrollar ya sea Python venv, docker o cualquier otro sistema de virtualización.pip install django ConfigParser dj-database-url mod_wsgi
El modulo mod_wsgi es el que conectará con Apache2Ahora creamos proyecto y aplicación web, dentro de una carpeta llamada por ejemplo apache, creamos:
Creamos el proyecto django
django-admin startproject mainp .
Creamos la aplicación webpython manage.py startapp web
Ahora que hemos llegado hasta aquí probemos que funciona el web, pero antes tenemos que habilitar en el fichero settings.py del proyecto los hosts que pueden acceder. En el array ALLOWED_HOSTS añadimos un * para permitirlos todos, si no los queremos todos ponemos el nombre de la url que tiene acceso:ALLOWED_HOSTS = [ '*']
Y ahora ejecutamos el servidor de desarrollo de Django de la siguiente formapython manage.py runserver
Esto crea un servidor con acceso a la IP http://127.0.0.1:8000/ pero si queremos utilizar otra porque estamos trabajando con entornos virtualizados podemos indicar el host:port que queremos:python manage.py runserver http://192.168.1.137:8080
Y tendría que salir esto:
Ahora vamos a cambiar el servidor local de runserver por apache2 y para esto tenemos que crearnos un virtualhost en apache2 con la siguiente configuración, en un fichero llamado vhosts.django.conf, por ejemplo, escribimos:
<VirtualHost *:80>
ServerName blog-apache.local
DocumentRoot /home/vagrant/netveloper/apache2
WSGIDaemonProcess app_web_apache python-path=/home/vagrant/netveloper/apache2
WSGIProcessGroup app_web_apache
WSGIScriptAlias / /home/vagrant/netveloper/apache2/mainp/wsgi.py
<Directory /home/vagrant/netveloper/apache2>
<Files wsgi.py>
WSGIScriptReloading On
Require all granted
</Files>
</Directory>
Alias /static /home/vagrant/netveloper/apache2/web/static
<Directory //home/vagrant/netveloper/apache2/web/static>
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error_web.log
CustomLog ${APACHE_LOG_DIR}/access_web.log combined
</VirtualHost>
Y en nuestro hosts local (/etc/hosts) tendremos que apuntar la IP del servidor de desarrollo (si es el mismo local pues 127.0.0.1) en mi caso es 192.168.1.137 al nombre que hemos puesto en ServerName, en el ejemplo blog-apache.local. Y quedaría así:
Suponiendo que este fichero vhosts.django.conf lo hemos creado en la raíz del proyecto lo tenemos que enlazar con el directorio de Apache2 creando un enlace simbólico:
sudo ln -s /home/vagrant/netveloper/apache2/vhost.django.conf /etc/apache2/sites-enabled/
Reiniciamos apache2sudo /etc/init.d/apache2 restart
Y probamos si todo funciona correctamente escribiendo en el navegador la url blog-apache.local, y si todo ha ido bien tendría que salir la misma página que anteriormente.
Y esto es todo, feliz programming
Saludos
Alex.