我有一个git仓库,有两个Django 1.5个项目:一个用于网站,另一个用于REST API。 Git仓库看起来是这样的:如何在主厨一个git仓库中部署两个django项目?
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和application_python食谱,并使用gunicorn运行我的django项目,但这些食谱似乎只能一次部署一个项目。
这里是我的厨师的食谱看起来像在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 cookbook的本地副本,以允许在一个git仓库中的多个项目?或者我应该经历设置3个独立的git存储库的痛苦吗?或者其他解决方案?
谢谢!
过去面临类似的情况。虽然这种情况下的每个解决方案都有其优点和缺点,但我推荐的方法是拥有单独的存储库并为常见的东西创建可插入的python包或django-app。 – Amyth 2013-03-25 11:16:22
好吧,所以你推荐“3个git仓库”路线。哦,我希望我能避免这种情况。感谢您的反馈意见。 – MiniQuark 2013-03-25 11:19:10