Развертывание под Ubuntu - LernaProject/Lerna GitHub Wiki

Данная инструкция поможет настроить Lerna под Ubuntu. Была получена путем конспектирования своих действий под Ubuntu 15.10 x32, но и на других системах алгоритм не должен сильно отличаться.

Устанавливаем все необходимое

Прежде всего рекомендуется обновить всю систему:

sudo apt-get update
sudo apt-get upgrade

Сначала скачиваем менеджер пакетов Python и обновляем его до последней версии:

sudo apt-get install python3-pip
sudo easy_install3 -U pip

Затем ставим качаться все остальное:

sudo apt-get install postgresql-server-dev-9.4 postgresql-9.4 git mercurial screen graphviz

Пока все это грузится, открываем второй терминал и ставим питоньи пакеты (этой же командой можно обновлять установленные пакеты или докачивать недостающие):

sudo pip3 install -r requirements.txt --upgrade

Немного о том, что же все это такое:

  • python3-pip (Required) — Менеджер пакетов Python 3. Автоматически стянет и сам интерпретатор, если тот почему-то не установлен.
  • postgresql-server-dev-9.4 & postgresql-9.4 (Required) — СУБД PostgreSQL. Подойдет также версия 9.3.
  • git (Required) — Распределенная система управления версиями Git.
  • mercurial — Распределенная система управления версиями Mercurial. Некоторые репозитории проекта работают под ней.
  • screen — Программа для создания виртуальных терминалов и переключения между ними. На production'е проект запускается через screen, так что может оказаться полезным иметь его у себя.
  • graphviz — Построитель графов.
  • Django (Required) — Web framework, используемый сайтом.
  • PyYAML (Required) — Библиотека для работы с данными в формате YAML.
  • Pygments (Required) — Библиотека подсветки исходного кода. Помимо того, что она требуется на сайте (подсветка кодов попыток), ее установка даст удобную утилиту командной строки pygmentize.
  • psycopg2 (Required) — Привязка PostgreSQL к Python.
  • pytz (Required) — Библиотека часовых поясов.
  • django-ajax-selects (Required) — Написанный на JavaScript модуль автодополнения. Используется в админке.
  • django-debug-toolbar — Отладчик и профайлер. Незаменимая в разработке вещь.
  • bpython — Альтернативный фронтенд интерпретатора. Думаю, очевидно, что стандартный совершенно не приспособлен для написания кода (попробуйте запустить python3 и написать функцию в десяток строк). Этот поддерживает подсветку кода, автодополнение, вывод документации набираемой функции, откат и еще кучу всего, о чем можно прочитать на официальном сайте.
  • pgcli — Аналогично, обертка над psql. В ней работать с базой данных гораздо удобнее.

Выбираем редактор

Вам потребуется текстовый редактор или IDE. Их существует великое множество: обзор на официальном сайте, опрос на Хабрахабре — каждый может выбрать что-нибудь на свой вкус. Лично мне нравится Sublime Text 3.

Скачиваем проект

По желанию можно настроить соединение с Гитхабом по SSH, тогда не придется каждый раз вводить логин-пароль.

HTTPS:

git clone https://github.com/SoVictor/Lerna

SSH:

git clone [email protected]:SoVictor/Lerna

Кроме того, можно скачать Вики (одну из страниц которой вы сейчас читаете). Это самый обыкновенный git-репозиторий SoVictor/Lerna.wiki.

Настраиваем проект

Копируем lerna/local_settings.py.template в lerna/local_settings.py и редактируем его. Он достаточно подробно прокомментирован.

Скачиваем еще немного сторонних библиотек:

./manage.py fetchstatic

Далее принимаемся за базу данных. Здесь возможны два варианта:

  1. У вас уже есть БД от проекта Olympic:

    Это рекомендуемый метод. Сначала стягиваем последние изменения:

    pushd ~/olympic.tusur/trunk
    hg pull -u
    rake db:migrate
    popd
    

    Убеждаемся, что в lerna/local_settings.py прописаны правильные реквизиты базы данных. Выполняем следующую команду:

    ./manage.py migrate --fake-initial
    

    Она создаст и заполнит все необходимые для Django таблицы. Приятный бонус в том, что Olympic может продолжать работать с вашей базой данных, ни о чем не подозревая.

  2. У вас нет никакой БД:

    Значит, надо ее создать:

    pgcli -hlocalhost -Upostgres # Или psql, если вы решили не устанавливать pgcli.
    
    ALTER USER postgres PASSWORD 'postgres'; # Пароль суперпользователя СУБД лучше поменять.
    CREATE USER hydra PASSWORD 'hydra';
    CREATE DATABASE lerna OWNER hydra;
    [Ctrl+D]
    

    Название БД, имя пользователя и пароль можно задать любые, главное — прописать их в lerna/local_settings.py в словаре DATABASES.

    А теперь заполняем схему данных:

    ./manage.py migrate
    

    Теперь у нас есть полностью рабочая база данных. Правда, она совершенно пустая.

Создаем администратора сайта:

./manage.py createsuperuser

Готово!

Наконец, можно поднять тестовый сервер и насладиться результатом усилий:

./manage.py runserver

По умолчанию сайт доступен по адресу localhost:8000, но порт можно поменять, передав его параметром (т. е., например, ./manage.py runserver 3001).