Руками надо поставить: python2.7
, virtualenv
, sqlite3
.
Получаем исходный код проекта:
git clone git@github.com:RaD/djbookru.git
Выполняем:
virtualenv --python=python2.7 --system-site-packages env # начиная с версии 1.7
virtualenv --python=python2.7 env # до версии 1.7
PIP_CACHE="~/cache/pip"
mkdir -p ${PIP_CACHE}
alias pipi="pip install --download-cache=${PIP_CACHE}"
alias pipu="pip install -U --download-cache=${PIP_CACHE}"
pipi -r ./reqs/base.txt
pipi -r ./reqs/dev.txt
Скопируйте настройки из src/local_settings.py.dev.template
в local_settings.py
.
Изучите файл src/settings.py
. Необходимые правки выполните в файле src/local_settings.py
, который будет подгружаться при чтении настроек проекта.
Для создания/сброса SQLite базы данных для разработки используйте:
python manage.py reset_staging
Будет создана база данных, загружены тестовые данные, создан суперпользователь с логин/email/пароль - admin/admin@admin.com/admin, также пользователь test/test@test.com/test
При разработке мы пользуемся всей мощью devserver
+ werkzeug
:
python manage.py runserver --werkzeug
Добавляем в local_settings.py:
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
Новое приложение регистрируется так:
python manage.py schemamigration APP_NAME --initial
python manage.py migrate APP_NAME --fake 0001
Если необходимо обновить тестовые (staging) фикстуры, внесите необходимые изменения и сохраните необходимые модели используя команду save_staging
, пример смотрите в документации https://github.com/code-on/django-staging
Тестирование должно проводится перед выполнением передачи набора коммитов в удалённый репозиторий. Тестирование выполняется с помощью запуска одной из следующих команд:
./testing.sh APP_NAME
./testing.sh APP_NAME.CLASS_NAME.METHOD_NAME
Для этого клонируем репозиторий документации https://github.com/Alerion/django_documentation. Собираем её и создаем симлинк в папку static проекта, настройки уже указаны в local_settings.py.dev.template. Пример команды:
ln -s ~/Workspace/django_documentation/_build/html/ ~/Workspace/djbookru/src/static/html
Создание графической модели:
python manage.py graph_models -e -a -g > models.dot
dot -Tsvg models.dot > models.svg
google-chrome models.svg
Создаём продуктивную конфигурацию в файле src/prod_settings.py
.
Синхронизируем проект на продуктив:
./deploy.sh
Создаём окружение:
mkdir -p ~/.local/lib/python2.7/site-packages
easy_install-2.7 --prefix=~/.local virtualenv
easy_install-2.7 --prefix=~/.local pip
export PATH=~/.local/bin/:$PATH
Наполняем окружение:
cd ${PATH_TO_SITE}
virtualenv --python=python2.7 --system-site-packages env # начиная с версии 1.7
virtualenv --python=python2.7 env # до версии 1.7
./env/bin/pip install -r ./reqs/base.txt
Передаём управление сайтом Django:
AddDefaultCharset utf-8
RewriteEngine On
RewriteCond %{REQUEST_URI} !^\/static\/
RewriteCond %{REQUEST_URI} !^\/media\/
RewriteRule ^(.*)$ /webapp/$1 [L,QSA]
Установка поискового движка:
cd ~/tmp
nice -n 19 bash ${PATH_TO_SITE}/addon/xapian_install.sh
rm -rf ./xapian*
cd -
./manage.py rebuild_index
Настройка статики:
cd ${PATH_TO_SITE}
. ./env/bin/activate
python manage.pyc collectstatic
ln -s ~/site1/src/public/static/ ~/www/site1/public_html/static
ln -s ~/site1/src/public/media/ ~/www/site1/public_html/media
Инициализация базы данных:
python manage.pyc syncdb --migrate --noinput
echo "delete from django_content_type;" | python manage.pyc dbshell
echo "delete from auth_permission;" | python manage.pyc dbshell
python manage.pyc dbshell
\. DUMP.sql
Возможно понадобится имитация миграций для зависимостей:
python manage.pyc migrate admin_tools.dashboard --fake
python manage.pyc migrate admin_tools.menu --fake
python manage.pyc migrate easy_thumbnails --fake
Активируем сайт:
cp ${PATH_TO_SITE}/src/wsgi.py ${PATH_TO_WWW}/webapp/webapp.wsgi
Читаем помощь:
$ ./deploy.sh
Usage: deploy.sh [<command> [<command> ...]]
where <command> is:
* pipi -- install packages into virtual environment;
* pipu -- update packages of virtual environment;
* rsync -- send source code to a server;
* po -- compile PO resources;
* migrate -- run migrations on the database;
* static -- collect static files;
* i18n -- update multilanguage fields;
* index -- rebuild search index;
* touch -- restart web server.