我刚刚使用Ubuntu 12 LTS构建了一个RackSpace云服务器,并执行了“标准”Ruby on Rails安装。我创建了一个用户(bob)并将其添加到sudu组。
然后我退出root并以bob身份登录。然后从sudo su
目录发出/home/bob
。然后我安装了以root身份运行Rails应用程序所需的一切。
然后我在/home/bob
中安装了Rails代码,当我发出时,乘客启动了:
RAILS_ENV=production passenger start -p 3000
但是,由于我想在此服务器上运行多个Rails应用程序,然后我创建了另一个目录/home/bob/newapp
并在那里安装了Rails代码。 (理想情况下,我希望将所有不同的Rails应用程序放在/home/bob
下面的子目录中
当我从/home/bob/newapp
RAILS_ENV=production passenger start -p 3000
我得到了
乘客:未找到命令
为什么乘客只能从/home/bob
访问?
新闻:刚刚发现,在我完成/config/database.yml
内容编辑的那一刻,乘客“可用”,因此只要我不编辑database.yml
文件,乘客就会开始。编辑database.yml
后,出现“乘客:未找到命令”。这有多奇怪?
SNAP:看起来当我安装乘客时它使用的是Ruby-2.1.1,但旧的应用程序需要ruby-1.9.3-p194。我需要弄清楚如何让乘客与ruby 1.9.3一起运行或安装第二版乘客(???)
更多新闻: 感谢Hongli,感谢您的回复。我按照您的链接/建议阅读乘客文件。我以前读过它而没有认识到所需的信息。这次我找到了“神奇”的命令:
rvm-exec ruby-version ruby -S (eg: rvm-exec ruby-1.9.3-p194 ruby -S )
这已经证明是非常有用的,尽管我最终确实遵循了导致安装了两个不同版本的乘客的过程。
答案 0 :(得分:0)
阅读Phusion Passenger手册的About environment variables部分,了解“找不到命令”错误,发生错误的原因,以及您通常可以做些什么。
在您的情况下,输入/ home / bob会自动使RVM更改您的PATH以包含特定的Ruby版本的bin目录。阅读Phusion Passenger手册的When the system has multiple Ruby interpreters部分,了解如何处理。
答案 1 :(得分:0)
Hongli建议我阅读的文章肯定让我朝着正确的方向前进。
使用:rvm-exec'ruby-version'ruby -S允许我启动乘客,只要使用Rails应用程序所需的ruby版本安装了乘客版本。
因此,如果我加载使用ruby-1.9.3-p194构建的Rails应用程序,我将需要安装相同版本的ruby的乘客版本。
如果我加载了另一个使用ruby-1.9.3-p286构建的Rails应用程序,我将需要安装该版本的ruby版本的乘客。
然后可以使用带有相应ruby版本的rvm-exec命令来启动每个版本的乘客。
也许有一个更优雅的解决方案,但上述方法对我有用。