【发布时间】:2012-03-21 17:28:42
【问题描述】:
我为两个项目编写了一个 bash 脚本来启动瘦服务器。
#! /bin/sh
cd /path/to/my/project_1
thin -e production -p 3000 --daemonize -s 10 start
然后将其放在 /etc/init.d/start_thin 中。给它755个权限。冉:
sudo update-rc.d start_thin defaults.
然后
sudo reboot
Thin 未启动。谢谢。
更新:
经过长时间的斗争,我发现了这个只有在使用 /etc/init.d/thin 启动瘦时才会发生的错误:
将 PID 写入 tmp/pids/thin.3000.pid 使用 rails 适配器 /path/.rvm/gems/ruby-1.9.2-p290/gems/mysql2-0.3.11/lib/mysql2/mysql2.so: [BUG] 分割错误 ruby 1.8.7 (2010-08-16 patchlevel 302) [i686-linux]
我想现在唯一合乎逻辑的事情就是切换到“正常”的 sql gem。
更新 2:
我找到了this resource,以前对我有帮助,但现在无能为力了。
更新 3:
我使用 quick install 重新安装了 RVM。现在,当启动脚本运行时,我在日志中看到缺少 gem:multi_json-1.1.0。我安装它并放入 Gemfile。没有帮助。不过,当我手动执行 bash 脚本时 - 没问题。只有在启动时它才会抱怨 multi_json-1.1.0。
更新 4:
只有在启动时,thin 的日志文件包含:
当我安装了 ruby 1.9.2 时,我不明白为什么它使用 1.8 gems :-?
>> Writing PID to tmp/pids/thin.3000.pid
>> Using rails adapter
>> Exiting!
/usr/lib/ruby/gems/1.8/gems/bundler-1.0.15/lib/bundler/spec_set.rb:87:in `materialize': Could not find multi_json-1.1.0 in any of the sources (Bundler::GemNotFound)
from /usr/lib/ruby/gems/1.8/gems/bundler-1.0.15/lib/bundler/spec_set.rb:81:in `map!'
from /usr/lib/ruby/gems/1.8/gems/bundler-1.0.15/lib/bundler/spec_set.rb:81:in `materialize'
from /usr/lib/ruby/gems/1.8/gems/bundler-1.0.15/lib/bundler/definition.rb:90:in `specs'
from /usr/lib/ruby/gems/1.8/gems/bundler-1.0.15/lib/bundler/definition.rb:135:in `specs_for'
from /usr/lib/ruby/gems/1.8/gems/bundler-1.0.15/lib/bundler/definition.rb:124:in `requested_specs'
from /usr/lib/ruby/gems/1.8/gems/bundler-1.0.15/lib/bundler/environment.rb:23:in `requested_specs'
from /usr/lib/ruby/gems/1.8/gems/bundler-1.0.15/lib/bundler/runtime.rb:11:in `setup'
from /usr/lib/ruby/gems/1.8/gems/bundler-1.0.15/lib/bundler.rb:107:in `setup'
from /usr/lib/ruby/gems/1.8/gems/bundler-1.0.15/lib/bundler/setup.rb:17
from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require'
from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
from /home/user1/myproj1/config/boot.rb:6
from /home/user1/myproj1/config/application.rb:1:in `require'
from /home/user1/myproj1/config/application.rb:1
from /home/user1/myproj1/config/environment.rb:2:in `require'
from /home/user1/myproj1/config/environment.rb:2
from /usr/lib/ruby/1.8/rack/adapter/rails.rb:42:in `require'
from /usr/lib/ruby/1.8/rack/adapter/rails.rb:42:in `load_application'
from /usr/lib/ruby/1.8/rack/adapter/rails.rb:23:in `initialize'
from /usr/lib/ruby/1.8/rack/adapter/loader.rb:36:in `new'
from /usr/lib/ruby/1.8/rack/adapter/loader.rb:36:in `for'
from /usr/lib/ruby/1.8/thin/controllers/controller.rb:163:in `load_adapter'
from /usr/lib/ruby/1.8/thin/controllers/controller.rb:67:in `start'
from /usr/lib/ruby/1.8/thin/runner.rb:174:in `send'
from /usr/lib/ruby/1.8/thin/runner.rb:174:in `run_command'
from /usr/lib/ruby/1.8/thin/runner.rb:140:in `run!'
from /usr/bin/thin:6
所以,很自然,我安装了 multi_json gem,然后,捆绑安装,你怎么看?同样的老问题:)。
【问题讨论】:
-
尝试
./thin,如果它位于该目录中。很可能它不在 PATH 中。 -
谢谢,我尝试过,并再次尝试提供完整路径。没有运气。
-
一个问题是 cd 在子外壳中运行。但问题是从薄开始。我检查了日志,一切看起来都很好。所以应该是其他问题。目前我从 Thin -c /path/to/my/project_1 -e production -p 3000 --daemonize -s 10 start 开始
-
你可以试试
sudo start start_thin或sudo restart start_thin。您不需要重新启动来测试您的脚本(这不是 Windows)。 -
在这种情况下,当您执行脚本时,会生成一个新的 shell。在这个新的 shell 中,您执行
cd命令,然后执行thin命令。其他问题不相关。
标签: ruby-on-rails boot restart thin