ابدأ نقاشًا محليًا حول إقلاع/بدء تشغيل Ubuntu

كان يعمل من قبل، لكنني فقدت كل شيء وأعدت تثبيت Ubuntu ونسيت كيف أجعله يعمل.

إذا كنت تشغل Discourse محليًا على جهازك وقمت بإعداده للعمل عند بدء التشغيل، يرجى إخباري بكيفية فعل ذلك.

إليك ما جربته حتى الآن.

أنا أملك حاليًا الملف ~/.local/bin/start-discourse:

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

والملف ~/.local/bin/start-discourse-daemon:

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

كلاهما يعملان بالفعل. لكنني لا أريد تشغيل start-discourse يدويًا في كل مرة أسجل فيها الدخول.

لذلك جربت عدة أشياء.

استخدام crontab -e وإضافة @reboot start-discourse لم ينجح.

استخدام “تفضيلات تطبيقات بدء التشغيل” لم ينجح. جربت start-discourse وstart-discourse-daemon، وحتى sleep 60 && start-discourse-daemon… جربت أمر sleep مع معظم الطرق المذكورة هنا.

إضافة ملف .sh إلى /etc/profile.d لم ينجح.

.bashrc … أنا ما زلت أنسى أن هذا الملف يُنفذ في كل مرة يتم فيها فتح نافذة طرفية جديدة. بالتأكيد يمكنني العيش مع تشغيل start-discourse-daemon في كل مرة أفتح فيها الطرفية، لكنني أعتقد أن هناك طريقة أفضل، كما أن هذا سيجعله يعمل فقط إذا فتحت الطرفية.

إضافة start-discourse-daemon إلى ~/.profile تسبب خطأ (يظهر في ~/start-discourse-stderr.txt) وهو bundle: exec command not found. لكنه يعمل عندما أخرج من تسجيل الدخول ثم أعود إليه مرة أخرى.

استخدام /etc/systemd/local-discourse.service وفقًا لهذا المنشور على hackernoon هذا لم ينجح. نعم، قمت بتفعيله وتشغيله، ويعمل عندما أشغله عبر systemctl start local-discourse، لكن حتى عندما يكون مفعلاً، لا يعمل بعد إعادة التشغيل.

لقد جربت التصحيح باستخدام:

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

وحتى باستخدام:

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

و… بالنسبة لجميع أو معظم الطرق المذكورة أعلاه، يتم طباعة جميع السجلات في ملف ~/start-discourse-log.txt. وحتى إنشاء ~/start-discourse-stdout.txt، لكن هذا الملف يبقى بحجم صفر إلى الأبد.


إذا نجح أي مما سبق معك، يرجى إخباري بأي طريقة نجحت.

هل تقصد للتطوير المحلي؟

نعم. أقوم بتشغيله محليًا وأستخدم Discourse على localhost:3030.

أعتقد أنني توصلت إلى فكرة حول ما الخطأ.

على الأقل بالطريقة التي اتبعتها مع .profile، لم يتم إضافة rbenv أو ما شابه إلى $PATH، مما يؤدي عند تشغيل سكريبت الخاص بي أمر bundle exec ... إلى ظهور خطأ يفيد بأن bundle غير موجود. أتساءل عما إذا كانت هذه هي المشكلة في الطرق الأخرى أيضًا.

لكنني لم أجرب ذلك بعد.

عذراً على هذا السؤال المبتدئ. لقد حصلت على إجابة من الإنترنت تقترح أن أستخدم المسار الكامل لـ bundle.

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

ثم قمت بتعديل سكريبتي ليصبح:

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

ثم قمت بتشغيل السكريبت في .profile بشكل غير متزامن باستخدام start-discourse &. وقد نجح الأمر.

عذراً على هذا السؤال غير المركز.