Skip to content

Commit

Permalink
update README
Browse files Browse the repository at this point in the history
  • Loading branch information
Alerion committed Apr 6, 2015
1 parent 10beaa3 commit 0f5b2b8
Show file tree
Hide file tree
Showing 5 changed files with 139 additions and 186 deletions.
108 changes: 108 additions & 0 deletions 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 [<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.
203 changes: 27 additions & 176 deletions README.rst
@@ -1,99 +1,71 @@
Требования
==========

.. 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``.

Установка
=========

Получаем исходный код проекта::

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 <https://nose.readthedocs.org/en/latest/>`_.
Он интегрируется в Django, так что запускать тесты стандартной командой ``test``.

Добавить документацию и комментарии к ней
-----------------------------------------
Expand All @@ -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 [<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.
4 changes: 1 addition & 3 deletions 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

Expand Down
9 changes: 3 additions & 6 deletions src/settings.py
Expand Up @@ -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
1 change: 0 additions & 1 deletion testing.sh

This file was deleted.

0 comments on commit 0f5b2b8

Please sign in to comment.