我正准备开始托管自己的 Ruby 应用程序。我已经在生产服务器上安装了 RVM。现在我想安装 Passenger。
我将 Ruby 1.9.2 设置为默认。我安装了 Passenger 宝石并运行passenger-install-apache2-module
。这显示了缺少的依赖项列表,其中之一是 Ruby 的 OpenSSL 支持。它解释说我需要重新安装带有 OpenSSL 支持的 Ruby。我不知道如何做到这一点,也不知道为什么它从一开始就不存在。以下是其他错误的列表:
- GNU C++ 编译器...未找到
- 未找到支持 SSL 的 Curl 开发标头...
- OpenSSL 开发标头...未找到
- Zlib 开发标头...未找到
- 找到 Ruby 开发标头...
- 未找到对 Ruby 的 OpenSSL 支持...
- 找到 RubyGems...
- Rake... 在 /usr/local/rvm/wrappers/ruby-1.9.2-p320/rake 找到
- 机架...找到
- Apache 2... 在 /usr/sbin/httpd 找到
- Apache 2 开发标头...未找到
- Apache 可移植运行时 (APR) 开发标头...未找到
- Apache 可移植运行时实用程序 (APU) 开发标头...未找到
似乎很多东西都应该已经可用了。我安装 RVM 错了吗?有没有更简单的方法可以让 Passenger 启动并运行,而无需安装一堆我以后可能永远不会使用的依赖项?我该怎么办?
更新:我忘了说这是 Rackspace 托管的 RedHat 服务器。我不确定 Rackspace 是否有推荐的方法来执行此操作。我知道他们维护着自己的受信任包/存储库列表。
答案1
我必须安装 Passenger(特别是 mod_passenger),下面是我安装的方法。我的环境是 CentOS 6,x86_64。
安装所需的 rpm
yum install httpd httpd-devel openssl-devel mod_ssl
添加 EPEL repo。记得编辑 /etc/yum.repos.d/epel.repo 并通过将 enabled 设置为 0 来禁用它。epel-release-6-5.noarch.rpm 的实际来源不会来自 fedoraproject.org/...,因为您实际上将访问镜像服务器。
wget http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-5.noarch.rpm rpm -ivh epel-release-6-5.noarch.rpm
设置为使用 stealthymonkeys.com 上的 yum repo,它托管了 Passenger 的 rpm。安装 mod_passenger,它需要 epel repo 来获取一些相关的 rpm。
rpm -Uvh http://passenger.stealthymonkeys.com/rhel/6/passenger-release.noarch.rpm
使用以下命令安装 mod_passenger。
yum --enablerepo=epel --enablerepo=passenger install mod_passenger
由于我不了解您的环境,因此无法提供更好的答案,但希望这会有所帮助。
答案2
Rackspace 帮不上什么忙,但最终比我想象的要简单,而且没有出现任何问题。我只是按照 Passenger 给我的指示操作。它说我需要安装一堆软件包,所以我一次安装一个(即sudo yum install openssl-devel
)。这些软件包都没有与我安装的其他软件包冲突,因为它们都是新的(我不需要更新任何软件包)。然后我再次运行 Passenger 安装程序,它就可以很好地自行编译。
我遇到的唯一问题是 Passenger 只允许您运行一个版本的 Ruby,因此当您通过 RVM 安装 Passenger 时,请确保您使用的是rvm use
您想要使用的 Ruby 版本。