我之前能让它正常工作,但后来丢失了所有数据并重新安装了 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 文件,但该文件大小会一直保持在 0。
如果以上任何方法对你有效,请告诉我具体是哪一个。