Tuesday, May 31, 2011

An error occured during integration mod_wsgi to django

Django + Apache 이용 설정하면서 기존에 Django 에서 제공되는 테스트 웹서버로 테스트 하던 소스가 제대로 돌아가지 않음을 발견. 에러 로그는 아래와 같다.



[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] mod_wsgi (pid=549): Exception occurred processing WSGI script '/Users/heedaepoem/Documents/NoticeTmp/eee.wsgi'.
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] Traceback (most recent call last):
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] File "/Library/Python/2.6/site-packages/django/core/handlers/wsgi.py", line 250, in __call__
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] self.load_middleware()
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] File "/Library/Python/2.6/site-packages/django/core/handlers/base.py", line 45, in load_middleware
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] mod = import_module(mw_module)
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] File "/Library/Python/2.6/site-packages/django/utils/importlib.py", line 35, in import_module
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] __import__(name)
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] File "/Library/Python/2.6/site-packages/django/middleware/transaction.py", line 1, in
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] from django.db import transaction
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] File "/Library/Python/2.6/site-packages/django/db/__init__.py", line 78, in
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] connection = connections[DEFAULT_DB_ALIAS]
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] File "/Library/Python/2.6/site-packages/django/db/utils.py", line 93, in __getitem__
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] backend = load_backend(db['ENGINE'])
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] File "/Library/Python/2.6/site-packages/django/db/utils.py", line 33, in load_backend
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] return import_module('.base', backend_name)
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] File "/Library/Python/2.6/site-packages/django/utils/importlib.py", line 35, in import_module
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] __import__(name)
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] File "/Library/Python/2.6/site-packages/django/db/backends/mysql/base.py", line 11, in
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] import MySQLdb as Database
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] File "/Library/Python/2.6/site-packages/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.egg/MySQLdb/__init__.py", line 19, in
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] File "/Library/Python/2.6/site-packages/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.egg/_mysql.py", line 7, in
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] File "/Library/Python/2.6/site-packages/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.egg/_mysql.py", line 4, in __bootstrap__
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.py", line 835, in resource_filename
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] self, resource_name
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.py", line 1304, in get_resource_filename
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] self._extract_resource(manager, self._eager_to_zip(name))
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.py", line 1326, in _extract_resource
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] self.egg_name, self._parts(zip_path)
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.py", line 915, in get_cache_path
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] self.extraction_error()
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.py", line 881, in extraction_error
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] raise err
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] ExtractionError: Can't extract file(s) to egg cache
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1]
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] The following error occurred while trying to extract file(s) to the Python egg
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] cache:
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1]
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] [Errno 13] Permission denied: '/Library/WebServer/.python-eggs'
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1]
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] The Python egg cache directory is currently set to:
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1]
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] /Library/WebServer/.python-eggs
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1]
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] Perhaps your account does not have write access to this directory? You can
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] change the cache directory by setting the PYTHON_EGG_CACHE environment
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1] variable to point to an accessible directory.
[Tue May 31 21:57:32 2011] [error] [client 127.0.0.1]

문제해결----------------------------------------------------->

In a nutshell, MySQLdb module 이 connection 시에 egg 파일의 압축을 푸는데 사용되는 디렉토리가 웹서버의 권한으로는 접근 불가인 곳으로 설정되어 있다고 함. 이 디렉토리는 PYTHON_EGG_CACHE 로 설정할 수 있다고 하여 이 디렉토리를 /tmp/ 로 설정함,,

Installation and configuration Django+Apache

https://docs.djangoproject.com/en/1.3/howto/deployment/modwsgi/
http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide

It's easy to use django with apache thanks to the documentation of django and modwsgi!!

About Me

Hostway Korea R&D Center