对资源“执行 [为 apache-tomcat 绑定启用 mod_proxy]”执行操作“运行”时出错

Posted

技术标签:

【中文标题】对资源“执行 [为 apache-tomcat 绑定启用 mod_proxy]”执行操作“运行”时出错【英文标题】:Error executing action `run` on resource 'execute[enable mod_proxy for apache-tomcat binding]' 【发布时间】:2015-01-26 19:04:04 【问题描述】:

我正在使用 this github repo 来了解 Berkshelf 在与 Amazon Opsworks 一起使用时的工作原理。我正在尝试的基本思想是,如果我在 berksfile 中提到 apache2 作为我的 phpapp recipe 的依赖项,那么它将自动管理 apache2 的依赖项,而 apache2 本身就是一个依赖项对于 phpapp。当我使用 AWS opsworks 尝试此操作时,出现以下错误。

   ================================================================================
   Error executing action `run` on resource 'execute[enable mod_proxy for apache-tomcat binding]'
   ================================================================================


Mixlib::ShellOut::ShellCommandFailed
------------------------------------
Expected process to exit with [0], but received '1'
---- Begin output of /usr/sbin/a2enmod proxy ----
STDOUT: 
STDERR: ERROR: Module proxy does not exist!
---- End output of /usr/sbin/a2enmod proxy ----
Ran /usr/sbin/a2enmod proxy returned 1


Resource Declaration:
---------------------
# In /var/lib/aws/opsworks/cache.stage2/cookbooks/opsworks_java/recipes/apache_tomcat_bind.rb

1: execute 'enable mod_proxy for apache-tomcat binding' do
2:   command '/usr/sbin/a2enmod proxy'
3:   not_if do
4:     ::File.symlink?(::File.join(node['apache']['dir'], 'mods-enabled', 'proxy.load')) || node['opsworks_java']['tomcat']['apache_tomcat_bind_mod'] !~ /\Aproxy/
5:   end
6: end
7: 



Compiled Resource:
------------------
# Declared in /var/lib/aws/opsworks/cache.stage2/cookbooks/opsworks_java/recipes/apache_tomcat_bind.rb:1:in `from_file'

execute("enable mod_proxy for apache-tomcat binding") do
action "run"
retries 0
retry_delay 2
command "/usr/sbin/a2enmod proxy"
backup 5
returns 0
cookbook_name "opsworks_java"
recipe_name "apache_tomcat_bind"
not_if  #code block 
end

【问题讨论】:

【参考方案1】:

metadata insted of cookbook "apache2" 添加到您的 Berksfile 中,Berkshelf 会将您的本地食谱添加到本地食谱列表中,并且它是来自 metadata.rb 的依赖项

来自 berkshelf.com:

The metadata keyword is like saying gemspec in Bundler’s Gemfile. It says,
“There is a metadata.rb file within the same relative path of my Berksfile”.
This allows you to resolve a Cookbook’s dependencies that you are currently
working on just like you would resolve the dependencies of a Gem that 
you are currently working on with Bundler.

这里是similar issue。

【讨论】:

嗯,mod_proxy 似乎没有包含在 default_modules 中,您可以将其包含在 include_recipe 'apache2::mod_proxy' 中。顺便说一句,我从您的日志中发现该资源不在您的食谱中,但在某些 ["opsworks-example-cookbooks" repo](github.com/amazonwebservices/opsworks-example-cookbooks/blob/…) 中可能是您​​的实例/运行列表中遗留的? 我也不明白,我需要在哪里进行更改?至于我应该在哪里添加这些行“include_recipe 'apache2::mod_proxy'” include_recipe "apache2" 行下方的配方中,因为默认配方设置 apache2,而 apache2 食谱中的所有其他配方只会在其上添加模块。 但是请检查您的节点运行列表,因为资源 'execute[enable mod_proxy for apache-tomcat binding]' 不在您的食谱中,从哪里包含? 我在上面和下面都试过了,但都没有用。

以上是关于对资源“执行 [为 apache-tomcat 绑定启用 mod_proxy]”执行操作“运行”时出错的主要内容,如果未能解决你的问题,请参考以下文章

5.对静态资源映射的规则

docker对容器进行资源限制

限制对 RESTful 资源的访问

为啥 Chrome 对某些资源使用 Http/1.1 而不是 H2

锁定相互引用的资源对

SpringBoot 对静态资源的映射规则