2013-03-25 5 views
0

У меня есть git-хранилище с двумя Django 1.5 проекта: один для сайта, другой для REST api. Репозиторий выглядит следующим образом:Как развернуть два проекта django в одном хранилище git с шеф-поваром?

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

The manage.py файл по умолчанию www_project.settings. Для запуска api_project, я бегу:

DJANGO_SETTINGS_MODULE=api_project.settings ./manage.py shell 

Я предполагаю, что может настроить 3 GIT репозиториев, один с общими приложениями, один для проекта апи и один для проекта WWW, используя Git подмодулей и все, но это действительно похоже overkill. До сих пор все работало нормально.

Но теперь я пытаюсь развернуть эту установку, используя Chef. Я хотел бы использовать кулинарные книгии запускать проекты 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 

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

Спасибо!

+1

Столкнулся с аналогичным сценарием в прошлом. Хотя каждое решение в этом случае имеет свои плюсы и минусы, я бы рекомендовал иметь отдельные репозитории и создавать подключаемый пакет python или django-app для обычных вещей. – Amyth

+0

Итак, вы рекомендуете маршрут «3 git repositories». Ну, я надеялся, что смогу этого избежать. Спасибо за ваш отзыв. – MiniQuark

ответ

0

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

Другим решением было бы использовать fork/patch для поставщиков приложений-пишущих приложений django и gunicorn для более сложного поведения, например, для развертывания более одного приложения. Хотя, по-видимому, не так много пользователей заслуживают всяческих усилий и сложности.