我有一个带有两个Django 1.5 项目的 git 存储库:一个用于网站,另一个用于 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和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
我只想知道如何为 api_project 添加另一个 gunicorn 资源。有没有人遇到过类似的问题?您是否建议修补我的 application_python 食谱的本地副本以允许多个项目在一个 git 存储库中?或者我应该经历建立 3 个独立的 git 存储库的痛苦吗?或者任何其他解决方案?
谢谢!