部署 Thin 部署失败

lukefan · 2014年01月22日 · 最后由 lukefan 回复于 2014年01月24日 · 3602 次阅读

我使用

rvmsudo thin install

进行了安装,也成功了。 但是执行:

/home/luke/.rvm/rubies/ruby-1.9.1-p431/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find thin (>= 0) amongst [] (Gem::LoadError)
    from /home/luke/.rvm/rubies/ruby-1.9.1-p431/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:256:in `to_spec'
    from /home/luke/.rvm/rubies/ruby-1.9.1-p431/lib/ruby/site_ruby/1.9.1/rubygems.rb:1231:in `gem'
    from <internal:gem_prelude>:274:in `push_gem_version_on_load_path'
    from <internal:gem_prelude>:14:in `gem'
    from /home/luke/.rvm/gems/ruby-2.1.0/bin/thin:22:in `<main>'
    from /home/luke/.rvm/gems/ruby-1.9.1-p431/bin/ruby_executable_hooks:15:in `eval'
    from /home/luke/.rvm/gems/ruby-1.9.1-p431/bin/ruby_executable_hooks:15:in `<main>'

请问是什么地方搞错了?

从没有用 rvmsudo 装过 thin,一般都是把 thin 放到 Gemfile 中,然后通过 bundle 来安装。 如果是通过 bundle 安装的话,在 Rails 项目目录下执行 thin 一般不会碰到问题。

我尝试了

rvmsudo gem install thin
rvmsudo thin install

然后执行:

service thin start

结果依然。

如果执行:

sudo service thin start

则会显示: /usr/bin/env: ruby_executable_hooks: 没有哪个文件和目录

在网上搜了一些,感觉应该是路径有问题,好像是要把哪个路径放在哪个前面。结果还是每搞明白。

#2 楼 @lukefan thin 不是一个 service。你应该运行 thin start 而不是 service thin start

#2 楼 @lukefan 你说的/usr/bin 种找不到是作为一个 service 默认的 path 指向了/usr/bin,但是 thin 不是 service 且装载了 ruby 下的 gems 里,所以你以 service 的方式运行 thin 找不到

#4 楼 @cassiuschen thin 肯定是可以作为 service 启动的。我的大部分服务器都是这么做的。

#5 楼 @lukefan 我看了一下 thin 的文档,的确是可以通过 sudo thin install 的方式把 thin 变成一个系统 service,但是还应该要在 /etc/thin/ 下面添加一个配置文件,具体可能要 Google 一下。

文档上介绍的增加配置文件的做法:

thin config -C /etc/thin/<appname>.yml -c /var/rails/<appdir> --servers 3 -p <portnumber>

#6 楼 @lgn21st 这一步已经做了。也生成了配置文件,依然不行啊。

#7 楼 @lukefan 我觉得是 rvm 造成了你的问题,可以不用 rvmsudo 装东西么?

原来没用这个安装,也是有问题的。

如果是用 rvm,似乎是需要先用 rvm warpper,然后修改/etc/init.d/thin 里的 DAEMON,但是我是用 root 用户部署的,如果用普通用户不清楚是不是还需要别的操作

service 下,未加载 RVM 的环境的典型问题。需要用 RVM 的 wrapper 解决。

#10 楼 @764664 感谢,问题解决了。就是需要 rvm wrapper。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号