Você já tentou isso:
cron /home/redline/sinatra-aggregator/server.rb
cron restart
e pode funcionar bem assim.
O quão difícil pode ser executar um script ruby na inicialização?!
Bastante resistente aparentemente:
Estou usando rvm
e executando ruby 2.3.0
.
which ruby
retorna /home/ubuntu/.rvm/rubies/ruby-2.3.0/bin/ruby
O local do script é: /home/redline/sinatra-aggregator/server.rb
. Eu tentei todos os tipos de chown
s e chmod
s, talvez isso tenha algo a ver com isso.
O servidor é iniciado. Como faço para executar sudo ruby server.rb
? Nem precisa do sudo.
Há cerca de dez milhões de tutoriais sobre como fazer isso usando upstart, rc.local ou init.d e não sei o que estou fazendo porque nem um único deles funcionou. Eu até tentei crontab.
Atualmente, meu crontab -e
é assim:
@reboot /home/ubuntu/start.sh
/home/ubuntu/start.sh:
/home/ubuntu/.rvm/rubies/ruby-2.3.0/bin/ruby /home/ubuntu/sinatra-aggregator/server.rb >> log.txt
log.txt está sempre vazio, a propósito.
Eu tentei configurações semelhantes com rc.local
e init.d
Eu tentei executar o software com nohup
, funcionou bem, mas aqui está a saída do log:
== 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$
Aposto qualquer coisa que o RVM não está fornecendo o PATH de alguma forma para as gemas que eu preciso, pois elas não existem apenas no sistema, mas são instaladas pelo pacote. Devo usar bundle exec
na minha diretiva @reboot
e, se não, como adicionar $ PATH antes da execução do script?
EDITAR:
Tentei a solução de Michael, não funcionou por várias razões explicadas nos comentários.
Você já tentou isso:
cron /home/redline/sinatra-aggregator/server.rb
cron restart
e pode funcionar bem assim.
Tags command-line bash cron upstart ruby