diff --git a/DEPLOY.rst b/DEPLOY.rst new file mode 100644 index 0000000..00aa57a --- /dev/null +++ b/DEPLOY.rst @@ -0,0 +1,108 @@ +Боевой сервер +============= + +Создаём конфигурацию в файле ``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 + + +Настройка Apache +---------------- + +Передаём управление сайтом 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 [ [ ...]] + + where 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. diff --git a/README.rst b/README.rst index 2726d5c..6236229 100644 --- a/README.rst +++ b/README.rst @@ -1,10 +1,10 @@ -Требования -========== - .. image:: https://badges.gitter.im/Join%20Chat.svg :alt: Join the chat at https://gitter.im/RaD/djbookru :target: https://gitter.im/RaD/djbookru?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge +Требования +========== + Руками надо поставить: ``python2.7``, ``virtualenv``, ``sqlite3``. Установка @@ -12,88 +12,60 @@ Получаем исходный код проекта:: - git clone git@github.com:RaD/djbookru.git + $ 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 + $ cd djbookru + $ virtualenv --python=python2.7 env + $ . env/bin/activate + $ pip install -r reqs/base.txt + $ pip install -r reqs/test.txt Конфигурация проекта -------------------- -Скопируйте настройки из ``src/local_settings.py.dev.template`` в -``local_settings.py``. +Скопируйте настройки ``local_settings.py``:: + + $ cp src/local_settings.py.dev.template src/local_settings.py -Изучите файл ``src/settings.py``. Необходимые правки выполните в файле -``src/local_settings.py``, который будет подгружаться при чтении -настроек проекта. +База данных +----------- -Подготовка базы данных ----------------------- +Создаем базу данных на SQLite:: -Для создания/сброса SQLite базы данных для разработки используйте:: + $ python manage.py migrate - python manage.py reset_staging +Создаем супер-пользователя командо:: -Будет создана база данных, загружены тестовые данные, создан -суперпользователь с логин/email/пароль - admin/admin@admin.com/admin, -также пользователь test/test@test.com/test + $ python manage.py createsuperuser Запуск ------ -При разработке мы пользуемся всей мощью ``devserver`` + ``werkzeug``:: - - python manage.py runserver --werkzeug +Теперь должно работать:: + $ python manage.py runserver -Разработка -========== - -Настройка отправки писем в консоль ----------------------------------- - -Добавляем в local_settings.py:: - - EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' - -Миграции +Makefile -------- -Новое приложение регистрируется так:: +Удаляем все *.pyc файлы:: - python manage.py schemamigration APP_NAME --initial - python manage.py migrate APP_NAME --fake 0001 + $ make clean -Обновление тестовых фикстур ---------------------------- -Если необходимо обновить тестовые (staging) фикстуры, внесите -необходимые изменения и сохраните необходимые модели используя команду -``save_staging``, пример смотрите в документации -https://github.com/code-on/django-staging +Дополнительно +============= Тестирование ------------ -Тестирование должно проводится перед выполнением передачи набора -коммитов в удалённый репозиторий. Тестирование выполняется с помощью -запуска одной из следующих команд:: - - ./testing.sh APP_NAME - ./testing.sh APP_NAME.CLASS_NAME.METHOD_NAME +Для тестирования использутся `nose `_. +Он интегрируется в Django, так что запускать тесты стандартной командой ``test``. Добавить документацию и комментарии к ней ----------------------------------------- @@ -104,124 +76,3 @@ https://github.com/Alerion/django_documentation. Собираем её и 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 - - -Настройка Apache ----------------- - -Передаём управление сайтом 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 [ [ ...]] - - where 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. diff --git a/src/local_settings.py.dev.template b/src/local_settings.py.dev.template index 9c98ab1..0fd26a7 100644 --- a/src/local_settings.py.dev.template +++ b/src/local_settings.py.dev.template @@ -1,8 +1,6 @@ # -*- coding: utf-8 -*- -LOCAL_SETTINGS = True -from settings import * +from settings import REL -SITE_ID = 2 DEBUG = True TEMPLATE_DEBUG = True diff --git a/src/settings.py b/src/settings.py index df9e877..5b12fb2 100644 --- a/src/settings.py +++ b/src/settings.py @@ -374,9 +374,6 @@ def get_doc_pages(path, ext): ] try: - LOCAL_SETTINGS -except NameError: - try: - from local_settings import * - except ImportError: - pass + from local_settings import * +except ImportError: + pass diff --git a/testing.sh b/testing.sh deleted file mode 100755 index d70e75e..0000000 --- a/testing.sh +++ /dev/null @@ -1 +0,0 @@ -python manage.py test $* --settings=src.test_settings -v2