Avvia una discussione locale su avvio/startup di Ubuntu

Prima funzionava, ma ho perso tutto, ho reinstallato Ubuntu e ho dimenticato come farlo funzionare di nuovo.

Per chiunque esegua un Discourse locale sul proprio computer e lo abbia configurato per l’avvio automatico, per favore ditemi come avete fatto.

Di seguito riporto ciò che ho provato.

Attualmente ho ~/.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

entrambi funzionano. Ma non voglio dover eseguire start-discourse manualmente ogni volta che accedo.

Quindi ho provato diverse cose.

Usare crontab -e e aggiungere @reboot start-discourse non funziona.

Usare “Preferenze applicazioni all’avvio” non funziona. Ho provato sia start-discourse, start-discourse-daemon, e persino sleep 60 && start-discourse-daemon… Ho provato il comando sleep con la maggior parte dei metodi elencati qui.

Aggiungere un file .sh in /etc/profile.d non funziona.

.bashrc… continuo a dimenticare che viene eseguito ogni volta che si apre un nuovo terminale. Certo, potrei accontentarmi di avere start-discourse-daemon in esecuzione ogni volta che apro un terminale, ma credo che ci siano modi migliori, e in ogni caso verrebbe eseguito solo se apro il terminale.

Aggiungere start-discourse-daemon in ~/.profile genera un errore (in ~/start-discourse-stderr.txt): bundle: exec command not found. Ma funziona quando faccio logout e poi rientro.

Usare /etc/systemd/local-discourse.service seguendo questo post di Hackernoon non funziona. Sì, l’ho abilitato e avviato, e funziona quando eseguo systemctl start local-discourse, ma anche se è abilitato, non funziona dopo un riavvio.

Ho provato a fare il debug con:

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

e persino con:

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 > ~/start-discourse-stdout.txt 2> ~/start-discourse-stderr.txt
echo $(date "+%Y/%m/%d %H:%M:%S") End of script >> ~/start-discourse-log.txt

e… per tutti o quasi tutti i metodi sopra riportati, tutti i log vengono scritti nel file ~/start-discourse-log.txt. Viene persino creato ~/start-discourse-stdout.txt, ma questo file rimane di dimensione zero per sempre.


Se qualcosa di quanto sopra ha funzionato per te, per favore fammi sapere quale.

Intendi per lo sviluppo locale?

Sì. Lo eseguo in locale e uso Discourse su localhost:3030.

Penso di aver capito qual è il problema.

Almeno con il metodo che ho usato per .profile, rbenv o qualcosa di simile non viene aggiunto al $PATH, quindi quando il mio script esegue bundle exec ... ricevo un errore che indica che bundle non è stato trovato. Mi chiedo se questo sia un problema anche con altri approcci.

Ma non l’ho ancora provato.

Scusa per una domanda così da principiante. Ho trovato su internet che dovrei usare semplicemente il percorso completo di bundle.

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

Poi ho modificato il mio script in:

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

Quindi ho eseguito lo script in .profile in modo asincrono, start-discourse &. E ha funzionato.

Scusa per una domanda così poco focalizzata.