みなさん、こんにちは!Discourse は初めてですが、すごく素晴らしいですね!一般的な技術スキルは多少ありますが、Docker や Linux VM の世界ではまだ初心者です。
Oracle Cloud で無料の Oracle VM を実行しており、Oracle Linux がインストールされています。こちらのステップを完了しました(https://blogs.oracle.com/developers/install-run-discourse-for-free-in-the-oracle-cloud)が、./discourse-setup を実行した際に常に以下のエラーメッセージが表示されます。discourse doctor を実行してみましたが、効果はありませんでした。何か原因がわかる方がいれば、ご教示いただければ幸いです。あらかじめありがとうございます!-Tim
[2021-06-11T04:09:29.733935 #1] INFO -- : > HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main
I, [2021-06-11T04:09:29.735773 #1] INFO -- : > sleep 5
2021-06-11 04:09:30.320 GMT [54] LOG: 0 8kB はパラメータ「shared_buffers」の有効範囲外です(16 .. 1073741823)
2021-06-11 04:09:30.322 UTC [54] FATAL: 設定ファイル「/etc/postgresql/13/main/postgresql.conf」にエラーが含まれています
I, [2021-06-11T04:09:34.739847 #1] INFO -- :
I, [2021-06-11T04:09:34.740097 #1] INFO -- : > su postgres -c 'createdb discourse' || true
createdb: エラー: データベース template1 に接続できませんでした: サーバーに接続できませんでした: そのようなファイルまたはディレクトリがありません
サーバーがローカルで実行されており、
Unix ドメインソケット「/var/run/postgresql/.s.PGSQL.5432」で接続を受け付けていますか?
I, [2021-06-11T04:09:34.860266 #1] INFO -- :
I, [2021-06-11T04:09:34.860745 #1] INFO -- : > su postgres -c 'psql discourse -c "create user discourse;"' || true
psql: エラー: サーバーに接続できませんでした: そのようなファイルまたはディレクトリがありません
サーバーがローカルで実行されており、
Unix ドメインソケット「/var/run/postgresql/.s.PGSQL.5432」で接続を受け付けていますか?
I, [2021-06-11T04:09:35.023423 #1] INFO -- :
I, [2021-06-11T04:09:35.023810 #1] INFO -- : > su postgres -c 'psql discourse -c "grant all privileges on database discourse to discourse;"' || true
psql: エラー: サーバーに接続できませんでした: そのようなファイルまたはディレクトリがありません
サーバーがローカルで実行されており、
Unix ドメインソケット「/var/run/postgresql/.s.PGSQL.5432」で接続を受け付けていますか?
I, [2021-06-11T04:09:35.137806 #1] INFO -- :
I, [2021-06-11T04:09:35.138325 #1] INFO -- : > su postgres -c 'psql discourse -c "alter schema public owner to discourse;"'
psql: エラー: サーバーに接続できませんでした: そのようなファイルまたはディレクトリがありません
サーバーがローカルで実行されており、
Unix ドメインソケット「/var/run/postgresql/.s.PGSQL.5432」で接続を受け付けていますか?
I, [2021-06-11T04:09:35.257190 #1] INFO -- :
I, [2021-06-11T04:09:35.257476 #1] INFO -- : 非同期プロセスを終了しています
FAILED
--------------------
Pups::ExecError: su postgres -c 'psql discourse -c "alter schema public owner to discourse;"' が失敗しました。戻り値: #<Process::Status: pid 80 exit 2>
エラーの発生場所: /pups/lib/pups/exec_command.rb:112:in `spawn'
以下のパラメータで exec が失敗しました: "su postgres -c 'psql $db_name -c \\\"alter schema public owner to $db_user;\\\"'"
14ef6216494c846091ea6ce48143e2f25018b9d2579b6d4d0021d605f7f5e145
** ブートストラップに失敗しました ** 上記のエラーメッセージをスクロールして確認してください。複数のエラーがある可能性があります。
こんにちは @Meathead40
私も同様の問題に直面しているようです。
6月にOracle FreeでDiscourseのセットアップを完了させました。その後、メール設定に関連するいくつかのパラメータを変更するために、セットアップスクリプトを再度実行しました。ログで特定できた最初のエラーは FATAL: configuration file \"/etc/postgresql/13/main/postgresql.conf\" contains errors ですが、私の環境ではそのファイルが存在しません。さらに、postgresqlサービスも実行されておらず(そもそもサービスとして利用可能すらない)、状況が異なります。
この問題を解決できましたか?同じ経験をした方はいらっしゃいますか?
よろしく
Stef
Falco
(Falco)
2021 年 8 月 2 日午後 6:13
3
free -m --si の出力を共有していただけますか?
Ed_S
(Ed S)
2021 年 8 月 2 日午後 6:32
4
コンテナの中を確認しましたか?また、shared_buffers が小さすぎるというログエントリも表示されましたか?
私の場合は以下の通りです:
# /var/discourse/launcher enter app
# egrep shared_buffers /etc/postgresql/13/main/postgresql.conf
shared_buffers = 128MB
exit
こんにちは @Falco さん、これはコマンドの出力です:
total used free shared buff/cache available
Mem: 703 359 86 7 257 207
Swap: 8388 246 8142
@Ed_S さん、こんにちは。以下のメッセージが表示されます。
/var/discourse/launcher enter app
Cannot connect to the docker daemon - verify it is running and you have access
Ed_S
(Ed S)
2021 年 8 月 3 日午前 8:37
7
同じファイルがここに表示されるはずです:
/var/discourse/shared/standalone/postgres_data/postgresql.conf
設定にエラーがあることを示すログエントリの直前に、エラーの内容を説明する行が表示されます。
ログは、おそらくこちらにあります:
/var/discourse/shared/standalone/log/var-log/postgres/current
ご提案ありがとうございます。追加情報を集めることができました。
これはエラー発生時のログです(以前のメッセージは数日前のもの):
2021-08-02 13:33:16.980 UTC [2419] LOG: received smart shutdown request
2021-08-02 13:33:28.273 UTC [2419] LOG: background worker "logical replication launcher" (PID 2442) exited with exit code 1
2021-08-02 13:33:28.344 UTC [2437] LOG: shutting down
2021-08-02 13:33:28.552 UTC [2419] LOG: database system is shut down
また、共有バッファの設定も取得しました:
shared_buffers = 128MB # min 128kB
#wal_buffers = -1 # min 32kB, -1 sets based on shared_buffers
Ed_S
(Ed S)
2021 年 8 月 3 日午前 9:31
9
ふむ、少し戻って確認させてください。その「FATAL」エラーが表示される直前に、どの程度の行数のコードが出力されていますか?
はい、サポートありがとうございます。
既存のインストールに対してセットアップを実行し、いくつかの設定パラメータを変更しようとしています。スクリプトの最初の部分は、以下を検出します。
sudo ./discourse-setup
which: no docker.io in (/sbin:/bin:/usr/sbin:/usr/bin)
which: no docker.io in (/sbin:/bin:/usr/sbin:/usr/bin)
The configuration file containers/app.yml already exists!
. . . reconfiguring . . .
Saving old file as app.yml.2021-08-03-102829.bak
Stopping existing container in 5 seconds or Control-C to cancel.
+ /bin/docker stop -t 30 app
app
Found 0GB of memory and 1 physical CPU cores
setting db_shared_buffers = 0MB
setting UNICORN_WORKERS = 0
containers/app.yml memory parameters updated.
その後、すべての設定パラメータを渡して最終的にビルドを行います。これがあなたが探している手がかりでしょう。
2021-08-03 10:30:37.709 GMT [55] LOG: 0 8kB is outside the valid range for parameter "shared_buffers" (16 .. 1073741823)
2021-08-03 10:30:37.713 UTC [55] FATAL: configuration file "/etc/postgresql/13/main/postgresql.conf" contains errors
Ed_S
(Ed S)
2021 年 8 月 3 日午前 10:57
11
stefanino:
Found 0GB of memory
それはあまり良い兆候ではありません!その数値は、以下のコマンドの出力から直接取得されるはずです。
free -g --si | awk ' /Mem:/ {print $2} '
これは 703 メガバイトと報告していますが、これは公式には Discourse が正常に動作するには小さすぎます。危険を承知で(そしてサポートは受けられませんが)実行したい場合は、以下の「マジックナンバー」990 を編集してみてください。
echo `uname -s`
}
##
## OS X available memory
##
check_osx_memory() {
echo `free -m | awk '/Mem:/ {print $2}'`
}
##
## Linux available memory
##
check_linux_memory() {
## some VMs report just under 1GB of RAM, so
## make an exception and allow those with more
## than 989MB
mem=`free -m --si | awk ' /Mem:/ {print $2}'`
if [ "$mem" -ge 990 -a "$mem" -lt 1000 ]; then
echo 1
else
より多くの RAM を備えた大規模なインスタンスが必要だと考えられます。
はい、これまでインスタンスは正常に動作しており、メモリチェックを無効にしてインストールされていました。これはおそらく、以下の投稿に関連しているようです。Discourse won't install because I have 960MB of ram and not 1GB - Discourse System Administration - Unix Linux Community
設定ファイルではまだチェックが無効になっていますが、何らかの理由で上書きされているのかもしれません。ご指示いただいた値を変更して試してみますので、その結果を報告します。
Ed_S
(Ed S)
2021 年 8 月 3 日午前 11:33
13
stefanino:
設定ファイルではまだチェックが無効になっています
ふむ、そこで行った作業によって大きく異なりますね。
設定の完了と再構築に成功しました。手順は以下の通りです。
/var/discourse/discourse-setup 内のメモリチェック(#check_disk_and_memory )をコメントアウトしました(これが本当に必要かどうかはわかりません)。
/var/discourse フォルダから sudo ./discourse-setup コマンドを実行しました(これにより /var/discourse/containers/app.yml ファイルが生成され、ビルドが開始されますが、前述のように失敗します)。
app.yml を編集し、db_shared_buffers: “128MB” と UNICORN_WORKERS: 1 を明示的に設定しました。
/var/discourse フォルダから sudo ./launcher rebuild app を実行して再構築を開始しました。
これは要件の限界に近い設定ですが、インスタンスの挙動を注視して対応していきます。
サポートありがとうございました。
Ed_S
(Ed S)
2021 年 8 月 3 日午後 1:09
15
整理してくださりありがとうございます。リンクされているスレッド、およびそれが参照しているこちらのスレッドでは、私には「マジックフォギブネス」の値である 990 を、ご自身のシステムを表す値に変更する方がはるかに望ましいと感じられます。「メモリチェックの無効化」は実際にはトラブルを引き起こしています。
Discourse チームは、サポート対象と非サポート対象の構成を区別する明確な基準値を設定する必要があり、正式には 1G を下限とし、990 への緩和を設けています。しかし、私には 960 は 990 と非常に近い値であり、同様の理由で発生しているように思えます。一方、703 は明らかに大きく異なる値です!
エドさん、こんにちは。
承知いたしました。番号を変更します。
メモリ量がこれほど少ないとは驚きです。Oracle の無料ティアのインスタンス仕様では 1GB と記載されていますが、実際に使えるのはその 60〜70% 程度となっています。なぜそのような仕様になっているのか、理由がわからず少し混乱しています。
Ed_S
(Ed S)
2021 年 8 月 3 日午後 2:59
17
以前も触れられていますが、Oracle は少しずるいことをしているようです。実際には 1GB 未満のメモリを提供しながら、説明では切り上げて記載しているのです:
編集:関連ブログ をご覧ください:
おそらく最も重要な見落としは、デフォルトのサーバーイメージを使用しないこと です。Discourse は 1GB の RAM(またはそれに近い量 )を必要としますが、何らかの理由で Oracle Linux イメージでは十分なメモリが残っていません。CentOS が動作するかどうかは分かりませんが、Ubuntu イメージは問題ありません。ただし、「Minimal」インストールではなく、フルインストール2 を選択することを忘れないでください。
jericson
(Jon Ericson)
2021 年 8 月 3 日午後 6:41
18
デフォルトの Oracle Linux には、Discourse のインストールに不要なものが多数含まれているのではないかと疑っています。おそらく、その主なユースケースは Oracle データベースサーバーのホスティングでしょう。 幸いにも、Ubuntu イメージは問題なく動作しています。私の テストサイト/コメントホスト もまだ稼働しています。(ただし、アクティビティはあまりありませんが。)