a_bet
(Andrea)
2023 年 12 月 27 日午後 3:04
1
こんにちは、Discourseコミュニティの皆さん、
DockerやLinuxのシステム管理全般については初心者です。Discourseを会社に導入しようと説得中で、まずはデモを求められました。そこで、Discourseを実際に動かしてみようとしています。
ローカルサーバーにDiscourseをセットアップしようとしていますが、いくつか問題が発生しており、皆様のお力をお借りしたいと思っています。以下に、私のセットアップの概要と、これまでに実行した手順をまとめました。
システムセットアップ:
オペレーティングシステム: Ubuntu 20.04.6 LTS
Dockerバージョン: 24.0.5, build 24.0.5-0ubuntu1~20.04.1
Discourseバージョン: 3.2
問題:
公式ガイド(https://github.com/discourse/discourse/blob/main/docs/INSTALL-cloud.md)に従ってDiscourseをクラウドサーバーにインストールしようとしていますが、`discourse-setup`スクリプトでPostgreSQL関連のエラーが発生しています。
実行した手順:
プロセスリストを確認し、PostgreSQLが実行中であることを確認しました。
PostgreSQLが正しいポート(5432)でリッスンしており、Unixソケットファイルが存在することを確認しました。
「discourse」データベースとユーザーが既に存在するというエラーが発生しましたが、psqlコマンドで確認したところ、データベースもユーザーもリストに表示されませんでした。
以下に使用したコマンドです。
PostgreSQLプロセスを確認: ps aux | grep postgres
PostgreSQLリッスンポートを確認: sudo netstat -plunt | grep postgres
Unixソケットファイルを確認: ls -l /var/run/postgresql/.s.PGSQL.5432
「discourse」データベースとユーザーを削除しようと試行: su postgres -c 'psql -c \"DROP DATABASE IF EXISTS discourse;\"' および su postgres -c 'psql -c \"DROP USER IF EXISTS discourse;\"'
データベースとユーザーをリスト表示: psql -c \"\\l\" および psql -c \"\\du\"
発生したエラー:
ERROR: database "discourse" already exists
ERROR: role "discourse" already exists
psql: error: FATAL: role "root" does not exist
これらのエラーにもかかわらず、「discourse」データベースとユーザーは、直接PostgreSQLで確認した際には存在しないように見えます。
ログには他にもエラーがありますが、現時点ではこれらが関連性の高いものだと考えています。
この問題の解決に向けて、どのようなガイダンスや提案でもいただけると大変助かります。同様の問題に遭遇した方はいらっしゃいますか?何が問題なのか、何か洞察をお持ちの方はいますか?
ご協力に感謝いたします。
Andrea
pfaffman
(Jay Pfaffman)
2023 年 12 月 28 日午前 1:55
2
Andrea:
プロセスリストを確認して、PostgreSQLが実行中であることを確認しました。
PostgreSQLが正しいポート(5432)でリッスンしており、Unixソケットファイルが存在することを確認しました。
PostgreSQLをインストールする必要はありません。標準的なインストールでは、Discourseはコンテナ内に独自のPostgreSQLを持っています。PostgreSQLのアンインストールまたは削除をお勧めします。既存のPostgreSQLを使用する理由がありますか?このマシンで他に何か実行されていますか?
これらはエラーではなく、デバッグメッセージだと思います。
スクリプトの最後に何と表示されましたか?
a_bet
(Andrea)
2023 年 12 月 28 日午前 9:58
3
@pfaffman様
返信ありがとうございます。
いいえ、このマシンはDiscord専用です。これらのエラーに気づいた後にPostgreSQLをインストールしました。
ログを添付できればよいのですが、まだできません。
最後の部分を以下に示します。
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse & sudo -H -E -u discourse bash -c '
set -o errexit
if [ $(git rev-parse --is-shallow-repository) == "true" ]; then
git remote set-branches --add origin main
git remote set-branches origin tests-passed
git fetch --depth 1 origin tests-passed
else
git fetch --tags --prune-tags --prune --force origin
fi
' failed with return #<Process::Status: pid 146 exit 128>
Location of failure: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"code", "cmd"=>["sudo -H -E -u discourse git reset --hard", "sudo -H -E -u discourse git clean -f", "sudo -H -E -u discourse bash -c '\n set -o errexit\n if [ $(git rev-parse --is-shallow-repository) == \"true\" \n]; then\n git remote set-branches --add origin main\n git remote set-branches origin $version\n git fetch --depth 1 origin $version\n else\n git fetch --tags --prune-tags --prune --force origin\n fi\n'", "sudo -H -E -u discourse bash -c '\n set -o errexit\n if [[ $(git symbolic-ref --short HEAD) == $version ]] ; then\n git pull\n else\n git -c advice.detachedHead=false checkout $version\n fi\n'", "sudo -H -E -u discourse git config user.discourse-version $version", "mkdir -p tmp", "chown discourse:www-data tmp", "mkdir -p tmp/pids", "mkdir -p tmp/sockets", "touch tmp/.gitkeep", "mkdir -p /shared/log/rails", "bash -c \"touch -a /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log\"", "bash -c \"ln -s /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log $home/log\"", "bash -c \"mkdir -p /shared/{uploads,backups}\"", "bash -c \"ln -s /shared/{uploads,backups} $home/public\"", "bash -c \"mkdir -p /shared/tmp/{backups,restores}\"", "bash -c \"ln -s /shared/tmp/{backups,restores} $home/tmp\"", "chown -R discourse:www-data /shared/log/rails /shared/uploads /shared/backups /shared/tmp", "[ ! -d public/plugins ] || find public/plugins/ -maxdepth 1 -xtype l -delete]"}
bootstrap failed with exit code 128
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
これからPostgreSQLのアンインストールを試みます。
よろしくお願いします。
Andrea
pfaffman
(Jay Pfaffman)
2023 年 12 月 28 日午前 11:36
4
メモリ不足です。スワップまたはRAMの増設が必要です。
free -h
で何が表示されますか?
「いいね!」 1
a_bet
(Andrea)
2023 年 12 月 28 日午後 5:59
5
約7GB空きがあります
total used free shared buff/cache available
Mem: 7.8Gi 319Mi 599Mi 13Mi 6.9Gi 7.1Gi
Swap: 975Mi 2.0Mi 973Mi
ガイドでは約2GBを推奨しています。
デフォルトの1GB RAMは、小規模なDiscourseコミュニティでは問題なく動作します。大規模なコミュニティには2GB RAMをお勧めします。
何か見落としていることはありますか?
pfaffman
(Jay Pfaffman)
2023 年 12 月 28 日午後 6:11
6
うーん。それは奇妙ですね。最近、RAM要件に関する奇妙な問題がいくつか報告されています。数回再試行してみてください。断続的に失敗するという報告もあります。
編集:すみません。127はRAMです。128は不明です。
最初から標準インストールを実行していますか?(OPでそう述べています)
サーバーがGitHubやその他のリポジトリにアクセスできないようにする何らかのファイアウォールの背後にいますか?
a_bet
(Andrea)
2023 年 12 月 28 日午後 6:20
7
はい、その通りです。GitHubのガイドに従っています。
問題がPostgreではなく、最後のメッセージにある場合、エラーが発生するログの箇所は以下の通りです。
set -o errexit
if [ $(git rev-parse --is-shallow-repository) == "true" ]; then
git remote set-branches --add origin main
git remote set-branches origin tests-passed
git fetch --depth 1 origin tests-passed
else
git fetch --tags --prune-tags --prune --force origin
fi
'
fatal: unable to access 'https://github.com/discourse/discourse.git/': server certificate verification failed. CAfile: none CRLfile:
none
そのマシンからリポジトリをクローンできるにもかかわらず、GitHubに正しく接続できていないようです。
pfaffman
(Jay Pfaffman)
2023 年 12 月 28 日午後 6:46
8
Dockerのネットワークの問題です。Dockerはどのようにインストールしましたか?アンインストールして、別の方法を試してみてください。
OSまたはネットワークにファイアウォールはありますか?DNSの問題である可能性もあります。いつも言われるように、問題はDNSであることが多いです。
a_bet
(Andrea)
2023 年 12 月 29 日午後 12:16
9
OSにファイアウォールがないことは承知していますが、Dockerのインストールに関する詳細はIT部門と話す必要があります。
どのようなDNSの問題が発生している可能性があるか、何かログのセクションやデバッグメッセージで役立つものはありますか(まだファイルを添付できません)。
a_bet
(Andrea)
2024 年 1 月 3 日午後 1:28
10
@pfaffman シェルの履歴にも詳細があることに気づきました。
63 sudo apt install docker.io
64 sudo apt remove containerd runc
65 sudo apt remove containerd
66 curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
67 echo \"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable\" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
68 sudo apt update
69 sudo apt install docker-ce
70 sudo apt upgrade
71 sudo apt install docker.io
pfaffman
(Jay Pfaffman)
2024 年 1 月 3 日午後 2:15
11
docker-ceとdocker.ioの両方をインストールすることはできないと思います。両方を削除してから、どちらか一方をインストールしてみてはいかがでしょうか。
私は通常https://get.docker.com/を使用します。新しいVMを取得して、それだけを使用します。