Inicie discussão local sobre inicialização/arranque do Ubuntu

Eu tinha funcionando antes, mas perdi tudo, reinstalei o Ubuntu e esqueci como fazê-lo funcionar novamente.

Para quem executa um Discourse local no computador e configurou para iniciar no boot, por favor, me diga como você fez isso.

Abaixo está o que eu tentei.

Atualmente tenho ~/.local/bin/start-discourse:

#!/usr/bin/env bash
cd ~/softwares/discourse
bundle exec rails server -p 3030 2> ~/start-discourse-stderr.txt

e

~/.local/bin/start-discourse-daemon:

#!/usr/bin/env bash
daemon --name="local-discourse" bash start-discourse

Ambos funcionam. Mas eu não quero ter que executar start-discourse manualmente toda vez que fizer login.

Então, há algumas coisas que eu tentei.

Usar crontab -e e adicionar @reboot start-discourse não funcionou.

Usar “Preferências de aplicativos de inicialização” não funcionou. Tentei tanto start-discourse, start-discourse-daemon, e até mesmo sleep 60 && start-discourse-daemon … Tentei o comando sleep na maioria dos métodos aqui.

Adicionar um arquivo .sh em /etc/profile.d não funcionou.

.bashrc … Eu continuo esquecendo que isso é executado toda vez que um novo terminal é aberto. Claro, eu poderia me acostumar com o start-discourse-daemon rodando toda vez que abro um terminal, mas acho que existe uma maneira melhor, e isso só rodaria se eu abrisse o terminal.

Adicionar start-discourse-daemon em ~/.profile lança um erro (em ~/start-discourse-stderr.txt): bundle: exec command not found. Mas funciona quando eu saio e faço login novamente.

Usar /etc/systemd/local-discourse.service seguindo este post hackernoon não funcionou. Sim, eu ativei e iniciei, o que funciona quando executo systemctl start local-discourse, mas mesmo estando ativado, não funciona após reiniciar.

Eu tentei depurar com:

cd ~/softwares/discourse
bundle exec rails server -p 3030 > ~/start-discourse-stdout.txt 2> ~/start-discourse-stderr.txt

e até mesmo com:

echo $(date "+%Y/%m/%d %H:%M:%S") Start script >> ~/start-discourse-log.txt
cd ~/softwares/discourse
echo $(date "+%Y/%m/%d %H:%M:%S") Changed directory, executing script >> ~/start-discourse-log.txt
bundle exec rails server -p 3030 > ~/stard/discourse-stdout.txt 2> ~/start-discourse-stderr.txt
echo $(date "+%Y/%m/%d %H:%M:%S") End of script >> ~/start-discourse-log.txt

e … para todos ou a maioria dos métodos acima, todos os logs são impressos no arquivo ~/start-discourse-log.txt. E até mesmo cria ~/start-discourse-stdout.txt, mas este arquivo permanece com tamanho 0 para sempre.


Se alguma coisa acima funcionou para você, por favor, me diga qual foi.

Você está se referindo ao desenvolvimento local?

Sim. Eu executo localmente e uso o Discourse em localhost:3030.

Acho que já tenho uma ideia do que está errado.

Pelo menos da forma como fiz com o .profile, o rbenv ou algo assim não foi adicionado ao $PATH, então quando meu script executa bundle exec ..., recebo um erro dizendo que o bundle não foi encontrado. Me pergunto se esse é o problema com outras abordagens também.

Mas ainda não tentei isso.

Desculpe pela pergunta de iniciante. Encontrei uma resposta na internet dizendo que eu deveria apenas usar o caminho completo para o bundle.

> whereis bundle
bundle: /home/young/.rbenv/shims/bundle

Em seguida, alterei meu script para:

#!/usr/bin/env bash
cd ~/softwares/discourse
/home/young/.rbenv/shims/bundle exec rails server -p 3030 2> ~/start-discourse-stderr.txt

Depois, executei o script no .profile de forma assíncrona, com start-discourse &. E funcionou.

Desculpe pela pergunta tão dispersa.