【问题标题】:Ruby Grape + Passenger + Apache红宝石葡萄 + 乘客 + 阿帕奇
【发布时间】:2015-04-03 08:06:50
【问题描述】:

我正在尝试通过 API 服务器设置

grape
passenger
apache2

我安装了 gem "passenger" 然后跑了

passenger-install-apache2-module

在我的“虚拟主机”配置中放置以下内容

服务器名称 api.website.com

LoadModule passenger_module /var/lib/gems/1.9.1/gems/passenger-5.0.6/buildout/apache2/mod_passenger.so
PassengerRoot /var/lib/gems/1.9.1/gems/passenger-5.0.6
PassengerDefaultRuby /usr/bin/ruby1.9.1
DocumentRoot /var/www/html/lib/api

但是当我重新启动服务器并尝试通过浏览器访问它时,我只看到了文件夹列表。

我需要做些什么不同的事情?

【问题讨论】:

    标签: ruby apache2 passenger grape


    【解决方案1】:

    我想通了。我查看了 Sinatra 的部署方式。我必须将 DocumentRoot 指向一个“公共”文件夹(或其他任何东西)。尽管此文件夹必须存在于我的 config.ru 所在的同一目录中。然后一切都正常了。

    我的文件夹结构是这样的

    /app
       |- apis.rb
       |- config.ru
       \- public
    

    virtualhost.conf

      DocumentRoot ...../app/public
    

    我的解决方案似乎有效。虽然会喜欢一些解释:) 有人对此有任何见解吗?

    谢谢!

    【讨论】:

      【解决方案2】:

      您必须将Passenger 指向public 目录,因为这允许它首先从该目录提供静态文件,如果没有找到文件,则请求应用程序处理请求。这为提供静态文件和性能提升提供了清晰的语义。

      request to /img.gif
      public/img.gif exists => send it to user
      ----
      request to /users.json
      public/users.json doesnt exist =>
      send request to app in public/..
      

      因此,即使您没有任何内容,您也必须将其指向公共目录

      【讨论】:

      • 谢谢@lobanovadik,是的,我想的差不多。虽然,我想知道是否有任何文档说 config.ru 应该在包含 ? 的同一文件夹中
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多