Inicia discusión local sobre el arranque/inicio de Ubuntu

Antes funcionaba, pero lo perdí todo, reinstalé Ubuntu y olvidé cómo hacerlo funcionar de nuevo.

Para cualquiera que ejecute un Discourse local en su computadora y lo haya configurado para que se inicie al arrancar, por favor díganme cómo lo hicieron.

A continuación está lo que he intentado.

Actualmente tengo ~/.local/bin/start-discourse:

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

y

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

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

ambos funcionan. Pero no quiero ejecutar start-discourse manualmente cada vez que inicie sesión.

Así que hay varias cosas que he probado.

Usar crontab -e y agregar @reboot start-discourse no funciona.

Usar “Preferencias de aplicaciones de inicio” tampoco funciona. Probé tanto start-discourse, start-discourse-daemon, e incluso sleep 60 && start-discourse-daemon… Probé el comando sleep con la mayoría de los métodos aquí.

Agregar un archivo .sh en /etc/profile.d no funciona.

.bashrc… Sigo olvidando que esto se ejecuta cada vez que se abre una nueva terminal. Claro, podría vivir con start-discourse-daemon ejecutándose cada vez que abro una terminal, pero creo que hay mejores formas, y además solo se ejecutaría si abro la terminal.

Agregar start-discourse-daemon en ~/.profile arroja un error (en ~/start-discourse-stderr.txt): bundle: exec command not found. Pero funciona cuando cierro sesión y vuelvo a iniciar.

Usar /etc/systemd/local-discourse.service siguiendo este post de Hackernoon no funciona. Sí, lo habilité y lo inicié, y funciona cuando ejecuto systemctl start local-discourse, pero incluso cuando está habilitado, no funciona al reiniciar.

Sí intenté depurar con:

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

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

y… para todos o la mayoría de los métodos anteriores se imprimen todos los registros en el archivo ~/start-discourse-log.txt. Y hasta crea ~/start-discourse-stdout.txt, pero este archivo se queda con tamaño 0 para siempre.


Si algo de lo anterior funcionó para ti, por favor dime cuál.

¿Te refieres al desarrollo local?

Sí. Lo ejecuto localmente y uso Discourse en localhost:3030.

Creo que tengo una pista sobre qué está mal.

Al menos con la forma en que lo hice en .profile, rbenv o algo similar no se agregó al $PATH, por lo que cuando mi script ejecuta bundle exec ..., obtengo un error indicando que no se encuentra bundle. Me pregunto si este es el problema con otros enfoques también.

Pero aún no lo he probado.

Disculpa por una pregunta tan de principiante. Obtuve una respuesta en internet que decía que solo debía usar la ruta completa a bundle.

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

Luego cambié mi script a:

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

Ejecuté el script en .profile de forma asíncrona con start-discourse &. Y funcionó.

Disculpa por una pregunta tan poco enfocada.