Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用chef在一个git存储库中部署两个django项目?_Django_Chef Infra_Gunicorn_Cookbook - Fatal编程技术网

如何使用chef在一个git存储库中部署两个django项目?

如何使用chef在一个git存储库中部署两个django项目?,django,chef-infra,gunicorn,cookbook,Django,Chef Infra,Gunicorn,Cookbook,我有一个git存储库,其中包含两个1.5项目:一个用于网站,另一个用于RESTAPI。git存储库如下所示: api_project/ www_project/ logs/ manage.py my_app_1/ my_app_2/ manage.py文件默认为www\u project.settings。要启动api\u项目,我运行: DJANGO_SETTINGS_MODULE=api_project.settings ./manage.py shell 我想我可以设置3个git存储库,

我有一个git存储库,其中包含两个1.5项目:一个用于网站,另一个用于RESTAPI。git存储库如下所示:

api_project/
www_project/
logs/
manage.py
my_app_1/
my_app_2/
manage.py
文件默认为
www\u project.settings
。要启动
api\u项目
,我运行:

DJANGO_SETTINGS_MODULE=api_project.settings ./manage.py shell
我想我可以设置3个git存储库,一个带有通用应用程序,一个用于api项目,一个用于www项目,使用git子模块等等,但这看起来真的有些过分了。到目前为止,一切顺利

但现在我正尝试使用部署此设置。我希望使用和cookbooks,并使用运行我的django项目,但这些cookbooks似乎意味着一次只部署一个项目

以下是我的厨师食谱在www_项目中的样子:

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_项目添加另一个gunicorn ressource。 有人遇到过类似的问题吗?您是否建议修补我的本地应用程序副本_python cookbook,以便在一个git repo中允许多个项目?或者我应该经历设置3个独立git存储库的痛苦吗?还是其他解决方案


谢谢

您可以将代码分成两个单独的“应用程序”块,因为其中定义的所有资源都是子资源,实际执行是在“应用程序”级别完成的


另一个解决方案是分叉/修补python提供程序django和gunicorn的应用程序,以允许更复杂的行为,例如允许部署多个应用程序。尽管如此多的用户可能并不要求它值得所有的努力和复杂性

过去也面临类似的情况。虽然在这种情况下,每个解决方案都有自己的优缺点,但我建议使用单独的存储库,并为常见内容创建一个可插拔的python包或django应用程序。哦,我希望我能避免那样。谢谢你的反馈。