python3 py3 mod_wsgi libapache2 python django apache python-3.x mod-wsgi

py3 - Instale mod_wsgi en Ubuntu con Python 3.6, Apache 2.4 y Django 1.11



mod_wsgi express django (2)

Cuando he usado la sugerencia de @Graham Dumpleton para instalar el mod_wsgi usando pip , obtuve este error:

RuntimeError: The ''apxs'' command appears not to be installed or is not executable. Please check the list of prerequisites in the documentation for this package and install any missing Apache httpd server packages.

Para compilar e instalar con éxito el mod_wsgi través de pip , necesito instalar el paquete apache2-dev en Ubuntu:

sudo apt-get install -y apache2-dev

Después de que pip install mod_wsgi completa con éxito.

Espero que pueda ayudar a los demás.

¿Cómo obtengo mod_wsgi para Apache2 que se compiló para Python 3.6.1?

(o cualquier versión futura de Python)

Estoy usando un entorno virtual Python 3.6.1 con Django 1.11 y Todo funciona de acuerdo con el registro de errores de Apache, excepto que mod_wsgi para Apache 2.4 fue compilado para Python / 3.5.1 + y usa Python / 3.5.2, así que mi Python 3.6 El código .1 está fallando porque estoy usando nuevas funciones que no están disponibles en 3.5.2

Todas las demás configuraciones e instalaciones involucradas en la configuración de mi sistema parecen estar bien (ejecutándose en modo daemon), aunque mod_wsgi no parece estar usando mi entorno virtual Python 3.6.1 (aunque está intentando usarlo para Django de acuerdo con al registro de errores) ...

Utilicé: sudo apt-get install libapache2-mod-wsgi-py3 para instalar mod_wsgi para Apache 2.4

Utilicé: ./configure --with-python=/usr/local/bin/python3.6 y make with make install para instalar mod_wsgi para Python 3.6

Debo estar haciendo algo mal, por favor corríjame.

Aquí está mi registro de errores de Apache (limpiado un poco), y sí, sé que falla en la "" línea de cadena (característica de Python 3.6 no en 3.5)

[wsgi:warn] mod_wsgi: Compiled for Python/3.5.1+. [wsgi:warn] mod_wsgi: Runtime using Python/3.5.2. [wsgi:warn] AH00489: Apache/2.4.18 (Ubuntu) mod_wsgi/4.3.0 Python/3.5.2 configured -- resuming normal operations [wsgi:warn] AH00094: Command line: ''/usr/sbin/apache2'' [wsgi:error] mod_wsgi (pid=12963): Target WSGI script ''/home/jamin/www/dev.tir.com/tir/tir/wsgi.py'' cannot be loaded as Python module. [wsgi:error] mod_wsgi (pid=12963): Exception occurred processing WSGI script ''/home/jamin/www/dev.tir.com/tir/tir/wsgi.py''. [wsgi:error] Traceback (most recent call last): [wsgi:error] File "/home/jamin/www/dev.tir.com/tir/tir/wsgi.py", line 21, in <module> [wsgi:error] application = get_wsgi_application() [wsgi:error] File "/home/jamin/www/dev.tir.com/py361ve/lib/python3.6/site-packages/django/core/wsgi.py", line 13, in get_wsgi_application [wsgi:error] django.setup(set_prefix=False) [wsgi:error] File "/home/jamin/www/dev.tir.com/py361ve/lib/python3.6/site-packages/django/__init__.py", line 27, in setup [wsgi:error] apps.populate(settings.INSTALLED_APPS) [wsgi:error] File "/home/jamin/www/dev.tir.com/py361ve/lib/python3.6/site-packages/django/apps/registry.py", line 116, in populate [wsgi:error] app_config.ready() [wsgi:error] File "/home/jamin/www/dev.tir.com/py361ve/lib/python3.6/site-packages/django/contrib/admin/apps.py", line 23, in ready [wsgi:error] self.module.autodiscover() [wsgi:error] File "/home/jamin/www/dev.tir.com/py361ve/lib/python3.6/site-packages/django/contrib/admin/__init__.py", line 26, in autodiscover [wsgi:error] autodiscover_modules(''admin'', register_to=site) [wsgi:error] File "/home/jamin/www/dev.tir.com/py361ve/lib/python3.6/site-packages/django/utils/module_loading.py", line 50, in autodiscover_modules [wsgi:error] import_module(''%s.%s'' % (app_config.name, module_to_search)) [wsgi:error] File "/usr/lib/python3.5/importlib/__init__.py", line 126, in import_module [wsgi:error] return _bootstrap._gcd_import(name[level:], package, level) [wsgi:error] File "<frozen importlib._bootstrap>", line 986, in _gcd_import [wsgi:error] File "<frozen importlib._bootstrap>", line 969, in _find_and_load [wsgi:error] File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked [wsgi:error] File "<frozen importlib._bootstrap>", line 673, in _load_unlocked [wsgi:error] File "<frozen importlib._bootstrap_external>", line 665, in exec_module [wsgi:error] File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed [wsgi:error] File "/home/jamin/www/dev.tir.com/tir/company/admin.py", line 13, in <module> [wsgi:error] from .forms import AdminInteractionForm [wsgi:error] File "/home/jamin/www/dev.tir.com/tir/company/forms.py", line 87 [wsgi:error] resp = f"Hi {user.first_name}, you''ll need to login to send any more suggestions. // [wsgi:error] //n//nFirst Time? Check your email/spam for login instructions from us." [wsgi:error] [wsgi:error] ^ [wsgi:error] SyntaxError: invalid syntax

* también tir.com es una abreviatura de mi sitio real, no tengo nada que ver con ese dominio


Haz lo siguiente.

Desinstale el paquete de su sistema mod_wsgi.

sudo apt-get remove libapache2-mod-wsgi-py3

Instale mod_wsgi usando pip , preferiblemente en un entorno virtual Python. Asegúrate de que pip es para la versión de Python que quieres usar.

pip install mod_wsgi

Muestre la configuración para agregar al archivo de configuración de Apache para cargar este mod_wsgi ejecutando:

mod_wsgi-express module-config

Tome la salida del comando anterior para mostrar la configuración y agregarla a la configuración de Apache.

Agregue configuración a Apache para cargar una aplicación WSGI de hello world para probar que funciona.

Ver detalles para la instalación basada en pip en: