Ruby(Rack)应用程序无法启动错误

时间:2012-05-29 22:33:22

标签: ruby-on-rails ruby apache passenger rack

我在/home/insane-36/.rvm目录中安装了ruby和gem。我安装了乘客gem并在apache mod-available中创建了passenger.load和passenger.conf文件,并为apache启用了mod。这些文件的内容为;

passenger.load

LoadModule passenger_module /home/insane-36/.rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/ext/apache2/mod_passenger.so

passenger.conf

PassengerRoot /home/insane-36/.rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12 PassengerRuby /home/insane-36/.rvm/wrappers/ruby-1.9.3-p194/ruby

然后,我在/ home / insane-36 / www / testing到/ var / www / testing的位置为应用程序创建了一个符号链接。我还创建了一个文件来启用网站;

<VirtualHost *:80>
    ServerAdmin admin@example.com
    ServerName testing
    DocumentRoot /var/www/testing/public/   
    <Directory /var/www/testing/public/>
      Options Indexes +ExecCGI FollowSymLinks 
      Order allow,deny
      Allow from all
    </Directory>
</VirtualHost>

然后启用了该站点并重新启动了服务器,但它给出了错误,说无法启动ruby(机架)应用程序。我一直在网上搜索,找到了一些解决方案,但没有一个对我有用。我认为这是许可问题。我不知道应该设置什么权限。我想这些文件应该可供apache用户使用。并尝试修改权限,但具有相同的错误。详细日志如下;

A source file that the application requires, is missing.
It is possible that you didn't upload your application files correctly. Please check whether all your application files are uploaded.
A required library may not installed. Please install all libraries that this application requires.
Further information about the error may have been written to the application's log file. Please check it in order to analyse the problem.
Error message:
cannot load such file -- rubygems/path_support
Exception class:
LoadError
Application root:
/var/www/testing
Backtrace:
#   File    Line    Location
0   /home/insane-36/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems.rb    395 in `paths'
1   /home/insane-36/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems.rb    416 in `path'
2   /home/insane-36/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb  382 in `dirs'
3   /home/insane-36/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb  267 in `_all'
4   /home/insane-36/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb  410 in `each'
5   /home/insane-36/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb  442 in `find'
6   /home/insane-36/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb  442 in `find_by_path'
7   /home/insane-36/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems.rb    206 in `try_activate'
8   /home/insane-36/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb 59  in `rescue in require'
9   /home/insane-36/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb 35  in `require'
10  /home/insane-36/.rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/lib/phusion_passenger/utils.rb  241 in `prepare_app_process'
11  /home/insane-36/.rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/lib/phusion_passenger/rack/application_spawner.rb   156 in `block in initialize_server'
12  /home/insane-36/.rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/lib/phusion_passenger/utils.rb  572 in `report_app_init_status'
13  /home/insane-36/.rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/lib/phusion_passenger/rack/application_spawner.rb   154 in `initialize_server'
14  /home/insane-36/.rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/lib/phusion_passenger/abstract_server.rb    204 in `start_synchronously'
15  /home/insane-36/.rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/lib/phusion_passenger/abstract_server.rb    180 in `start'
16  /home/insane-36/.rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/lib/phusion_passenger/rack/application_spawner.rb   129 in `start'
17  /home/insane-36/.rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/lib/phusion_passenger/spawn_manager.rb  253 in `block (2 levels) in spawn_rack_application'
18  /home/insane-36/.rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/lib/phusion_passenger/abstract_server_collection.rb 132 in `lookup_or_add'
19  /home/insane-36/.rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/lib/phusion_passenger/spawn_manager.rb  246 in `block in spawn_rack_application'
20  /home/insane-36/.rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/lib/phusion_passenger/abstract_server_collection.rb 82  in `block in synchronize'
21      prelude>    10:in `synchronize'
22  /home/insane-36/.rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/lib/phusion_passenger/abstract_server_collection.rb 79  in `synchronize'
23  /home/insane-36/.rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/lib/phusion_passenger/spawn_manager.rb  244 in `spawn_rack_application'
24  /home/insane-36/.rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/lib/phusion_passenger/spawn_manager.rb  137 in `spawn_application'
25  /home/insane-36/.rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/lib/phusion_passenger/spawn_manager.rb  275 in `handle_spawn_application'
26  /home/insane-36/.rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/lib/phusion_passenger/abstract_server.rb    357 in `server_main_loop'
27  /home/insane-36/.rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/lib/phusion_passenger/abstract_server.rb    206 in `start_synchronously'
28  /home/insane-36/.rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/helper-scripts/passenger-spawn-server   99  in `'

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

这是我在本地部署应用程序的方式。

sudo gem install passenger
sudo apt-get install apache2-dev libapr1-dev libaprutil1-dev
sudo passenger-install-apache2-module

<强> /etc/apache2/mods-available/passenger.load

LoadModule passenger_module /home/insane-36/.rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12/ext/apache2/mod_passenger.so

<强> /etc/apache2/mods-available/passenger.conf

PassengerRoot /home/insane-36/.rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.12 
PassengerRuby /home/insane-36/.rvm/wrappers/ruby-1.9.3-p194/ruby

现在,启用mod-passenger for apache as;

> sudo a2enmod passenger

在/ home / insane-36 / www /

中创建了一个rails应用程序

rails新测试-T -D mysql

在/ var / www /文件夹中为应用程序创建一个符号链接作为;

  

ln -s / home / insane-36 / www / testing / var / www / testing

在/ etc / apache2 / sites-available / testing

中创建了一个文件
<VirtualHost *:80>
        ServerAdmin admin@example.com
        ServerName testing
        DocumentRoot /var/www/testing/public/   
    <Directory /var/www/testing/public/>
     Options Indexes +ExecCGI FollowSymLinks 
         Order allow,deny
         Allow from all
    </Directory>
</VirtualHost>

使用

启用网站
  

sudo a2ensite testing

添加了为/ etc / apache2 / sites-available / testthe site选择的ServerName和创建文件到/ etc / hosts文件;

  

测试127.0.0.1

注意: 请务必将权限755启用到当前用户目录。

  

chmod 755 / home / insane-36

    bundle exec rake assets:precompile to compile your assets periodically. 

我这里仍有问题。我设法使应用程序工作。但是,每次我对应用程序进行更改时,我都需要重新加载服务器。有没有办法解决这个问题,以便服务器自动跟踪正在更改的文件,然后重新加载服务器或组合更改。

有些说明建议如果我添加空文件tmp / restart.txt应该可以用于重新启动应用程序并进行更改但不适用于我。

答案 1 :(得分:0)

我认为您需要删除

中与rubygem相关的所有内容
/home/insane-36/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1