Как развернуть два проекта django в одном репозитории git с помощью шеф-повара?

У меня есть репозиторий git с двумя проектами Django 1.5: один для веб-сайта, другой для REST API. Git-репозиторий выглядит так:

api_project/
www_project/
logs/
manage.py
my_app_1/
my_app_2/

Файл manage.py по умолчанию имеет значение www_project.settings. Чтобы запустить api_project, я запускаю:

DJANGO_SETTINGS_MODULE=api_project.settings ./manage.py shell

Думаю, я мог бы настроить 3 репозитория git, один с общими приложениями, один для проекта API и один для проекта www, используя подмодули git и все такое, но это действительно кажется излишним. До сих пор все работало нормально.

Но теперь я пытаюсь развернуть эту настройку с помощью Chef. Я хочу использовать приложение и application_python кулинарные книги и запускать мои проекты django с gunicorn, но эти поваренные книги, похоже, предназначены для одновременного развертывания только одного проекта.

Вот как выглядит мой рецепт от шеф-повара для www_project:

application "django_app" do
    path "/var/django"
    owner "django"
    group "django"
    repository "git.example.com:blabla"
    revision "master"
    migrate true
    packages ["libevent-dev", "libpq5" , "git"]
      # libevent-dev for gevent (for gunicorn), libpq5 for postgresql
    environment "DJANGO_SETTINGS_MODULE" => "www_project.settings"
      # for syncdb and migrate

    django do
        local_settings_file "www_project/settings.py"
        settings_template "settings.py.erb"
        purge_before_symlink ["logs"]
        symlinks "logs" => "logs"
        collectstatic true
        database do
            database "blabla"
            engine "postgresql_psycopg2"
            username "django"
            password "super!password"
        end
        database_master_role "blabla_postgresql_master"
        migration_command "/var/django/shared/env/bin/python manage.py" +
           " syncdb --noinput && /var/django/shared/env/bin/python" +
           " manage.py migrate"
    end

    gunicorn do
        app_module "www_project.wsgi:application"
        preload_app true
        worker_class "egg:gunicorn#gevent"
        workers node['cpu']['total'].to_i * 2 + 1
        port 8081
        proc_name "blabla_www"
    end
end

Я просто хотел бы знать, как добавить еще один ресурс пушки для api_project. Кто-нибудь сталкивался с подобной проблемой? Вы бы порекомендовали исправить мою локальную копию поваренной книги application_python, чтобы разрешить несколько проектов в одном репозитории git? Или я должен пройти через боль настройки 3 отдельных репозиториев git? Или любое другое решение?

Спасибо!


person MiniQuark    schedule 25.03.2013    source источник
comment
Сталкивался с подобным сценарием в прошлом. Хотя у каждого решения в этом случае есть свои плюсы и минусы, я бы порекомендовал иметь отдельные репозитории и создать подключаемый пакет Python или приложение django для обычных вещей.   -  person Amyth    schedule 25.03.2013
comment
Итак, вы рекомендуете маршрут с 3 репозиториями git. Ну, я надеялся, что смогу этого избежать. Спасибо за ваш отзыв.   -  person MiniQuark    schedule 25.03.2013


Ответы (1)


Вы можете разделить свой код на два отдельных блока «приложения», так как все ресурсы, определенные внутри, являются подресурсами, а фактическое выполнение выполняется на уровне «приложения».

Другим решением было бы разветвить/исправить провайдеров application_python django и gunicorn, чтобы обеспечить более сложное поведение, например, разрешить развертывание более одного приложения. Хотя это, вероятно, не требуется столь многим пользователям, чтобы заслужить все усилия и сложность.

person Evgeny    schedule 01.04.2013