FreeBSD: Как установить Django с mod_wsgi?

Разделите 15.2.1 “Нижних индекса Массива”, говорит, что массивы могут быть индексом с [exp] (где exp числовое выражение), и это, элементы запускаются в индексе 1 (0, если KSH_ARRAYS установлен).

Разделите 14.3 “Расширений Параметра”, говорит что синтаксис ${#array_name} расширится до числа элементов массива.

Разделите 6.3 “Сложных Команд”, дает синтаксис для числового for цикл (как в C):
for (( initExpr ; testExpr ; stepExpr )) do … done.

Помещение их всех вместе:

for (( i = 1; i <= $#LOCAL_PATH; i++ )) do
    ( # subshell to contain the effect of the chdir
        cd $LOCAL_PATH[i]
        hg pull $REMOTE_PATH[i]
    )
done

Или, если Вы используете KSH_ARRAYS, затем это:

for (( i = 0; i < ${#LOCAL_PATH[@]}; i++ )) do
    ( # subshell to contain the effect of the chdir
        cd ${LOCAL_PATH[i]}
        hg pull ${REMOTE_PATH[i]}
    )
done

Используя KSH_ARRAYS заставляет массивы запуститься с индекса 0, требует использования фигурных скобок для выражений с массивами и интерпретирует $array как $array[0] (требование изменения в выражении длины массива). Изменения синтаксиса, требуемые KSH_ARRAY будет также работать без KSH_ARRAY, но все еще необходимо скорректировать логику для другого индексного диапазона (1 через N по сравнению с 0 через N-1).

2
30.06.2016, 14:23
2 ответа

Хорошо я получил эту работу главным образом со справкой из следующих инструкций: http://code.google.com/p/modwsgi/wiki/InstallationOnFreeBSD

Вот то, что я сделал (как пользователь root):

Переустановите апача

У меня уже было apache22, установленный от двоичного пакета, но по-видимому версия пакета компилируется без поддержки потока, и Вам нужны потоки для mod_wsgi. Таким образом, я сделал: pkg_delete apache-2.2.17_1. Это жаловалось на php в зависимости от апача, таким образом, я сделал: pkg_delete php5-5.3.5. Затем я сделал pkg_delete apache-2.2.17_1 снова, который работал. Затем я сделал cd /usr/ports/www/apache22 затем make config затем я проверил флажок "[X] THREADS Enable threads support in APR" затем make затем make install. Стартовый апач работал, но я добрался, ошибка" [предупреждают] (2) Никакой такой файл или каталог: Отказавший для включения 'httpready' Принимают Фильтр". Я искал онлайн и зафиксировал его путем выполнения kldload accf_http и apachectl restart затем я добавил accf_http_load = "ДА" к моему/boot/loader.conf, таким образом, это изменение сохранится после перезагрузки.

Установка mod_wsgi

cd /usr/ports/www/mod_wsgi3
make
make install

это автоматически изменило мой httpd.conf файл для добавления loadmodule строки

Resinstall php

(не строго необходимый, но так как я должен был деинсталлировать его выше),

cd /usr/ports/lang/php5
make config (and set any options desired)
make
make install

Протестируйте установку mod_wsgi

Следование инструкциям по http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide. Я создал файл, названный test.wsgi со следующим содержанием в моем корне документа:

def application(environ, start_response):
    status = '200 OK'
    output = 'Hello World!'

    response_headers = [('Content-type', 'text/plain'),
                        ('Content-Length', str(len(output)))]
    start_response(status, response_headers)

    return [output]

Я добавил следующую строку в конец своего httpd.conf:

WSGIScriptAlias /myapp /usr/home/myusername/www/wsgitest/test.wsgi

(На моем тестовом поле у меня есть апачская установка с корнем документа в/usr/home/myusername/www). Затем я сделал перезапуск apachectl. Затем я перешел к http://localhost/myapp в своем браузере и вуаля! Я видел "Привет Мир".

Зернышко установки

cd /usr/ports/devel/py-pip
make
make install

Обновленный моя оболочка, таким образом, путь обновил бы.

Установка django

pip install django

(это получило меня django версия 1.3 yay!) для подтверждения установки django

python
import django

Создайте django тестовое приложение

Я создал новую папку для своего теста django mkdir /usr/home/myusername/www/djangotest. Затем

django-admin.py startproject mysite

Создайте django wsgi файл

созданный новый файл/usr/home/myusername/www/djangotest/django.wsgi со следующим содержанием:

import os
import sys
path = '/usr/home/myusername/www/djangotest'
if path not in sys.path:
    sys.path.append(path)
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

Редактирование httpd.conf

WSGIScriptAlias /djangotest /usr/home/myusername/www/djangotest/django.wsgi
apachectl restart

посетите http://locahost/djangotest в браузере.Работает!

Отредактируйте httpd-vhosts.conf (дополнительно)

Теперь получить его работающий частью виртуального хоста. Прокомментируйте строку WSGIScriptAlias в httpd.conf. Затем добавьте что-то как:

<VirtualHost *>
 ServerName mytest.whatever
 DocumentRoot /usr/home/myusername/www/djangotest
 WSGIScriptAlias / /usr/home/myusername/www/djangotest/django.wsgi
</VirtualHost> 

apachectl restart

После конфигурирования файла hosts посетите http://mytest.whatever в браузере.Работает!

0
27.01.2020, 22:24

Вы не должны устанавливать ничего специального для питания с Django. Единственные вещи, в которых Вы нуждаетесь для сервера отладки, который работы:

  • Python
  • Django самостоятельно
  • Модули Python для Вашего DB, если Вы хотите что-то другое, чем SQLite

Вы уже получили Python, таким образом, я предлагаю:

easy_install pip
pip install django

Затем следуйте учебным руководствам Django.
mod_wsgi играет роль при развертывании приложения.

1
27.01.2020, 22:24
  • 1
    Спасибо, в конце, я могу пойти этим путем, и я знаком с django сервером разработки. Однако я надеялся устанавливать апача с mod_wsgi то же, поскольку я использую апача и php при тестировании моих php сайтов. Я хочу, чтобы моя разработка несколько соответствовала развернутой среде. –  User 24.06.2011, 21:22

Теги

Похожие вопросы