1

我正在尝试通过 mod_passenger 访问在 Apache 中运行的几个 Rails 应用程序(Redmine、toto),并在我的 Apache 错误日志中得到以下错误:

[ pid=11154 thr=3076008592 file=ext/apache2/Hooks.cpp:884 time=2012-07-25 17:25:02.921 ]: Unexpected error in mod_passenger: Cannot connect to Unix socket '/tmp/passenger.1.0.10257/generation-0/socket': Permission denied (13)
  Backtrace:
 in 'Passenger::ApplicationPool::Client* Passenger::ApplicationPool::Client::connect(const std::string&, const std::string&, const Passenger::StaticString&)' (Client.h:438)
 in 'Passenger::ApplicationPool::Client* Hooks::getApplicationPool()' (Hooks.cpp:286)
 in 'Passenger::SessionPtr Hooks::getSession(const Passenger::PoolOptions&)' (Hooks.cpp:312)
 in 'int Hooks::handleRequest(request_rec*)' (Hooks.cpp:585)

这是我的 Apache Passenger conf 文件:

$ cat passenger.conf
<IfModule mod_passenger.c>
  PassengerRoot /usr/local/rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.14
  PassengerRuby /usr/local/bin/ruby
  PassengerDefaultUser www-data
</IfModule>
$ cat passenger.load
LoadModule passenger_module /usr/local/rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.14/ext/apache2/mod_passenger.so

我正在运行 Ubuntu 11.04、Apache 2.2.17、Ruby 1.9.1、Rails 3.2.6、Passenger 3.0.14。

知道如何解决这个问题吗?

4

1 回答 1

0

您唯一需要解决的是:

'/tmp/passenger.1.0.10257/generation-0/socket': Permission denied (13)

但是 tmp 通常设置了粘性位,它限制了非所有者可以对文件执行的操作(使用 unix 套接字的一个重要原因是权限分离)。真的一个套接字根本不应该在 /tmp 中。/var 中的某个位置是更明智的位置。

是的,您对 /tmp 的权限是错误的,因此您会遇到其他奇怪的事情。

于 2012-07-25T22:47:54.593 回答