1marc1
2020 年 4 月 9 日午後 12:41
1
こんにちは、
Discourse の初心者で、インストール中に詰まってしまいました。Ubuntu Server 18.04 の仮想マシンを構築し、インストール手順 を大まかに追って進めました。
「大まかに」というのは、クラウドサーバーではなく Ubuntu Server を使用している点です。Docker は事前にインストールせず、discourse-setup に任せてインストールさせました。また、メールサーバーは未設定ですが、セットアッププロセスには妥当な回答を入力しました。これが致命的な問題なのかはわかりません。DNS はすべて設定済みで、サーバーには静的 IP アドレスが割り当てられています。
ブートストラップ後、サーバーの FQDN にアクセスすると、「Congratulations, you installed Discourse!」ではなく「Welcome to nginx!」というページが表示されます。
このインストールはラボ環境用であり、外部からはアクセスできません。
Marc。
pfaffman
(Jay Pfaffman)
2020 年 4 月 9 日午後 12:47
2
サーバーに nginx はインストールされていますか?インストールされているべきではありません。discourse-setup が検出するはずです。DNS の設定は正しいですか?
1marc1
2020 年 4 月 9 日午後 12:59
3
サーバーに Nginx がインストールされていません。DNS に関しては、サーバー用に A レコードと PTR レコードを設定しています。他に必要な要件はありますか?
Marc.
Stephen
(Stephen)
2020 年 4 月 9 日午後 2:41
4
そのページが表示されるのは、DNS を誤ったサーバーに設定している場合か、NGINX がコンテナ外でポート 80 を占有し、コンテナからの応答を妨げている場合のみです。
「いいね!」 2
1marc1
2020 年 4 月 10 日午後 1:26
5
Web ブラウザをサーバーの IP アドレスに直接指しても、Nginx のウェルカムページが表示されます。
Ubuntu サーバーに SSH で接続している場合:
marc@community:~$ locate nginx
/var/discourse/image/base/install-nginx
marc@community:~$
さらに、Ubuntu サーバー上で実行している場合:
sudo find / -iname "*nginx*"
…/var/lib/docker/overlay2 下に多数のファイルが…
/var/discourse/image/base/install-nginx
/var/discourse/shared/standalone/letsencrypt/deploy/nginx.sh
/var/discourse/shared/standalone/log/var-log/nginx
1marc1
2020 年 4 月 10 日午後 1:31
7
コマンド lsof -i:80 は何も出力しません。
Stephen
(Stephen)
2020 年 4 月 10 日午後 1:31
8
では、ポート80には何もリスニングしていないということでしょうか?
Dockerが:80でリスニングしている場合(正常なインストールではこれが達成され、コンテナ内のnginxが何かを認識するために必要となります)、以下のような表示が得られるはずです:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
docker-pr 890 root 4u IPv6 961922 0t0 TCP *:http (LISTEN)
コンテナ外にnginxがインストールされておらず、Dockerもそのポートでリスニングしていない場合、nginxのウェルカムページが表示される唯一の可能性は、ネットワーク設定の誤りです。
1marc1
2020 年 4 月 10 日午後 1:35
9
おっしゃる通りのようです。サーバーの IP アドレスに対して私のラップトップで nmap を実行した結果は以下の通りです。
Starting Nmap 7.01 ( https://nmap.org ) at 2020-04-10 23:34 AEST
Nmap scan report for community.aureus-group-sb.com (192.168.12.35)
Host is up (0.0010s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
22/tcp open ssh
MAC Address: 0C:8B:FD:CD:AF:EB (Intel Corporate)
Nmap done: 1 IP address (1 host up) scanned in 1.74 seconds
Stephen
(Stephen)
2020 年 4 月 10 日午後 1:38
10
ネットワークの問題は、以下に限定されず、以下のようなものが考えられます。
VM 側のポリシーによるアクセス制限(ufw など)
仮想サーバー側のポリシーによるアクセス制限(ネットワークモードの不適切な設定)
ネットワーク側のポリシーの不適切な設定(サブネット間の ACL など)
DNS の不適切な設定
上記のいずれも当てはまらない場合のみ、Discourse に問題があると言えます。標準的なインストール手順に従っているとのことですが、ご自身でも認めている通り、標準とは程遠い環境でのインストールとなっています。
もし貴組織で月額 5 ドルの費用を負担できるのであれば、時間を考慮すると、クラウド上に設置し、クラウド VPS のファイアウォールを貴社の環境からのみページを返すように制限する方が、結果として安上がりになるかもしれません。
「いいね!」 2
1marc1
2020 年 4 月 10 日午後 1:54
11
現時点では、このセットアップの学習面が主な目的です。これを掌握できたら、ホスティングオプションを検討する予定です。
挙げられたネットワークの側面についてですが、
ufw は非アクティブで、iptables が実行されています:Ubuntu サーバーのデフォルトインストールに変更を加えていません。
** iptables の設定を確認すると、input チェーンのポリシーは「すべて許可」で、output チェーンも同様です。forward チェーンには Docker 関連の参照がいくつかあります(下記参照)。
VM の vNIC はブリッジモードで構成されており、物理ネットワークに直接接続されています。
作業中のラップトップと VM は同じサブネット上にあります。
DNS の正確な要件については確信が持てません。仕様を探してみましたが、決定的なドキュメントは見つけられませんでした。DNS に関しては、サーバーを名前で、FQDN で、IP アドレスでそれぞれ ping が通ります。DNS に関連して他に何が必要かについては確信が持てません。
Stephen
(Stephen)
2020 年 4 月 10 日午後 1:58
12
VM と外部世界の間にはどのようなネットワークポリシーが存在しますか?
git pull が成功し、discourse-setup を実行できた場合、コンテナの内容を GitHub からダウンロードするために接続するのを妨げるものはありましたか?
サーバーがアクセス可能なアドレスを持っていない場合、Let’s Encrypt は失敗します。HTTPS を無効にするために YML を変更しましたか?
「いいね!」 1
1marc1
2020 年 4 月 10 日午後 2:02
13
VM はインターネットに接続でき、GitHub へのアクセスに制限はありません。discourse-setup を実行する際、Let’s Encrypt アカウントのメールアドレス?(スキップするには Enter を押してください)[me@example.com]: のオプションを空白のままにしました。
YML ファイルは変更していません。
Stephen
(Stephen)
2020 年 4 月 10 日午後 2:05
14
そのフィールドを空白のままにすると、証明書の問題に関するアラートは受け取れませんが、コンテナが Let’s Encrypt の有効化を試みることは防げません。
はい、いくつかの大きな問題に焦点を当てましたが、それらは元の投稿(OP)とは関係ありません。ネットワーク上に nginx が存在し、ページを表示しているようですが、仮想マシン上でのテストでは nginx がインストールされていないか、Docker がリッスンしていないことになります。
その状況がどうなっているのかを特定したら、次のステップは YML ファイルを正しく設定することです。現時点では、そのページを表示している原因を特定する必要があります。
「いいね!」 2
1marc1
2020 年 4 月 10 日午後 2:06
15
私も同じことを思っていました。そのページがどこから来ているのか、調べてみます。
「いいね!」 1
1marc1
2020 年 4 月 10 日午後 2:17
16
私が学んだことは以下の通りです。サーバーをシャットダウンすると、IP アドレス、名前、FQDN すべてに対して ping が通らなくなります。IP アドレスにアクセスすると、Firefox から標準的な「接続できません」ページが表示されます。
したがって、IP アドレスの競合は発生していないと結論付けられます。
VM の電源を入れた後、ブラウザからの接続もできなくなり、再び標準的な「接続できません」ページが表示されます。この動作は、lsof -i:80 の出力から予想されていたものと一致しています。
1marc1
2020 年 4 月 10 日午後 2:30
17
docker exec -it <cont.id> /bin/bash でコンテナの中を確認し、ps aux の出力をチェックしました。そこに以下の行がありました:
root 2030 0.2 0.0 2160 1328 ? Ss 14:10 0:01 runsv nginx
つまり、コンテナ内で nginx が実行されているようですが、nsenter -t 1446 -n netstat -plnt の出力は以下の通りです:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:3000 0.0.0.0:* LISTEN 3606/unicorn master
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 3590/postmaster
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 3591/redis-server *
tcp6 0 0 :::5432 :::* LISTEN 3590/postmaster
tcp6 0 0 :::6379 :::* LISTEN 3591/redis-server *
これは、コンテナがポート 80 と 443 でリスンしていないことを示しているのでしょうか?
riking
(Kane York)
このトピックを分割しました:
2020 年 4 月 22 日午後 7:41
18