Я пытаюсь настроить Django на внутреннем сервере компании. (Нет внешнего подключения к Интернету.)
При просмотре документации по настройке сервера выясняется, что метод " Запуск Django на провайдере общего хостинга с Apache ", скорее всего, сработает в этой ситуации.
Вот информация о сервере:
- Не удается установить
mod_python
- без root-доступа
- Сервер SunOs 5.6
- Python 2.5
- Apache / 2.0.46
- Я установил Django (и flup ), используя опцию префикса - (читая еще раз, я, вероятно, должен был использовать --home, но на данный момент это не так) кажется не имеет значения)
Я добавил файл .htaccess
и mysite.fcgi
в мой корневой веб-каталог, как упоминалось здесь .
Когда я запускаю сценарий mysite.fcgi с сервера, я получаю ожидаемый результат (правильный вывод HTML сайта). Но при попытке доступа к нему через браузер этого не произойдет.
Возможно, проблема в настройке PYTHONPATH
, так как я использую опцию префикса.
Я заметил, что если я запускаю mysite.fcgi
из командной строки без установки переменной окружения PYTHONPATH
, выдается следующая ошибка:
prompt$ python2.5 mysite.fcgi
ERROR:
No module named flup Unable to load
the flup package. In order to run
django as a FastCGI application, you
will need to get flup from
http://www.saddi.com/software/flup/
If you've already installed flup,
then make sure you have it in your
PYTHONPATH.
Я добавил sys.path.append (prefixpath) и os.environ ['PYTHONPATH'] = prefixpath в mysite.fcgi
, но если я установлю переменную enviornment чтобы быть пустым в командной строке, затем запустите mysite.fcgi
, я все еще получаю вышеуказанную ошибку.
Вот некоторые результаты командной строки:
>>> os.environ['PYTHONPATH'] = 'Null'
>>>
>>> os.system('echo $PYTHONPATH')
Null
>>> os.environ['PYTHONPATH'] = '/prefix/path'
>>>
>>> os.system('echo $PYTHONPATH')
/prefix/path
>>> exit()
prompt$ echo $PYTHONPATH
Null
Похоже, что Python устанавливает переменную ОК, но переменная применима только внутри скрипта. Похоже, что Flup распространяется в виде файла .egg, и я предполагаю, что реализация egg не учитывает переменные, добавленные os.environ['key'] = value
(?), По крайней мере, при установке через параметр --prefix
.
Я не очень знаком с файлами .pth, но кажется, что файл easy-install.pth указывает на переменную:
import sys; sys.__plen = len(sys.path)
./setuptools-0.6c6-py2.5.egg
./flup-1.0.1-py2.5.egg
import sys; new=sys.path[sys.__plen:]; del sys.path[sys.__plen:]; p=getattr(sys,'__egginsert',0); sy
s.path[p:p]=new; sys.__egginsert = p+len(new)
Похоже, что он делает что-то необычное, во всяком случае, чтобы отредактировать это или добавить что-то в мой код, чтобы он нашел ошибку?