Woah... talk about me spinning over the wrong thing!  I made so many 
adjustments to these files in the past couple days while reading through 
docs, blogs and SO that I became rather consumed by the "mod_wsgi (pid=7): 
Target WSGI script '/var/www/configurator/apache/backend-dev.wsgi' cannot 
be loaded as Python module." error message to the point that I missed the 
most obvious part in the end (this was the last of many error messages as 
you can imagine).  *Thank you! * Now that I've taken a full dose of dufus 
for the year, I'll take a moment to rejoice in the fact that I got my first 
Docker container to work ;)

Btw, I really enjoyed watching your "Secrets of a WSGI master" youtube 
video.  I learned a lot and am looking forward to experimenting with 
*warpdrive* and updating this docker image so that A) python is in a 
virtual environment and B) not run this container as root.  

Thanks again Graham.  You rock!  


On Friday, November 3, 2017 at 4:24:22 AM UTC-7, Graham Dumpleton wrote:
>
> The error shows the problem as likely being the absence of 'git' in your 
> Docker image.
>
> Graham
>
> On 3 Nov 2017, at 9:46 am, Alister Fenix <ali...@argenticsoftware.com 
> <javascript:>> wrote:
>
> Hello Graham, et al. 
> First, thank you for being an outstanding contributor to the community.  
> This is my first attempt to set up a VM for a pretty old legacy project, 
> and I am very new to devops in general, so thank you in advance for your 
> patience! I'm working to move an old Django/Apache project off of Vagrant 
> into Docker containers. I was able to get it working when using Python's 
> built-in runserver, but I've been stuck for far too long now trying to get 
> it to work with Apache.  From what I can tell from the docs, etc it seems 
> that my mod-wsgi version is struggling with Django 1.7 (I'm making a case 
> with management to upgrade, but so far it's not in the budget).  I also 
> think that I'm incorrectly setting my paths, but my multiple attempts to 
> correct this have come up empty.  Needless to say, there's where I am now. 
>
>
> I'm running docker on a Mac os Sierra Version 10.12.6
>
> *Container versions: *
> Django: 1.7.0
> Apache: 2.4.7
> Python: 2.7.6
> mod-wsgi: 3.4
> Ubuntu OS: 14.04
>
>
> ***** Dockerfile ****** *
> FROM ubuntu:14.04
>
> RUN apt-get update 
> RUN apt-get upgrade -y 
> RUN apt-get install -y apt-utils apache2 apache2-utils 
> RUN apt-get install -y \
> pkg-config \
> python-pip \
> python2.7-dev \
> build-essential \
> python2.7 \
> libmysqlclient-dev \
> && apt-get autoremove \
>         && apt-get clean
>
> WORKDIR /var/www/configurator
> ADD requirements /var/www/configurator/requirements
> RUN pip install --upgrade pip
> RUN pip install -r requirements/dev.txt
>
> RUN pip install django
>
> ENV PYTHONPATH $PYTHONPATH:/var/www/configurator
> ENV DJANGO_SETTINGS_MODULE scs-configurator.settings.dev
>
> ADD ./apache.conf /etc/apache2/sites-available/000-default.conf
> ADD ./apache.conf /etc/apache2/sites-enabled/000-default.conf
>
> EXPOSE 80 3500
>
> CMD ["apache2ctl", "-D", "FOREGROUND"]
> -------------------------------------------------------------------------
>
>
>
> ****** docker-compose.yml ********
> version: '2'
> services:
>   mysql:
>     image: mysql
>     volumes:
>       - "./.data/mysql:/var/lib/mysql"
>     ports:
>       - "3306:3306"
>     environment:
>       MYSQL_ROOT_PASSWORD: root
>       MYSQL_DATABASE: configuratordb
>     restart: always
>   django-apache2:
>     build: .
>     container_name: django-apache2
>     ports:
>       - '8005:80'
>     volumes: 
>       - ".:/var/www/configurator"
>     depends_on:
>       - mysql
>     restart: always
> ---------------------------------------------------------------------------
>
>
>
> ****** apache.conf  ********
> WSGIPythonPath /var/www/configurator
>  
>  <VirtualHost *:80>
>          ServerName configurator
>          DocumentRoot /var/www/configurator/dist
>          
>          <Directory /var/www/configurator>
>             Options -Indexes +FollowSymLinks
>             AllowOverride all
>             Require all granted
>          </Directory>
>
>      ServerAdmin webmaster@localhost
>          DocumentRoot /var/www/configurator 
>          
>          Alias /static /var/www/configurator/dist
>          
>          SetEnv APPLICATION_ENV dev
>  
>          WSGIDaemonProcess scs-configurator 
> python-path=/var/www/configurator/:/usr/local/lib/python2.7/site-packages
>          WSGIProcessGroup scs-configurator
>          WSGIScriptAlias / /var/www/configurator/apache/backend-dev.wsgi
>  </VirtualHost>
>
> ------------------------------------------------------------------------------
>
>
> ******   **backend-dev.wsgi**  ********
> import os, sys
> from django.core.wsgi import get_wsgi_application
> import backend.monitor
>
> sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '../../' )
> os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings.dev")
>
> print ('sys.version: ')
> print (sys.version)
> print ('sys.path: ') 
> print (sys.path)
>
> os.environ['APPLICATION_ENV'] = 'dev'
> os.environ['PGCONNECT_TIMEOUT'] = '20'
>
> _application = get_wsgi_application()
>
> def application(wsgi_environ, start_response):
>     return _application(wsgi_environ, start_response)
>
> backend.monitor.start(interval=1.0)
>
> ------------------------------------------------------------------------------
>
> This set up gives me a 500 Internal Server error after the container is 
> built and up.  When I investigate the containers Apache error.log file I 
> get the following output: 
>
> root@95937636bd2f:/var/www/configurator# cat /var/log/apache2/error.log
> AH00558: apache2: Could not reliably determine the server's fully 
> qualified domain name, using 172.25.0.3. Set the 'ServerName' directive 
> globally to suppress this message
> [Thu Nov 02 22:37:12.934167 2017] [mpm_event:notice] [pid 6:tid 
> 140568651089792] AH00489: Apache/2.4.7 (Ubuntu) mod_wsgi/3.4 Python/2.7.6 
> configured -- resuming normal operations
> [Thu Nov 02 22:37:12.934299 2017] [core:notice] [pid 6:tid 
> 140568651089792] AH00094: Command line: '/usr/sbin/apache2 -D FOREGROUND'
> [Thu Nov 02 22:37:31.647113 2017] [:error] [pid 7:tid 140568547739392] 
> sys.version: 
> [Thu Nov 02 22:37:31.647242 2017] [:error] [pid 7:tid 140568547739392] 
> 2.7.6 (default, Oct 26 2016, 20:33:43) 
> [Thu Nov 02 22:37:31.647258 2017] [:error] [pid 7:tid 140568547739392] 
> [GCC 4.8.4]
> [Thu Nov 02 22:37:31.647270 2017] [:error] [pid 7:tid 140568547739392] 
> sys.path: 
> [Thu Nov 02 22:37:31.647296 2017] [:error] [pid 7:tid 140568547739392] 
> ['/var/www/configurator', '/usr/local/lib/python2.7/site-packages', 
> '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', 
> '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', 
> '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', 
> '/usr/lib/python2.7/dist-packages', '/var/www/configurator/apache../../']
> [Thu Nov 02 22:37:31.727120 2017] [:error] [pid 7:tid 140568547739392] 
> [remote 172.25.0.1:30896] mod_wsgi (pid=7): Target WSGI script 
> '/var/www/configurator/apache/backend-dev.wsgi' cannot be loaded as Python 
> module.
> [Thu Nov 02 22:37:31.727172 2017] [:error] [pid 7:tid 140568547739392] 
> [remote 172.25.0.1:30896] mod_wsgi (pid=7): Exception occurred processing 
> WSGI script '/var/www/configurator/apache/backend-dev.wsgi'.
> [Thu Nov 02 22:37:31.727286 2017] [:error] [pid 7:tid 140568547739392] 
> [remote 172.25.0.1:30896] Traceback (most recent call last):
> [Thu Nov 02 22:37:31.727324 2017] [:error] [pid 7:tid 140568547739392] 
> [remote 172.25.0.1:30896]   File 
> "/var/www/configurator/apache/backend-dev.wsgi", line 16, in <module>
> [Thu Nov 02 22:37:31.730468 2017] [:error] [pid 7:tid 140568547739392] 
> [remote 172.25.0.1:30896]     _application = get_wsgi_application()
> [Thu Nov 02 22:37:31.730515 2017] [:error] [pid 7:tid 140568547739392] 
> [remote 172.25.0.1:30896]   File 
> "/usr/local/lib/python2.7/dist-packages/django/core/wsgi.py", line 14, in 
> get_wsgi_application
> [Thu Nov 02 22:37:31.730595 2017] [:error] [pid 7:tid 140568547739392] 
> [remote 172.25.0.1:30896]     django.setup()
> [Thu Nov 02 22:37:31.730612 2017] [:error] [pid 7:tid 140568547739392] 
> [remote 172.25.0.1:30896]   File 
> "/usr/local/lib/python2.7/dist-packages/django/__init__.py", line 20, in 
> setup
> [Thu Nov 02 22:37:31.730654 2017] [:error] [pid 7:tid 140568547739392] 
> [remote 172.25.0.1:30896]     configure_logging(settings.LOGGING_CONFIG, 
> settings.LOGGING)
> [Thu Nov 02 22:37:31.730669 2017] [:error] [pid 7:tid 140568547739392] 
> [remote 172.25.0.1:30896]   File 
> "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 46, 
> in __getattr__
> [Thu Nov 02 22:37:31.730747 2017] [:error] [pid 7:tid 140568547739392] 
> [remote 172.25.0.1:30896]     self._setup(name)
> [Thu Nov 02 22:37:31.730762 2017] [:error] [pid 7:tid 140568547739392] 
> [remote 172.25.0.1:30896]   File 
> "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 42, 
> in _setup
> [Thu Nov 02 22:37:31.730783 2017] [:error] [pid 7:tid 140568547739392] 
> [remote 172.25.0.1:30896]     self._wrapped = Settings(settings_module)
> [Thu Nov 02 22:37:31.730795 2017] [:error] [pid 7:tid 140568547739392] 
> [remote 172.25.0.1:30896]   File 
> "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 94, 
> in __init__
> [Thu Nov 02 22:37:31.730810 2017] [:error] [pid 7:tid 140568547739392] 
> [remote 172.25.0.1:30896]     mod = 
> importlib.import_module(self.SETTINGS_MODULE)
> [Thu Nov 02 22:37:31.730823 2017] [:error] [pid 7:tid 140568547739392] 
> [remote 172.25.0.1:30896]   File 
> "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
> [Thu Nov 02 22:37:31.731533 2017] [:error] [pid 7:tid 140568547739392] 
> [remote 172.25.0.1:30896]     __import__(name)
> [Thu Nov 02 22:37:31.731554 2017] [:error] [pid 7:tid 140568547739392] 
> [remote 172.25.0.1:30896]   File "/var/www/configurator/settings/dev.py", 
> line 46, in <module>
> [Thu Nov 02 22:37:31.735029 2017] [:error] [pid 7:tid 140568547739392] 
> [remote 172.25.0.1:30896]     GIT_REVISION = 
> subprocess.check_output(['git', 'rev-parse', '--short', 'HEAD'], 
> cwd=DJANGO_ROOT).rstrip()
> [Thu Nov 02 22:37:31.735087 2017] [:error] [pid 7:tid 140568547739392] 
> [remote 172.25.0.1:30896]   File "/usr/lib/python2.7/subprocess.py", line 
> 566, in check_output
> [Thu Nov 02 22:37:31.735638 2017] [:error] [pid 7:tid 140568547739392] 
> [remote 172.25.0.1:30896]     process = Popen(stdout=PIPE, *popenargs, 
> **kwargs)
> [Thu Nov 02 22:37:31.735673 2017] [:error] [pid 7:tid 140568547739392] 
> [remote 172.25.0.1:30896]   File "/usr/lib/python2.7/subprocess.py", line 
> 710, in __init__
> [Thu Nov 02 22:37:31.735710 2017] [:error] [pid 7:tid 140568547739392] 
> [remote 172.25.0.1:30896]     errread, errwrite)
> [Thu Nov 02 22:37:31.735722 2017] [:error] [pid 7:tid 140568547739392] 
> [remote 172.25.0.1:30896]   File "/usr/lib/python2.7/subprocess.py", line 
> 1327, in _execute_child
> [Thu Nov 02 22:37:31.735739 2017] [:error] [pid 7:tid 140568547739392] 
> [remote 172.25.0.1:30896]     raise child_exception
> [Thu Nov 02 22:37:31.735764 2017] [:error] [pid 7:tid 140568547739392] 
> [remote 172.25.0.1:30896] OSError: [Errno 2] No such file or directory
>
>
> Any and all suggestions for how to move forward at this time are most 
> welcome!
>
>
>
> -- 
> 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 modwsgi+u...@googlegroups.com <javascript:>.
> To post to this group, send email to mod...@googlegroups.com <javascript:>
> .
> Visit this group at https://groups.google.com/group/modwsgi.
> For more options, visit https://groups.google.com/d/optout.
>
>
>

-- 
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 modwsgi+unsubscr...@googlegroups.com.
To post to this group, send email to modwsgi@googlegroups.com.
Visit this group at https://groups.google.com/group/modwsgi.
For more options, visit https://groups.google.com/d/optout.

Reply via email to