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