由于此错误,无法初始化Passenger:文件中缺少选项'agents_dir' - Rails 4 + Passenger deployment

时间:2015-03-13 01:20:36

标签: ruby-on-rails apache ruby-on-rails-4 deployment passenger

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

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

我不同的SO帖子说了一些关于mods-available的东西,所以这里是/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

我做错了什么?我发誓,无论谁解决这个问题,我都会亲吻。

4 个答案:

答案 0 :(得分:4)

我遇到了这个问题并通过使用以下命令重新安装passenger包修复了它:

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

答案 1 :(得分:4)

如果您在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

答案 2 :(得分:2)

locations.ini是乘客+ ngnix配置相关项,不适用于乘客+ apache配置。

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

或者请参阅Phusion Passenger users guide, Nginx version,了解如何使用nginx配置乘客。

如果您要乘坐+ + apache路线,您似乎缺少的关键步骤是运行passenger-install-apache2-module,为PassengerRootPassengerDefaultRuby等提供正确的值。< / p>

答案 3 :(得分:0)

我刚刚在Ubuntu 14.04上安装了一个新的Apache / Passenger设置并遇到了这个问题。我已经建立了相同的设置至少十几次。

我的 given().auth().basic(ACCSID,AUTHTOKEN).when().put(advUri+ADID+"ThirdPartyServableAdCreativeHeight=600").then().statusCode(200) given().auth().basic(ACCSID,AUTHTOKEN).when().put(advUri+ADID+"ThirdPartyServableAdCreativeWidth=600").then().statusCode(200);

/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.ini绝对包含Apache配置信息......但是这个文件在我所有工作的机器上都是相同的。

通过[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 重新安装没有工作......所以我--reinstall了所有内容。

purge

然后重新安装:

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;

然后,最后,重新启用我的应用程序的Apache配置。最近一次sudo passenger-memory-stats; ,我很开心!

sudo apache2ctl restart