Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 阿帕奇乘客可以';t启动我的生产rails应用程序_Ruby On Rails_Ruby_Apache_Passenger - Fatal编程技术网

Ruby on rails 阿帕奇乘客可以';t启动我的生产rails应用程序

Ruby on rails 阿帕奇乘客可以';t启动我的生产rails应用程序,ruby-on-rails,ruby,apache,passenger,Ruby On Rails,Ruby,Apache,Passenger,我是部署rails应用程序的新手,我在许多网站上看到,Apache/Passenger组合是最简单的组合之一;但是,我遇到乘客不想启动我的应用程序,并且在输入sudo tail-50/var/log/apache2/error.log时显示以下错误消息 命令: 我怀疑这与我的ruby安装有关,我使用了rbenv并获得了2.2.3版本,但在错误消息中,它链接到了我从未安装过的2.0.0版本。 我还怀疑这与我使用另一个指南中的两个命令有关: sudo rm /usr/bin/ruby sudo

我是部署rails应用程序的新手,我在许多网站上看到,Apache/Passenger组合是最简单的组合之一;但是,我遇到乘客不想启动我的应用程序,并且在输入sudo tail-50/var/log/apache2/error.log时显示以下错误消息 命令:

我怀疑这与我的ruby安装有关,我使用了rbenv并获得了2.2.3版本,但在错误消息中,它链接到了我从未安装过的2.0.0版本。 我还怀疑这与我使用另一个指南中的两个命令有关:

 sudo rm /usr/bin/ruby
 sudo ln -s /usr/local/bin/ruby /usr/bin/ruby

如果有人知道如何解决这个头痛的问题,我会非常感激


谢谢

您可能需要在
httpd.conf
文件中指定正确的
PassengerDefaultRuby

我的建议是使用他们的官方指南完成乘客的安装:


在@dimakura和@CamdenNarzt留下一些线索后,我分两个阶段解决了这个问题

  • 由于我怀疑Passenger使用了错误的ruby版本,为了解决这个问题,我修改了/etc/apache2/mods available/下的Passenger.conf文件,并使用哪个ruby命令的输出:
  • 添加了行(替换为您自己的哪个ruby输出)

  • 重新启动的apache收到一条“从应用程序收到的响应不完整”错误消息,检查日志并注意到正在使用正确版本的ruby,但收到一条错误消息:

    缺少“生产”环境的密钥令牌和密钥库,请在config/secrets.yml中设置这些值

  • 按照此站点上的说明安装Figaro gem:然后使用以下命令生成密钥:

    rake secret
    
    复制输出并打开config/application.yml文件,我在其中输入:

    SECRET_KEY_BASE: [output key from rake secret command]
    

    重新启动Apache,它成功了

    您是否安装了bundler?@CamdenNarzt是的,安装完成了,出现了相同的错误消息。那么dimakura可能走上了正确的道路,您需要将
    PassengerDefaultRuby
    设置为rbenv中ruby垫片的路径,该路径可能位于
    ~/.rbenv/shimmes/ruby
    @CamdenNarzt将PassengerDefaultRuby更改为passer.conf文件中的路径,该路径确实将我的错误消息中的ruby版本更改为现在的2.2.3;然而,我现在在浏览器中收到一条“从应用程序收到的不完整响应”消息,在我看到的日志中:(缺少
    secret\u token
    secret\u key\u base
    对于“生产”环境,在
    config/secrets.yml
    中设置这些值)我想我已经接近解决这个问题了(希望如此)现在只需在/etc/apache2/envvarsThanks中为线索@dimakura设置变量,我浏览了指南中的项目,安装了一些我认为缺少的依赖项,但仍然有完全相同的错误=/apache2在ubuntu 14.04上不再使用httpd.conf,我会在apache2.conf中添加PassengerDefaultRuby吗?不要编辑PassengerDefaultRuby。改为编辑Passengeruby。请看我对@Zero的评论。不要这样做!您应该自定义,而不是。将PassengerDefaultRuby保留为其原始值。阅读文档了解Passengeruby和PassengerDefaultRuby之间的区别。感谢@Hongli,我添加了一个Passengeruby行,并将PassengerDefaultRuby保留为其原始值。我认为每次有人打开服务器的shell登录时更改
    secret\u key\u base
    不是一个好主意,而且,我认为在同一台服务器上的任何应用程序共享
    secret\u key\u base
    都不是一个好主意。如果创建文件
    config/secrets.yml
    并在文件中设置值,则效果更好。还请记住不要将文件提交到存储库。使用可以在项目根目录中的
    .rbenv vars
    中存储环境变量:
    echo“SECRET\u KEY\u BASE=`rake SECRET`>/path/to/project/root/.rbenv vars
    然后使用
    ENV['SECRET\u KEY\u BASE]将其拉入配置中
    。您必须编辑
    /etc/profile.d/st_env.sh
    文件并删除您添加的内容。然后将其移动到
    .rbenv vars
    。然后用费加罗把车拉进来。
    rake secret
    
    SECRET_KEY_BASE: [output key from rake secret command]