如何加载用户.bashrc的RVM部分以在Apache下运行Ruby CGI脚本?

2024-01-10

我在 Ubuntu 12.04 上配置了一个新服务器,并开始使用 RVM。

我已经按照我的用户(作为我自己,而不是使用 sudo 作为 root)安装了 RVM瑞安·比格的指南 http://ryanbigg.com/2010/12/ubuntu-ruby-rvm-rails-and-you/,以前没有在系统范围内安装 Ruby。所以,我在 /usr/bin 下没有任何 Ruby。我的第一个任务是替换我所有 CGI 脚本的 shebang 行,从

!#/usr/bin/ruby

to

!#/usr/bin/env ruby

但是我的脚本没有在 Apache 下运行。在终端中我可以运行它们(通过输入./index.cgi,例如),但不是通过浏览器。相关说明:两者的用户是相同的,即 Apache 用户与登录终端的用户相同。通过php测试,我检查了RVM环境(最后几行.bashrc)未在 Apache 下加载。

I saw 使用 RVM 运行 CGI 脚本的技巧 http://www.lamolabs.org/blog/5397/how-to-use-rvm-installs-of-ruby-in-shell-cgi-scripts/,建议将特定版本的 Ruby 的完整路径放在 shebang 行中。如果您有在不同版本的 Ruby 上运行的脚本,这会很有用。但该解决方案对我不起作用,因为我的脚本必须在不同的计算机上运行,​​具有不同的用户和不同的路径。

对我有用的解决方案是将所需 Ruby 版本的符号链接放在 /usr/bin 下:

sudo ln -s /home/apache_user/.rvm/rubies/ruby-1.8.7-p370/bin/ruby /usr/bin/ruby

但我想知道是否有更好的解决方案,因为我猜rvm --default usesudo ln -s.

我在想:

  • 在启动时加载RVM环境(但我不知道如何实现);
  • 为每个 Web 请求加载 RVM 环境(这会降低性能,而且我不知道如何配置 Apache 来做到这一点);
  • 也许 RVM 环境已加载,我所要做的就是猜测要传递的相关变量的名称PassEnv指示。但我对此表示怀疑。 (为什么 Apache 会运行.bashrc而不是另一个像这样的外壳csh or ksh?)

你可以获取 ruby​​ 环境,我不确定是否足以获取它$HOME对于apache或者如果你需要修改/etc/init.d/apache2,但该行是:

source /path/to/rvm/environments/<name>

去哪里<name>您可以使用完整的 ruby​​ 名称或别名

您可以使用以下命令创建别名:

rvm alias create veve 1.9.3-p125@my-project

对于安装在的 RVM/home/app/.rvm将允许您使用:

source /home/app/.rvm/environments/veve

