Passenger could not be initialized because of this error: Option 'agents_dir' missing in file - Rails 4 + Passenger deployment

Passenger could not be initialized because of this error: Option 'agents_dir' missing in file - Rails 4 + Passenger deployment

我一直在用头撞门试图在 Ubuntu 14 + Apache2 + Passenger 上部署 Rails 4 应用程序。我似乎取得了一些进展:passenger 已正确安装了正确的 apache 模块,我的 apache conf 文件已设置,一切都已重新启动,等等。当我访问我的站点时,我得到了我的 Rails 列表应用程序的 public 目录。我调查了日志并发现了以下内容:

Passenger could not be initialized because of this error: Option 'agents_dir' missing in file '/usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini'

我不同所以 post 说了一些关于 mods 可用的东西所以这里是 /etc/apache2/mods-available/passenger.conf:

<IfModule mod_passenger.c> PassengerRoot /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini PassengerDefaultRuby /usr/bin/ruby </IfModule>

/etc/apache2/mods-available/passenger.load

LoadModule passenger_module /usr/lib/apache2/modules/mod_passenger.so

我做错了什么?谁解决了我就亲谁,我发誓。

locations.ini是passenger + ngnix config相关项,不适用于passenger + apache config。

有关如何使用 apache 配置 passenger 的详细信息,请参阅 Phusion Passenger users guide, Apache version

或参阅 Phusion Passenger users guide, Nginx version 使用 nginx 配置 passenger。

如果您要走 passenger + apache 路线,您似乎缺少的关键步骤是 运行 passenger-install-apache2-module,它为 PassengerRoot、[=13 提供了正确的值=],等等

我只是 运行 遇到了这个问题,并通过使用以下命令重新安装 passenger 软件包来修复它:

sudo apt-get install --reinstall passenger passenger-dev

我刚刚在 Ubuntu 14.04 和 运行 上安装了一个新的 Apache/Passenger 安装程序。我已经构建了至少十几次相同的设置。

我的/etc/apache2/mods-enabled/passenger.conf:

### Begin automatically installed Phusion Passenger config snippet ###
<IfModule mod_passenger.c>
  PassengerRoot /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini
  PassengerDefaultRuby /usr/bin/passenger_free_ruby
</IfModule>
### End automatically installed Phusion Passenger config snippet ###

我的/usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini:

[locations]
packaging_method=deb
bin_dir=/usr/bin
support_binaries_dir=/usr/lib/passenger/support-binaries
lib_dir=/usr/lib/passenger
helper_scripts_dir=/usr/share/passenger/helper-scripts
resources_dir=/usr/share/passenger
include_dir=/usr/share/passenger/include
doc_dir=/usr/share/doc/passenger
ruby_libdir=/usr/lib/ruby/vendor_ruby
node_libdir=/usr/share/passenger/node
apache2_module_path=/usr/lib/apache2/modules/mod_passenger.so
ruby_extension_source_dir=/usr/share/passenger/ruby_extension_source
nginx_module_source_dir=/usr/share/passenger/ngx_http_passenger_module

所以,是的,locations.ini 绝对包含 Apache 配置信息......但是这个文件在我所有工作或不工作的机器上都是相同的。

通过 --reinstall 重新安装没有用...所以我 purged 一切。

sudo apt-get purge passenger passenger-dev \ 
                   libapache2-mod-passenger \
                   apache2 apache2-threaded-dev;
sudo apt-get autoremove;
sudo rm -rf /etc/apache2;

然后重新安装:

sudo apt-get install apache2 apache2-threaded-dev \
                     libapache2-mod-passenger;

sudo a2enmod rewrite expires deflate passenger status;
sudo apache2ctl restart;

已验证安装:

sudo passenger-config validate-install;

并确认 Passenger 是 运行:

sudo passenger-memory-stats;

最后,重新启用我的应用程序的 Apache 配置。最后一个 sudo apache2ctl restart 我很高兴 运行!

$ ruby --version
ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux]

$ passenger --version
Phusion Passenger version 5.0.15

如果您在 Ubuntu 14.04

升级 Nginx 和 Passenger 时遇到同样的问题
sudo apt-get purge passenger
sudo apt-get remove nginx (it won't remove your config files)

然后

sudo apt-get install nginx-full passenger