Lancer le débat local sur le démarrage de Ubuntu

Ça fonctionnait avant, mais j’ai tout perdu, j’ai réinstallé Ubuntu et j’ai oublié comment faire fonctionner à nouveau le système.

Pour toute personne qui exécute un Discourse local sur son ordinateur et l’a configuré pour démarrer au lancement, merci de m’expliquer comment vous avez procédé.

Voici ce que j’ai essayé.

J’ai actuellement ~/.local/bin/start-discourse :

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

et

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

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

Les deux fonctionnent. Mais je ne veux pas avoir à exécuter start-discourse manuellement à chaque connexion.

Donc, voici quelques tentatives que j’ai faites.

Utiliser crontab -e et ajouter @reboot start-discourse ne fonctionne pas.

Utiliser les « Préférences des applications de démarrage » ne fonctionne pas. J’ai essayé start-discourse, start-discourse-daemon, et même sleep 60 && start-discourse-daemon… J’ai utilisé la commande sleep pour la plupart des méthodes ci-dessus.

Ajouter un fichier .sh dans /etc/profile.d ne fonctionne pas.

.bashrc… J’oublie sans cesse qu’il est exécuté à chaque ouverture d’un nouveau terminal. Bien sûr, je pourrais accepter que start-discourse-daemon soit lancé à chaque fois que j’ouvre un terminal, mais je pense qu’il existe une meilleure solution, et cela ne fonctionnerait que si j’ouvre un terminal.

Ajouter start-discourse-daemon dans ~/.profile provoque une erreur (dans ~/start-discourse-stderr.txt) : bundle: exec command not found. Mais cela fonctionne lorsque je me déconnecte et me reconnecte.

Utiliser /etc/systemd/local-discourse.service en suivant ce post sur Hackernoon ne fonctionne pas. Oui, je l’ai bien activé et lancé, et cela fonctionne lorsque j’exécute systemctl start local-discourse, mais même lorsqu’il est activé, cela ne fonctionne pas après un redémarrage.

J’ai essayé de déboguer avec :

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

et même avec :

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

Et… pour toutes ou la plupart des méthodes ci-dessus, tous les journaux sont bien écrits dans le fichier ~/start-discourse-log.txt. Et même le fichier ~/start-discourse-stdout.txt est créé, mais sa taille reste à 0 indéfiniment.


Si l’une des méthodes ci-dessus a fonctionné pour vous, merci de me dire laquelle.

Parlez-vous du développement local ?

Oui. Je l’exécute localement et j’utilise Discourse sur localhost:3030.

Je pense avoir une idée de ce qui ne va pas.

Du moins, avec la méthode que j’ai utilisée dans .profile, rbenv ou quelque chose de similaire n’a pas été ajouté au $PATH. Ainsi, lorsque mon script exécute bundle exec ..., j’obtiens une erreur indiquant que bundle est introuvable. Je me demande si c’est aussi le problème avec d’autres approches.

Mais je n’ai pas encore essayé cela.

Désolé pour une question aussi de débutant. J’ai trouvé une réponse sur Internet indiquant que je devais simplement utiliser le chemin complet vers bundle.

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

Ensuite, j’ai modifié mon script comme suit :

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

Puis j’ai exécuté le script dans .profile de manière asynchrone, start-discourse &. Et cela a fonctionné.

Désolé pour une question aussi peu précise.