Problemas al ejecutar django y apache2/mod_wsgi. Sigo recibiendo 500 Error interno del servidor. He probado muchas combinaciones de correcciones a las que ninguna ha funcionado. Cualquier ayuda es muy apreciada. Esta es mi configuración:
Ubuntu 16.04 django 1.10.5 apache 2.4.18 python 3.4(virtualenv) libapache2-mod-wsgi-py3Mi estructura de carpetas es:
/home/user/site/venv (virtualenv folder) bin include lib /home/user/site/mysite |- manage.py static mysite |__init__.py |settings.py |urls.py |wsgi.pysitio.conf
<VirtualHost *:80> WSGIDaemonProcess myproject python-home=/home/user/site/venv python-path=/home/user/site/mysite WSGIProcessGroup myproject WSGIScriptAlias / /home/user/site/mysite/mysite/wsgi.py Alias /static /home/user/site/mysite/static <Directory /home/user/site/mysite/static> Require all granted </Directory> <Directory /home/user/site/mysite/mysite> <Files wsgi.py> Require all granted </Files> </Directory> </VirtualHost>wsgi.py
import os from django.core.wsgi import get_wsgi_application os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings") application = get_wsgi_application()apache2/error.log
[mpm_event:notice] [pid 8908:tid 140560009164672] AH00491: caught SIGTERM, shutting down [wsgi:warn] [pid 9047:tid 139761898837888] mod_wsgi: Compiled for Python/3.5.1+. [wsgi:warn] [pid 9047:tid 139761898837888] mod_wsgi: Runtime using Python/3.5.2. [mpm_event:notice] [pid 9047:tid 139761898837888] AH00489: Apache/2.4.18 (Ubuntu) mod_wsgi/4.3.0 Python/3.5.2 configured -- resuming normal operations [core:notice] [pid 9047:tid 139761898837888] AH00094: Command line: '/usr/sbin/apache2' [wsgi:error] [pid 9049:tid 139761776183040] mod_wsgi (pid=9049): Target WSGI script '/home/user/site/mysite/mysite/wsgi.py' cannot be loaded as Python module. [wsgi:error] [pid 9049:tid 139761776183040] mod_wsgi (pid=9049): Exception occurred processing WSGI script '/home/user/site/mysite/mysite/wsgi.py'. [wsgi:error] [pid 9049:tid 139761776183040] Traceback (most recent call last): [wsgi:error] [pid 9049:tid 139761776183040] File "/home/user/site/mysite/mysite/wsgi.py", line 12, in <module> [wsgi:error] [pid 9049:tid 139761776183040] from django.core.wsgi import get_wsgi_application [wsgi:error] [pid 9049:tid 139761776183040] ImportError: No module named 'django'He dado los permisos a las carpetas a continuación:
sudo chown -R www-data:www-data /home/user/site/venv sudo chown -R www-data:www-data /home/user/site/mysiteCualquier ayuda o crítica me encantaría gracias de antemano.
Así que después de un intenso cabezazo contra la pared. Resulta que necesitaba compilar mi propio mod_wsgi para la versión de python que estaba usando. Estaba usando el repositorio estándar para ubuntu libapache2-mod-wsgi-py3 que está compilado para usar con python3.5.2 como se muestra en mi error.log.
Fui aquí para obtener la versión más actualizada: mod_wsgi_releases
asegúrese de usar el siguiente comando al instalar mod_wsgi
.configure --with-python=/your/virtualenv/bin/python(your python_verion here)
Intenta usar algo como esto. Solo para confirmar, ¿ myproject es el grupo de usuarios?
WSGISocketPrefix /var/run/wsgi WSGIPythonPath /home/user/site/venv/lib/python2.7/site-packages WSGIDaemonProcess ec2-user processes=1 WSGIProcessGroup ec2-user WSGIScriptAlias / /home/user/site/mysite/mysite/wsgi.pymod_wsgi es la causa de este error porque el módulo mod_wsgi en el código C se vincula a la biblioteca de Python. Por lo tanto, la versión de Python para la que se compila está integrada en el módulo. No solo ejecuta el programa python. Esto significa que debe compilarse para la versión de Python que desea usar. No puede forzarlo a través de un entorno virtual para usar una versión de Python diferente [fuente] .
Por lo tanto, debe desinstalar el módulo mod_wsgi (probablemente el sistema operativo empaquetado) e instalar mod_wsgi usted mismo desde el código fuente, compilándolo con la versión de Python que desea usar.
Siga los pasos a continuación para corregir el error:
sudo rm /usr/lib/apache2/modules/mod_wsgi.so ## A.requirements: sudo apt update sudo apt install build-essential checkinstall sudo apt install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev sudo apt install libffi-dev ## B.build mod_wsgi: apt install apache2 apache2-dev wget https://github.com/GrahamDumpleton/mod_wsgi/archive/4.7.1.tar.gz tar xvfz 4.7.1.tar.gz cd mod_wsgi-4.7.1 ./configure --with-python=[your python path] ## for example: ./configure --with-python=/usr/bin/python3.7 sudo make sudo make install Puede usar which python3.7 para encontrar la ruta del archivo de Python
sudo systemctl reload apache2