Получение Rails 3 и Passenger для работы на CentOS 5.4 - ошибка Apache - PullRequest
1 голос
/ 09 февраля 2011

Использование Ruby 1.8.7 в CentOS 5.4.Попытка запустить приложение Rails 3 на Passenger.

Я прошел все шаги, но получил эту ошибку в моем лог-файле Apache

Passenger ERROR (ext/common/ApplicationPool/../SpawnManager.h:220):
Could not start the spawn server: /usr/lib/ruby/: Permission denied (13)
[ pid=18207 thr=3086812880 file=ext/apache2/HelperAgent.cpp:354 time=2011-02-09 09:27:18.541 ]: Could not start the spawn server: write() failed: Broken pipe (32)
     in 'Passenger::SpawnManager::SpawnManager(const std::string&, const boost::shared_ptr<Passenger::ServerInstanceDir::Generation>&, const Passenger::AccountsDatabasePtr&, const std::string&, const Passenger::AnalyticsLoggerPtr&, int, const std::string&)' (SpawnManager.h:540)
     in 'Passenger::ApplicationPool::Pool::Pool(const std::string&, const boost::shared_ptr<Passenger::ServerInstanceDir::Generation>&, const Passenger::AccountsDatabasePtr&, const std::string&, const Passenger::AnalyticsLoggerPtr&, int, const std::string&)' (Pool.h:1078)
     in 'Server::Server(Passenger::FileDescriptor, pid_t, const std::string&, bool, const std::string&, const std::string&, const std::string&, const std::string&, unsigned int, unsigned int, unsigned int, unsigned int, const Passenger::VariantMap&)' (HelperAgent.cpp:241)
     in 'int main(int, char**)' (HelperAgent.cpp:344)

[Wed Feb 09 09:27:18 2011] [error]
Passenger could not be initialized because of this error: Unable to start the Phusion Passenger watchdog because it encountered the following error during startup: Unable to start the Phusion Passenger helper agent: it seems to have crashed during startup for an unknown reason, with exit code 1
[Wed Feb 09 09:27:18 2011] [notice] Digest: generating secret for digest authentication ...
[Wed Feb 09 09:27:18 2011] [notice] Digest: done
Passenger ERROR (ext/common/ApplicationPool/../SpawnManager.h:220):
Could not start the spawn server: /usr/lib/ruby/: Permission denied (13)
[ pid=18221 thr=3086513872 file=ext/apache2/HelperAgent.cpp:354 time=2011-02-09 09:27:18.592 ]: Could not start the spawn server: write() failed: Broken pipe (32)
     in 'Passenger::SpawnManager::SpawnManager(const std::string&, const boost::shared_ptr<Passenger::ServerInstanceDir::Generation>&, const Passenger::AccountsDatabasePtr&, const std::string&, const Passenger::AnalyticsLoggerPtr&, int, const std::string&)' (SpawnManager.h:540)
     in 'Passenger::ApplicationPool::Pool::Pool(const std::string&, const boost::shared_ptr<Passenger::ServerInstanceDir::Generation>&, const Passenger::AccountsDatabasePtr&, const std::string&, const Passenger::AnalyticsLoggerPtr&, int, const std::string&)' (Pool.h:1078)
     in 'Server::Server(Passenger::FileDescriptor, pid_t, const std::string&, bool, const std::string&, const std::string&, const std::string&, const std::string&, unsigned int, unsigned int, unsigned int, unsigned int, const Passenger::VariantMap&)' (HelperAgent.cpp:241)
     in 'int main(int, char**)' (HelperAgent.cpp:344)

Не знаю, с чего начать.В доступе к Ruby или моему приложению отказано?

Пассажир в автономном режиме выдает ошибку из-за невозможности загрузить Bundler.

Очень хотелось бы запустить его под Apache2.

1 Ответ

4 голосов
/ 09 февраля 2011

Тиндаля, Похоже, что пользователь, который запускает apache, не имеет прав доступа

Could not start the spawn server: /usr/lib/ruby/: Permission denied (13)

попробуйте su пользователю, который запускает apache, и попробуйте запустить ruby ​​или получить доступ к папке / usr / lib / ruby ​​

Редактировать

Попробуйте эти шаги, чтобы проверить, есть ли у apache разрешения.

  • Войти на сервер Unix
  • [если вы не root) станьте пользователем root, запустив sudo su -
  • проверить, какой пользователь запускает apache, пока работает ps -ef | grep -i apache (в первом столбце должно отображаться имя пользователя)
  • теперь стал apache, запустив su apache - (если apache - имя пользователя)
  • теперь запускается cd / usr и ls ( cd проверяет разрешение на выполнение для папки и ls для разрешения на чтение)
  • сделать то же самое, что и предыдущий шаг для / usr / lib . Это необходимо, потому что apache не может получить доступ к одной из папок в пути.
  • как только вы войдете в / use / lib проверьте наличие двоичного файла ruby, запустив ls -l ruby ​​
  • наконец попробуйте запустить ruby ​​из этой папки с помощью . / Ruby -v (убедитесь, что он возвращает правильную версию)

Если все это работает, пожалуйста, вставьте конфигурацию apache, которую вы используете для пассажира.

Это должно быть что-то вроде

LoadModule passenger_module /usr/local/ruby/lib/ruby/gems/1.9.1/gems/passenger-3.0.2/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/ruby/lib/ruby/gems/1.9.1/gems/passenger-3.0.2
PassengerRuby /usr/local/ruby/bin/ruby
PassengerDefaultUser www-data
...