Port already in use, what to do?

This (port conflict) was handled in the script a while ago. Needing to proxy is a whole other deal there are howto topics on that.

This is the guide that the script links to but I don’t want to tear down my production website just to install discourse.

This guide assumes you already have Discourse working - if you don't, it may be hard to tell whether or not the configuration is working.

このトピックが役立つものだったため、3 年前のものですが追加させていただきます。本日、ポート使用中の問題に遭遇し、何が起きたのか少々困惑しています。もし他の誰かが同じ状況に陥った場合に備えて、出来事の順序を記録しておきます。

背景:Ubuntu 16.04.3 LTS を実行中(18.04 へのアップグレードはあまりにも恐くてできません)、Discourse 2.3.x(どのバージョンかは不明、その理由は後述します)。

app.yml に(関係のない)変更を加え、アプリを再構築しました。

また、Ubuntu が再起動を求めていたことに気づき(理由は確認しませんでした)、Ubuntu も再起動しました。

その結果、ポートエラーの問題が発生しました。

Apache2 が突然実行されていたことに気づき、無効化しました:
root@Discourse:~# sudo update-rc.d apache2 disable
insserv: warning: current start runlevel(s) (empty) of script apache2' overrides LSB defaults (2 3 4 5). insserv: warning: current stop runlevel(s) (0 1 2 3 4 5 6) of script apache2’ overrides LSB defaults (0 1 6).

その後、ポートが解放されたため、ようやくフォーラムが復活しました。

しかし、なぜこれが起きたのか理解できません。Apache2 はどこから来たのでしょうか?

再起動直後にフォーラムをテストすべきでした、あちゃ。Discourse のアップグレードが原因だったのか、Ubuntu の再起動が原因だったのか、今はわかりません(おそらくログに記録されているのでしょうが、Linux にはもうあまり詳しくないのです)。Discourse 2.5 は現在 Apache2 をインストールするのかどうか、フォーラムで探してみましたが、見つかりませんでした。

良い点は、Discourse のアップグレードが長らく遅れていたことです。ただ、過去 5 年間でほぼ 2 回に 1 回の割合でこのような問題に遭遇してきたため、最近はアップグレードに非常に消極的です。それでも、Discourse は大好きですが…

説明から判断すると、次のアップグレードで問題が発生するかどうかを確認する最善の方法は、3日連続でアップグレードすることです。それくらい簡単に行えるはずです!

一般的に、最後の Discourse アップグレードから1年以上経過している場合は、./launcher rebuild app が必要になることを想定してください。もちろん、/admin/upgrade をより頻繁に確認することをお勧めします :slight_smile:

app.yml が別の名前を参照している場合は、以下のコマンドを実行する必要があります。

  ./launcher stop irrelevant 

または、名前を変更して再構築してください。

Discourse は、インストールの前提条件として docker を除き、コンテナの外には何もインストールしません。

おそらく、最後の再起動後に Apache2 がインストールされ、マシンを再起動するまでポートを確保できなかったのでしょう。手動でインストールされたパッケージを確認するには、bash の履歴を grep で検索してください。

みなさん、アイデアをありがとう。

rebuild app は使いました。Discourse のインストールで何も追加されないと思っていたので(nginx や Apache2 が何かの新しい機能としてデフォルトで入ってくるのかと思っていたのですが)…ふむ。自分自身で Apache2 を追加した覚えはありません。

、そうか。この DigitalOcean の Ubuntu を Discourse 専用 として何年も使ってきましたが、実は 1 月に Subversion をインストールした際に、再起動せずに Apache も一緒にインストールされていたようです。Apache を無効化しても必要な機能は残っているので問題ありません。

インストール時に余計なものが追加されることに慣れていなかったようです(Apache が何かの用途で必要なのは確かですが)。そんなことは Windows や Android でよくあることですよね :D。

ご迷惑をおかけしてすみません。とはいえ、これは実際のユースケースの事例なので、開発者として読むのもいつも良い経験になります。