시작할 때 Ruby 스크립트를 실행하는 것이 얼마나 어려울 수 있습니까?!
상당히 힘든 것 같습니다.
나는 rvm
Ruby 를 사용하고 실행하고 있습니다 2.3.0
.
which ruby
반환 /home/ubuntu/.rvm/rubies/ruby-2.3.0/bin/ruby
스크립트 위치는 입니다 /home/redline/sinatra-aggregator/server.rb
. 나는 그것에 대해 온갖 종류의 chown
것들을 시도해 보았지만 chmod
아마도 그것이 그것과 관련이 있을 것입니다.
서버가 시작됩니다. 어떻게 실행시키나요 sudo ruby server.rb
? sudo도 필요하지 않습니다.
upstart, rc.local 또는 init.d를 사용하여 이를 수행하는 방법에 대한 튜토리얼이 약 천만 개 있는데 단 하나도 작동하지 않았기 때문에 내가 무엇을 하고 있는지 모르겠습니다. 나는 심지어 crontab을 시도했습니다.
현재 내 crontab -e
모습은 이렇습니다.
@reboot /home/ubuntu/start.sh
/홈/우분투/start.sh:
/home/ubuntu/.rvm/rubies/ruby-2.3.0/bin/ruby /home/ubuntu/sinatra-aggregator/server.rb >> log.txt
그런데 log.txt는 항상 비어 있습니다.
나는 비슷한 설정을 시도했습니다 rc.local
.init.d
편집하다:
를 사용하여 소프트웨어를 실행해 보았지만 nohup
문제 없이 작동했지만 로그 출력은 다음과 같습니다.
== Sinatra (v1.4.7) has taken the stage on 3000 for production with backup from Thin
== Sinatra has ended his set (crowd applauds)
Starting //Blueline Scraper!
Thin web server (v1.6.4 codename Gob Bluth)
Maximum connections set to 1024
Listening on 0.0.0.0:3000, CTRL+C to stop
Stopping ...
Stopping ...
/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- sinatra (LoadError)
from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from server.rb:2:in `<main>'
ubuntu@ip-172-31-35-95:~/sinatra-aggregator$
RVM이 시스템에 존재할 뿐만 아니라 번들로 설치되어 있기 때문에 필요한 보석에 PATH를 제공하지 않는 것이라고 장담합니다. bundle exec
내 지시문에 사용해야 하며 @reboot
, 그렇지 않은 경우 스크립트 실행 전에 $PATH를 어떻게 추가합니까?
편집하다:
Michael의 솔루션을 사용해 보았지만 댓글에 설명된 다양한 이유로 작동하지 않았습니다.
답변1
이것을 시도해 보셨나요:
cron /home/redline/sinatra-aggregator/server.rb
cron restart
이 방법으로는 괜찮을 것 같습니다.