【发布时间】:2015-02-21 22:02:51
【问题描述】:
我正在尝试使用 AWS OpsWorks 部署 Django 应用程序。我对任何类型的 DevOps 工作都是全新的,所以我遇到了相当大的困难。
我正在尝试使用this cookbook 来自动化我的部署。我需要Python3.4,所以我修改了cookbook中的一些内容。现在在部署挂钩期间,我收到以下代码的错误:
# install requirements
requirements = Helpers.django_setting(deploy, 'requirements', node)
if requirements
Chef::Log.info("Installing using requirements file: #{requirements}")
pip_cmd = ::File.join(deploy["venv"], 'bin', 'pip')
execute "#{pip_cmd} install --source=#{Dir.tmpdir} -r #{::File.join(deploy[:deploy_to], 'current', requirements)}" do
cwd ::File.join(deploy[:deploy_to], 'current')
user deploy[:user]
group deploy[:group]
environment 'HOME' => ::File.join(deploy[:deploy_to], 'shared')
end
else
Chef::Log.debug("No requirements file found")
end
错误报告:
STDERR: /opt/aws/opsworks/releases/20141216163306_33300020141216163306/vendor/bundle/ruby/2.0.0/gems/mixlib-shellout-1.4.0/lib/mixlib/shellout/unix.rb:147:in `chdir': No such file or directory - /srv/www/django/current (Errno::ENOENT)
我知道这段代码试图从我的 requirements.txt 文件中安装需求,但是 tmp 目录和 current 目录是怎么回事?显然,在我进行部署时没有创建 current 目录。从部署中将代码拉入 OpsWorks 的文件结构通常是什么样的?此外,我该如何解决这个错误?
几天来,我一直在阅读有关 Chef、OpsWorks、KitchenCI、Berksfile 和其他技术的文档,感觉被 DevOps 世界中的一切所淹没。我只想让我的应用程序运行!
编辑
自定义json是:
{
"deploy" : {
"django" : {
"django_settings_template" : null,
"django_settings_file" : "settings.py",
"django_collect_static" : "true",
"python_major_version" : "3.4",
"venv_options" : "--python=$(which python3.4) --no-site-packages",
"custom_type" : "django"
}
}
}
【问题讨论】:
标签: django amazon-web-services deployment chef-infra aws-opsworks