【问题标题】:Best way to verify that passenger nginx module has been successfully compiled?验证乘客 nginx 模块是否已成功编译的最佳方法?
【发布时间】:2023-04-04 08:25:01
【问题描述】:

我有几台由厨师管理的服务器,每台服务器运行一个堆栈:

  • nginx
  • phusion 乘客

我想让乘客 gem 升级过程自动化,能够有条件地跳过乘客 nginx 模块编译,这意味着我不希望编译过程发生在每次厨师运行时,只在确定它的运行时发生是必要的(通常是因为正在升级乘客 gem 版本,但也有在没有升级乘客 gem 但之前编译失败的情况下)。

目前我检查正在运行的乘客的版本,但在 gem 实际安装到正确版本但编译失败的情况下,幂等性检查过于广泛,我无法在需要时进行编译尝试。

验证passenger nginx模块是否已编译最准确的方法是什么?在稳定的位置是否有我可以检查其存在的特定文件?

现在我的厨师区是这样的:

execute "compile passenger nginx module" do
    ruby_vers = node[:ruby][:global_version]
    passenger_vers = node[:passenger][:version]
    ruby_parent_vers = node[:ruby_parent_vers]
  command "export ORIG_PATH=\"$PATH\"; sudo -s -E; export PATH=\"$ORIG_PATH\"; /usr/bin/ruby /usr/lib/ruby/gems/2.4.0/gems/passenger-#{passenger_vers}/bin/passenger-install-nginx-module --auto --auto-download"
  # check for a difference between passenger version requested and passenger version running
  not_if { `passenger --version` == cur_vers }
end

【问题讨论】:

    标签: nginx chef-infra passenger


    【解决方案1】:

    你试过passenger-config about compiled吗?

    【讨论】:

    • 不,我没有。不知道它的存在!感谢分享。但是,当我尝试 passenger-config about compiledpassenger-config about nginx-dynamic-compiled 时,都没有返回任何内容。
    • 他们只“返回”一个退出代码。 0 表示好/是 non-0 表示不好/否。
    • 啊,好吧,我明白了,是的,我得到了退出代码 0。只需要测试我是否得到了正确的退出代码,因为它实际上没有被编译。谢谢!
    • 最近能够按预期验证这项工作。 passenger-config about compiled 在未编译乘客 nginx 模块时返回退出代码 1。 Chef 的 not_if 方法采用将执行的字符串(或块),如果退出代码为 0,将跳过该步骤,否则如果非零代码将执行该步骤。
    猜你喜欢
    • 2017-02-04
    • 2018-06-24
    • 2018-12-10
    • 2011-03-08
    • 2019-12-19
    • 2012-06-19
    • 2018-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多