以前は動作していましたが、すべてのデータを失い、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 をターミナルを開くたびに実行しても構いませんが、より良い方法があると思いますし、ターミナルを開いたときのみ実行されることになります。
~/.profile に start-discourse-daemon を追加すると、~/start-discourse-stderr.txt に bundle: exec command not found というエラーが表示されます。しかし、ログアウトして再度ログインすると動作します。
この Hackernoon の投稿に従って /etc/systemd/local-discourse.service を作成しましたが、動作しません。確かに有効化して起動し、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 のままです。
上記の方法のいずれかがご自身で動作した場合は、どの方法が機能したか教えていただけますでしょうか。