in .bashrc or /etc/init.d/apache2(就在顶部附近,below shebang)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何加载用户.bashrc的RVM部分以在Apache下运行Ruby CGI脚本? 的相关文章

  • 将表列添加到 Group by 子句 - Ruby on Rails - Postgresql

    我正在尝试使用 Heroku 显然 Postgresql 对于聚合函数来说比 SQL 严格得多 当我推送到 Heroku 时 我收到一条错误消息 内容如下 关于另一个问题 https stackoverflow com questions
  • Ruby 多维数组

    也许只是我缺乏在这里找到东西的能力 这就是问题所在 但我找不到任何关于如何在 Ruby 中创建多维数组的信息 有人可以给我一个如何做的例子吗 严格来说 在 Ruby 中创建多维数组是不可能的 但是可以将一个数组放入另一个数组中 这与多维数组
  • 仅使用 mod_rewrite 重定向主页

    我有一个需要重定向的网站 但我不能只重定向 目录 因为服务器上的文件夹中还有其他网站 这样做也会重定向它们 不好 因此 我的 htaccess 文件包含一堆针对各个 HTML 页面的 301 重定向 并且这些文件工作得很好 但我需要重定向主
  • 如何将文件中的行读入数组?

    这就是我想做的 但有一句话 lines Array new File open test txt each line lines lt lt line 可能的 执行如下操作 File readlines test txt Read 文档 h
  • .htaccess 在本地主机上给出 500 错误

    我是 MVC 框架的初学者 我正在尝试根据教程创建一个自己的 他们提供的 htaccess 文件包含 RewriteEngine On RewriteCond REQUEST FILENAME d RewriteCond REQUEST F
  • Rails 5.2 Active Storage 添加自定义属性

    我有一个带有附件的模型 class Project lt ApplicationRecord has many attached images end 当我附加并保存图像时 我还想保存一个附加的自定义属性 display order 整数
  • Ruby 中实现的所有设计模式的备忘单?

    我想知道是否有针对 Ruby 中实现的所有设计模式的备忘单 这样您就不必重新发明轮子 设计模式对于组织大量代码非常有用 因为您不需要像在 verbose algol derivitive language 中那样编写那么多代码来在 ruby
  • 在 Windows 上安装 RMagick

    我对此进行了研究 并且在我的一台计算机上花了几个小时 大约三周前 我在我的台式计算机上安装了 RMagick 它相当复杂 我不记得我采取的具体步骤 我真的很沮丧 我已将 ImageMagick 安装到我的计算机上的目录 C ImageMag
  • 解析包含 json 字符串的 json

    我有一个 json 里面有另一个 json 但它在双引号内 因此它给了我一个解析错误 除了使用之外还有什么方法可以解析这个jsongsub替换双引号 obj Name FirstName Douglas LastName Crockford
  • Accepts_nested_attributes_for Rails 3 中的实际形式使用

    使用 Ruby on Rails 3 我半明白accepts nested attributes for是如何的supposed工作 但我无法找出以某种形式实现这一点的实用方法 例如 如果有人想在其用户页面中添加他们最近的位置 user r
  • 如何找到 Ruby 应用程序中的性能瓶颈?

    我编写了一个 Ruby 应用程序 它可以解析来自不同格式 html xml 和 csv 文件的源的大量数据 如何找出代码的哪些区域花费时间最长 有没有关于如何提高 Ruby 应用程序性能的好资源 或者您是否有始终遵循的性能编码标准 例如 您
  • 如何在 Rails 3 中连接表并计算记录数?

    我有一个Collection有很多硬币的类 我正在尝试选择拥有两枚以上硬币的收藏品 目前 我可以直接通过 Ruby 来完成此操作 但效率极低 我当前的代码 collections Collection all select c c coin
  • .htaccess - 将多个子目录重写到根目录

    我正在尝试将多个子目录重写到根目录 我遇到的情况是我有一个名为blog 其中将包含主站点文件夹和另一个名为的子目录项目 包含我想从根目录访问的其他文件夹 www blog work contact projects projectA pro
  • 平衡付款 - 有关获取现有买家和商家账户参考信息的文档

    我如何获得已创建的买家和商家帐户的参考 我只是找到创建买家和商家帐户的示例 我没有找到任何有关获取该信息以供重用的示例 是否有关于此的现有文档或只是 rdoc 中的内容 根据对 rdoc 的引用 我假设您在这里使用 Ruby gem 使用唯
  • Spring MVC http 500错误apache

    上面是我的程序的目录层次结构 我是 Spring 新手 正在学习 MVC 概念 我编写了一个程序 它将输入 名称 输入文本框并打印 Hello name 以下是我的目录结构和我创建的各种文件 web xml
  • 通过 HTTPS 的隧道

    在我的工作场所 流量拦截器 防火墙变得越来越糟糕 我无法通过端口 22 连接到我的家用计算机 并且缺乏 ssh 访问权限让我感到难过 我以前可以通过将 SSH 移动到端口 5050 来使用它 但我认为最近的一些过滤器现在将此流量视为 IM
  • Rails 2.3.14:如何序列化 ActionController::Request 对象?

    我需要编写一些根据 Rails 2 3 14 控制器收到的请求对象类型执行操作的方法 但是 我不想启动整个应用程序 甚至不想启动控制器 我只想拥有这样一个对象的编组副本 以便我可以在 Rails 环境之外使用 不幸的是 ActionCont
  • 在 RSpec 测试期间抑制控制台输出

    我正在测试在控制台上放置一些消息的类 包含 put p 警告等 我只是想知道在 RSpec 测试期间是否有能力抑制此输出 我压抑puts通过重定向在我的类中输出 stout到一个文本文件 这样 如果我出于任何原因需要查看输出 它就在那里 但
  • 致命错误 - 未找到“Mongo”类

    我正在尝试执行此操作 但我收到以下错误 致命错误 在 C wamp www 中找不到类 Mongo Info PHP 5 38 MongoDB mongodb win32 i386 2 0 2 MongoDB PHP 驱动程序 mongo
  • 为什么每个方法需要将其循环的值分配给变量?

    在 Rails 上工作 发现我对 Rails 的理解缺乏知识each method 不知道为什么each方法需要变量 message h2 h2 不确定为什么每个方法都需要变量 message 事实并非如此require它 你完全可以忽略它

随机推荐