Lokale Diskussion über Ubuntu-Boot/Startvorgang beginnen

Es hat vorher funktioniert, aber ich habe alles verloren, Ubuntu neu installiert und vergessen, wie man es wieder zum Laufen bringt.

Für alle, die Discourse lokal auf ihrem Computer betreiben und so konfiguriert haben, dass es beim Start ausgeführt wird: Bitte teilt mir mit, wie ihr das gemacht habt.

Hier ist, was ich bisher versucht habe.

Aktuell habe ich ~/.local/bin/start-discourse:

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

und

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

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

Beide funktionieren tatsächlich. Aber ich möchte start-discourse nicht bei jedem Login manuell ausführen.

Also habe ich einige Dinge versucht.

Die Verwendung von crontab -e und das Hinzufügen von @reboot start-discourse funktioniert nicht.

Die Verwendung der „Einstellungen für Autostartprogramme“ funktioniert ebenfalls nicht. Ich habe sowohl start-discourse, start-discourse-daemon als auch sleep 60 && start-discourse-daemon ausprobiert … Ich habe den sleep-Befehl bei den meisten Methoden hier verwendet.

Das Hinzufügen einer .sh-Datei nach /etc/profile.d funktioniert nicht.

.bashrc … Ich vergesse ständig, dass dies bei jedem Öffnen eines neuen Terminals ausgeführt wird. Sicher, ich könnte damit leben, dass start-discourse-daemon jedes Mal läuft, wenn ich ein Terminal öffne, aber ich denke, es gibt bessere Wege, und es würde nur laufen, wenn ich das Terminal öffne.

Das Hinzufügen von start-discourse-daemon zu ~/.profile wirft einen Fehler (in ~/start-discourse-stderr.txt): bundle: exec command not found. Es funktioniert jedoch, wenn ich mich abmelde und wieder anmeldet.

Die Verwendung von /etc/systemd/local-discourse.service nach diesem Hackernoon-Beitrag funktioniert nicht. Ja, ich habe es aktiviert und gestartet, und es funktioniert, wenn ich systemctl start local-discourse ausführe, aber selbst wenn es aktiviert ist, funktioniert es nach einem Neustart nicht.

Ich habe versucht, mit folgendem zu debuggen:

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

und sogar mit:

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

Bei allen oder den meisten der oben genannten Methoden werden alle Logs in die Datei ~/start-discourse-log.txt geschrieben. Und sogar ~/start-discourse-stdout.txt wird erstellt, aber diese Datei bleibt für immer bei Größe 0.


Wenn irgendetwas davon bei euch funktioniert hat, sagt mir bitte, welches.

Meinst du das für die lokale Entwicklung?

Ja. Ich betreibe es lokal und verwende Discourse unter localhost:3030.

Ich habe eine Ahnung, was das Problem ist.

Zumindest bei meiner Vorgehensweise mit .profile wurde rbenv oder Ähnliches nicht zum $PATH hinzugefügt, sodass ich beim Ausführen von bundle exec ... in meinem Skript den Fehler erhalte, dass bundle nicht gefunden wird. Ich frage mich, ob dies auch bei anderen Ansätzen ein Problem ist.

Das habe ich jedoch noch nicht ausprobiert.

Entschuldige bitte die Frage eines Anfängers. Ich habe im Internet die Antwort erhalten, dass ich einfach den vollständigen Pfad zu bundle verwenden sollte.

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

Dann habe ich mein Skript wie folgt geändert:

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

Anschließend habe ich das Skript asynchron in .profile ausgeführt, start-discourse &. Und es hat funktioniert.

Entschuldige bitte die etwas unpräzise Frage.