Настройка Python Path в Windows XAMPP с использованием WSGI - PullRequest
2 голосов
/ 08 октября 2010

Я устанавливаю рабочую версию живого сервера в Webfaction, запускаю приложения Django в виртуальной серверной среде Apache (работающей без ошибок) на моей локальной машине - XP, запускаю XAMPP Lite с Python 2.6 - что я могу фиксировать изменения через Git.

XAMPP работает и работает нормально с Python, и сервер отлично запускается с загруженным модулем WSGI. Проблема в том, что когда я устанавливаю свои пути Python, они задаются наполовину в формате 'nix (с /) и наполовину в Windows (с обратной косой чертой).

Вот ошибка Apache на локальной машине, показывающая поврежденные пути python:

[Fri Oct 08 14:52:53 2010] [error] [client 127.0.0.1] mod_wsgi (pid=1436): Exception occurred processing WSGI script 'C:/SERVER/Python26/Lib/site-packages/website-cms/webapps/django/dev.wsgi'.
[Fri Oct 08 14:52:53 2010] [error] [client 127.0.0.1] Traceback (most recent call last):
[Fri Oct 08 14:52:53 2010] [error] [client 127.0.0.1]   File "C:/SERVER/Python26/Lib/site-packages/website-cms/webapps/django/lib/python2.5\\django\\core\\handlers\\wsgi.py", line 230, in __call__
[Fri Oct 08 14:52:53 2010] [error] [client 127.0.0.1]     self.load_middleware()
[Fri Oct 08 14:52:53 2010] [error] [client 127.0.0.1]   File "C:/SERVER/Python26/Lib/site-packages/website-cms/webapps/django/lib/python2.5\\django\\core\\handlers\\base.py", line 42, in load_middleware
[Fri Oct 08 14:52:53 2010] [error] [client 127.0.0.1]     raise exceptions.ImproperlyConfigured('Error importing middleware %s: "%s"' % (mw_module, e))
[Fri Oct 08 14:52:53 2010] [error] [client 127.0.0.1] ImproperlyConfigured: Error importing middleware cms.middleware.multilingual: "No module named cms.middleware.multilingual"

И содержимое файла .wsgi:

import os, sys

sys.path.append('C:/SERVER/Python26/')
sys.path.append('C:/SERVER/Python26/Lib/site-packages/website-cms/webapps/django')
sys.path.append('C:/SERVER/Python26/Lib/site-packages/website-cms/webapps/django/lib/python2.5')

from django.core.handlers.wsgi import WSGIHandler

#Add the path to Django itself
os.environ['DJANGO_SETTINGS_MODULE'] = 'website.settings'
application = WSGIHandler()

Apache httpd.conf является значением по умолчанию для XAMPP (а не виртуальным экземпляром), для загрузки модуля wsgi добавлено следующее

LoadModule wsgi_module modules/mod_wsgi-win32-ap22py26-3.3.so

&, чтобы указать на файл wsgi:

WSGIScriptAlias / C:/SERVER/Python26/Lib/site-packages/website-cms/webapps/django/dev.wsgi

Я знаю, что сервер XAMPP использует Python2.6 (я вынужден использовать TortoiseGIT), и производство идет на 2.5 (поддерживается веб-хостингом), но это не похоже на виновника - я бы по-прежнему ожидайте, что сможете установить правильный путь, по крайней мере!

Приветствуются все предложения по созданию пути Python для игры в мяч!

Ответы [ 2 ]

9 голосов
/ 29 ноября 2010

На моем ПК установлен Python 2.6, поэтому я буду использовать всю конфигурацию в предположении, что Python 2.6 является целевой версией.

  1. Загрузить новейший xampp (http://www.apachefriends.org/en/xampp-windows.html), по состоянию на ноябрь29, 2010, версия 1.7.3 является самой новой.
  2. Установите xampp для Windows, я установил его c: \ xampp
  3. Загрузите и установите Python 2.6 (http://www.python.org/download/releases/2.6/)
  4. Загрузите wsgi для windows - http://code.google.com/p/modwsgi/wiki/DownloadTheSoftware?tm=2 При необходимости обратитесь к документации - http://code.google.com/p/modwsgi/wiki/InstallationOnWindows
  5. Скопируйте файл so в каталог модулей C: \ xampp \ apache \ modules ,не забудьте переименовать его в mod_wsgi.so
  6. Добавьте следующую строку в C: \ xampp \ apache \ conf \ httpd.conf
    • LoadModule wsgi_modulemodules / mod_wsgi.so
  7. Перезапустить Apache, используя C: \ xampp \ xampp-control.exe

Для тестированияЯ сделал следующие шаги:

  1. Создайте каталог C: \ xampp \ htdocs \ wsgi \ scripts и скопируйте тестовый test.wsgi.

Test.wsgi являетсяс следует

1046 * Make C: \ xampp \ apache \ conf \ other \ wsgi.conf со следующим содержимым

Это код

<Directory "C:/xampp/htdocs/wsgi/scripts">
  Options ExecCGI Indexes
  AddHandler cgi-script .cgi
  AddHandler wsgi-script .wsgi  
  Order allow,deny
  Allow from all
</Directory>
Alias /wsgi/ "C:/xampp/htdocs/wsgi/scripts/"
<IfModule wsgi_module>
  WSGIScriptAlias /test "C:/xampp/htdocs/wsgi/scripts/test.wsgi"
</IfModule>
Добавьте эту строку в httpd.conf Включите "conf / other / wsgi.conf" Перезапустите apache. Вы увидите информацию wsgi, когда вывведите «localhost / test» или «localost / wsgi / test.wsgi» в веб-браузере.
1 голос
/ 06 декабря 2011

У меня также была «ошибка сервера», и я увидел файл Apache error.log: это произошло из-за некоторого пробела или разрыва строки, сопровождаемого строкой комментария «Его основное назначение - ...»

...