4

meteor アプリをリモート データベースに接続したいと考えています。サーバー上にデータベースをセットアップするアプリと、アプリをホストするが他のサーバー上のデータベースに接続するアプリの 2 つのアプリを展開できると考えました。これを機能させるのに問題がありますが、これが推奨されるかどうかも疑問に思っていますか? mup/meteor なしでサーバーに mongodb データベースをセットアップする必要がありますか、それとも mup を使用してセットアップできますか?

私が試したこととうまくいかないこと:

2 つの amazon ec2 インスタンス (ubuntu 14.04) を使用しています。両方のインスタンスに対して、次のセキュリティ インバウンド ルールを作成しました。

Custom TCP Port: 27017 Source: instance-public-ip-1/32
Custom TCP Port: 27017 Source: instance-public-ip-2/32
HTTP Port: 80 Source: All Addresses
SSH Port: 22 Source: My IP

リモート データベースにアクセスしようとしているアプリの mup.json ファイルで、"MONGO_URL": "mongodb://db-instance-public-ip:27017/db" を "env" の下に追加しました。db はの名前ですそのインスタンスのアプリ。

データベースをホストする meteor アプリは正常にデプロイされますが、アプリをホストする meteor アプリはデプロイされません。「デプロイ プロセスの呼び出し」中にデプロイが失敗し、STDERR/STDOUT は次のようになります (XXX.XXX.XXX.XXX はインスタンスのパブリック IP アドレスです)。

x 展開プロセスの呼び出し: FAILED

-----------------------------------STDERR-----------------------------------
npm WARN package.json meteor-dev-bundle@0.0.0 No description
npm WARN package.json meteor-dev-bundle@0.0.0 No repository field.
npm WARN package.json meteor-dev-bundle@0.0.0 No README data

/usr/lib/node_modules/wait-for-mongo/bin/wait-for-mongo:14
    throw err;
          ^
Error: TIMEOUTED_WAIT_FOR_MONGO
    at null._onTimeout (/usr/lib/node_modules/wait-for-mongo/lib/waitForMongo.js:20:14)
    at Timer.listOnTimeout [as ontimeout] (timers.js:112:15)
-----------------------------------STDOUT-----------------------------------
56.145:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
wait-for-mongo: failed to connect to [XXX.XXX.XXX.XXX:27017]
----------------------------------------------------------------------------

さらに情報が必要な場合はお知らせください。質問はこちらにも投稿されています: https://github.com/arunoda/meteor-up/issues/450

4

1 に答える 1

5

編集: mongodb にすべてのインターフェイスをリッスンさせましたが、これはセキュリティ上のリスクです。

デフォルトでは、デプロイされた meteor がデータベースを作成すると、mongodb 構成は 127.0.0.1 での接続のみをリッスンするように設定されます (mongodb の bind_ip オプション)。127.0.0.1 とインスタンスのプライベート IP の両方をリッスンするようにこの設定を変更すると、問題が解決し、リモート データベースを正常にデプロイして使用できるようになりました。誰でもデータベースに接続できるようにするため、bind_ip オプションをコメントアウトしないでください。適切なセキュリティ ルールを使用すると、人々が接続するのを防ぐことができますが、mongodb 構成で「最小特権の原則」に従うことをお勧めします。

この設定を変更するに/etc/mongod.confは、データベースのあるインスタンスでファイルを編集します。データベースをホストするインスタンスのプライベート IP を の行に追加しますbind_ip = 127.0.0.1

編集後の 17 ~ 18 行目/etc/mongod.conf(XXX.XXX.XXX.XXX は、データベースを持つインスタンスのプライベート IP アドレスです):

# Listen to local interface only. Comment out to listen on all interfaces. 
bind_ip = 127.0.0.1,XXX.XXX.XXX.XXX

mongo 構成ファイルの詳細については、http: //docs.mongodb.org/manual/reference/configuration-options/を参照してください。

db.serverCmdLineOpts()この質問に対する Adam Comerford の回答のおかげで、mongo シェルで実行してこのファイルを見つけました.

于 2015-05-28T17:49:11.133 に答える