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.