我一直在试图在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
我做错了什么?我发誓,无论谁解决这个问题,我都会亲吻。
答案 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
,为PassengerRoot
,PassengerDefaultRuby
等提供正确的值。< / 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