Two possibility come to mind immediately.

The first is that the version of Python that mod_wsgi was compiled for is 
different to the version of Python your virtual environment was created using. 
You can't force mod_wsgi compiled for one Python version to use a virtual 
environment for a different Python version.

The second is that the permissions on the Python virtual environment root 
directory are such that the Apache user cannot access it, or that the Django 
package directory within the site-packages directory of the Python virtual 
environment doesn't have permissions such that Apache user can access it.

What do you get for:

    ls -lasd /home/pi/Andola
    ls -lasd /home/pi/Andola/myDjangoEnv
    ls -lasd /home/pi/Andola/myDjangoEnv/lib/python3.7/site-packages/django*

Graham

> On 1 Dec 2020, at 2:16 pm, Anibal Xochipa <[email protected]> wrote:
> 
> I'm trying to deploy my Django app using Apache2 on a raspberry pi 4B running 
> raspbian 10 
> My project path looks like this 
> /home/pi/Andola
> Inside that folder I created a Virtual environment called MyDjangoEnv running 
> python 3.8.2 and Django 3.0.3 so the path to the virtual environment looks 
> like this
> /home/pi/Andola/myDjangoEnv
> My wsgi.py file lives inside this folder: /home/pi/Andola/AnDjo/wsgi.py , 
> next to the settings.py  , __init__.py , etc  
> 
> 
> I copied the file 000-default.conf on /etc/apache2/sites-available to another 
> one named django_project.conf in order to configure my own site. I configured 
> it according to Django documentation and my new file looks like this:
> 
> <VirtualHost *:80>
>       # The ServerName directive sets the request scheme, hostname and port 
> that
>       # the server uses to identify itself. This is used when creating
>       # redirection URLs. In the context of virtual hosts, the ServerName
>       # specifies what hostname must appear in the request's Host: header to
>       # match this virtual host. For the default virtual host (this file) this
>       # value is not decisive as it is used as a last resort host regardless.
>       # However, you must set it for any further virtual host explicitly.
>       #ServerName www.example.com
> 
>       ServerAdmin webmaster@localhost
>       DocumentRoot /var/www/html
> 
>       # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
>       # error, crit, alert, emerg.
>       # It is also possible to configure the loglevel for particular
>       # modules, e.g.
>       #LogLevel info ssl:warn
> 
>       ErrorLog ${APACHE_LOG_DIR}/error.log
>       CustomLog ${APACHE_LOG_DIR}/access.log combined
> 
>       # For most configuration files from conf-available/, which are
>       # enabled or disabled at a global level, it is possible to
>       # include a line for only one particular virtual host. For example the
>       # following line enables the CGI configuration for this host only
>       # after it has been globally disabled with "a2disconf".
>       #Include conf-available/serve-cgi-bin.conf
> 
>       Alias /static /home/pi/Andola/static
>       <Directory /home/pi/Andola/static>
>               Require all granted
>       </Directory>
> 
>         Alias /media /home/pi/Andola/media
>         <Directory /home/pi/Andola/media>
>                 Require all granted
>         </Directory>
> 
>       <Directory /home/pi/Andola/AnDjo>
>               <Files wsgi.py>
>                       Require all granted
>               </Files>
>       </Directory>
> 
>       WSGIScriptAlias / /home/pi/Andola/AnDjo/wsgi.py
>       WSGIDaemonProcess django_app python-path=/home/pi/Andola/ 
> python-home=/home/pi/Andola/myDjangoEnv
>       WSGIProcessGroup django_app
> 
> </VirtualHost>
> 
> # vim: syntax=apache ts=4 sw=4 sts=4 sr noet
> 
> I think I gave the propper permissions to media folder and changed the 
> ownership  of my project folder (Andola) to www-data.
> 
> My Django application runs totally fine when I use python manage.py runserver 
> but whenever I try to run apache it gives me the 500 Internal Server Error 
> and the next shows up in the error log
> 
> [Mon Nov 30 20:47:16.396524 2020] [mpm_event:notice] [pid 10724:tid 
> 3069383184] AH00491: caught SIGTERM, shutting down
> [Mon Nov 30 20:47:16.540219 2020] [mpm_event:notice] [pid 12812:tid 
> 3069309456] AH00489: Apache/2.4.38 (Raspbian) mod_wsgi/4.6.5 Python/3.7 
> configured -- resuming normal operations
> [Mon Nov 30 20:47:16.540623 2020] [core:notice] [pid 12812:tid 3069309456] 
> AH00094: Command line: '/usr/sbin/apache2'
> [Mon Nov 30 20:47:20.764437 2020] [wsgi:error] [pid 12813:tid 3038991392] 
> [remote ::1:52238] mod_wsgi (pid=12813): Failed to exec Python script file 
> '/home/pi/Andola/AnDjo/wsgi.py'.
> [Mon Nov 30 20:47:20.764696 2020] [wsgi:error] [pid 12813:tid 3038991392] 
> [remote ::1:52238] mod_wsgi (pid=12813): Exception occurred processing WSGI 
> script '/home/pi/Andola/AnDjo/wsgi.py'.
> [Mon Nov 30 20:47:20.765543 2020] [wsgi:error] [pid 12813:tid 3038991392] 
> [remote ::1:52238] Traceback (most recent call last):
> [Mon Nov 30 20:47:20.767301 2020] [wsgi:error] [pid 12813:tid 3038991392] 
> [remote ::1:52238]   File "/home/pi/Andola/AnDjo/wsgi.py", line 12, in 
> <module>
> [Mon Nov 30 20:47:20.767372 2020] [wsgi:error] [pid 12813:tid 3038991392] 
> [remote ::1:52238]     from django.core.wsgi import get_wsgi_application
> [Mon Nov 30 20:47:20.767491 2020] [wsgi:error] [pid 12813:tid 3038991392] 
> [remote ::1:52238] ModuleNotFoundError: No module named 'django'
> 
> I ran the scripts here 
> https://modwsgi.readthedocs.io/en/develop/user-guides/checking-your-installation.html
>  
> <https://modwsgi.readthedocs.io/en/develop/user-guides/checking-your-installation.html>
>  getting the next results:
> 
> Python Installation in use:
> sys.version = '3.7.3 (default, Jul 25 2020, 13:03:44) \n[GCC 8.3.0]' 
> sys.prefix = '/home/pi/Andola/myDjangoEnv'
> 
> Python module search path:
> sys.path = ['/home/pi/Andola', '/usr/lib/python37.zip', '/usr/lib/python3.7', 
> '/usr/lib/python3.7/lib-dynload']
> 
> Embedded or Daemon Mode
> mod_wsgi.process_group = 'django_app'
> 
> Subinterpreter Being Used
> mod_wsgi.application_group = '192.168.1.70|'
> 
> I can see that wsgi might not be using myDjangoEnv and a bad configuration is 
> happening but as this is the first time I'm using wsgi and also the first 
> time trying to make a website I've been kind of lost for the last few days /::
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "modwsgi" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] 
> <mailto:[email protected]>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/modwsgi/0ecac6e4-53ad-43ad-ab9e-b498775a3275n%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/modwsgi/0ecac6e4-53ad-43ad-ab9e-b498775a3275n%40googlegroups.com?utm_medium=email&utm_source=footer>.

-- 
You received this message because you are subscribed to the Google Groups 
"modwsgi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/modwsgi/7E514D87-5146-42B1-92E7-9E604B77886B%40gmail.com.

Reply via email to