2017-04-03 106 views
0

我有連接到我的EC2在線境界麻煩。我有一個EC2實例正在運行。我跑了start-object-server.command。我粘貼了我的setupRealm()方法的代碼。麻煩連接到域服務器上的AWS EC2

let address = "XX.YYY.ZZZ.AA:9080" // "IPv4 PublicIP" from my EC2 dashboard 
var httpURL: URL! { return URL(string: "http://" + address)! } 
var realmURL: URL! { return URL(string: "realm://" + address)! } 

func setupRealm() { 
    // My credentials when setting up the Realm admin dashboard after launching realm object server. 
    let username = "[email protected]" 
    let password = "XXXX" 

    let credentials = SyncCredentials.usernamePassword(username: username, password: password) 

    SyncUser.logIn(with: credentials, server: httpURL) { user, error in 
     guard let user = user else { 
      print(String(describing: error!)) 
      return 
     } 
     ... 
    } 
} 

SyncUser.logIn產生這個錯誤:

Error Domain=NSURLErrorDomain Code=-1004 "Could not connect to the server." 
UserInfo={NSUnderlyingError=0x600000059680 {Error Domain=kCFErrorDomainCFNetwork Code=-1004 "(null)" 
UserInfo={_kCFStreamErrorCodeKey=61, _kCFStreamErrorDomainKey=1}}, 
NSErrorFailingURLStringKey=http://XX.YYY.ZZZ.AA:9080/auth, 
NSErrorFailingURLKey=http://XX.YYY.ZZZ.AA:9080/auth, _kCFStreamErrorDomainKey=1, _kCFStreamErrorCodeKey=61, 
NSLocalizedDescription=Could not connect to the server.} 

我也不能使用域瀏覽器登錄到我的境界同步,雖然我能打開本地(非同步)從領域iOS模擬器。我正在運行最新版本的Realm瀏覽器。

什麼奇怪的是,一個星期前,我能夠連接到同時使用我的應用程序和瀏覽器,以及與境界同步另一個應用程序的EC2境界。我比較的代碼,他們基本上是相同的 - 我發現任何差異,我很有信心,他們並不重要(我已經試圖改變一些東西回來,但沒有成功。)

自從它開始工作以來,我已經安裝了最新的macOS更新以及Realm 2.5更新。我在更新領域時遇到了一些麻煩,並且幾次安裝並重新安裝它們,但我相信它正常運行,再次,最新版本的一切。我不認爲我改變了其他任何東西,我不記得了。

不幸的是,我居然不記得我設置了EC2服務器進程 - 那就是:

  • 我不認爲我做了AMI的東西做的。我不記得安裝任何,或類似的東西。雖然我的EC2實例的確有一個AMI ID:realm-object-server-hvm-20170309 (ami-d518b9c3)。所以也許我做了。
  • 我有我在一個安全的地方密鑰對上我的房屋,我想我用它在某一點的東西......但我不記得了。
  • 我覺得我用我的公用DNS在某些點的東西......但我不記得了。

什麼我記得是:

  • 我沒有使用的CocoaPods什麼。我拖入Realm框架,並做了import RealmSwift(雖然我已經安裝和使用CocoaPods的其他東西,將罰款轉換這些項目使用CocoaPods)
  • instructions to install Realm Object Server我做的唯一的事情是安裝macOS捆綁並運行start-object-server.command啓動服務器。過去我沒有做過任何事情。沒有配置或安全組或任何東西。我沒有做任何這些,因爲我是一個相對的初學者,我不明白最多,如果有的話(用swift做得很好,但所有這些終端代碼和服務器的東西一般都在我的頭上)。例如,我不太瞭解任何「強制性設置」部分,比如如何在配置文件中指定設置,或者如何將它們作爲命令行參數。
  • 同樣的,我不清楚,當有必要在終端上運行的服務器。我今天才意識到,localhost:9080有時不起作用的原因是因爲我沒有運行服務器。

我確定我做了很多錯誤的事情,但奇怪的是,這一切都用於工作,即使所有的事情我可能做錯了或遺漏了。我希望有人能幫幫忙。非常感謝。


PS。當我嘗試以各種方式訪問​​我的領域時,以下是Realm瀏覽器的行爲方式:

(您可以通過選項的數量來看我試着說我真的不知道哪個是哪個/哪個應該再次使用,其中一個過去有效,但我不記得是哪個)

打開同步URL,realm://XX.YYY.ZZZ.AA:9080/~/給出了「請提供有效憑證訪問此領域」對話框。我很確定我輸入了正確的憑證。

打開同步URL,http://XX.YYY.ZZZ.AA:9080/~/葉禁用

連接到對象服務器,realm://XX.YYY.ZZZ.AA:9080/給出了「連接」按鈕「無法連接到服務器。」

連接到對象服務器,http://XX.YYY.ZZZ.AA:9080/離開「連接」按鈕禁用

回答

1

I've got an EC2 instance running. I've run start-object-server.command .

start-object-server.command是運行境界對象服務器的本地實例;可通過http://localhost:9080訪問。您可能需要小心,因爲如果您在本地運行ROS的本地實例,並嘗試在AWS上遠程連接一個實例,那麼您最終可能會與哪個服務器通話,可能存在一些混淆。 :)

I've pasted the code for my setupRealm() method.

該代碼看起來正確。請記住,如果您運行的是start-object-server.command,那麼您將自動獲得ROS的localhost實例,因此目前您的EC2實例上不會存在這些憑據。

I also can't log in to my synced realm using the Realm Browser, though I am able to open local (non-synced) realms from the iOS simulator. And I am running the latest version of Realm Browser.

這是正常的行爲。您可以在瀏覽器中打開本地Realm文件,但對於使用Realm Mobile Platform創建的文件,您需要連接到它們;你不能直接打開它們。如果您無法連接到Realm,那意味着Realm Mobile Platform沒有運行,或者未正確配置正確的URL。


我有一個設置我自己的EC2實例,我得到它按預期工作。您可以判斷它是否正常工作,因爲您應該能夠使用端口9080導航到您的公共DNS URL並查看Realm Mobile Platform儀表板登錄頁面。 (例如'http://ec2-00-000-000-00.compute-1.amazonaws.com:9080')。

當您設置EC2實例時,Realm移動平臺本身可能未安裝。如果是這樣的話,你可以很容易地通過手動通過SSH連接到您的實例和運行Ubuntu的安裝腳本安裝RMP:

# Setup Realm's PackageCloud repository 
curl -s https://packagecloud.io/install/repositories/realm/realm/script.deb.sh | sudo bash 

# Update the repositories 
sudo apt-get update 

# Install the Realm Object Server 
sudo apt-get install realm-object-server-developer 

# Enable and start the service 
sudo systemctl enable realm-object-server 
sudo systemctl start realm-object-server 

但問題的關鍵是,你需要確認你可以訪問你的境界手機平臺儀表板EC2上,以確認對象服務器確實正在運行,並且你已經設置了正確的憑據。祝你好運!

+0

謝謝你的回答蒂姆!當我用8080導航到我的公共DNS時,我什麼都沒有。 (「網站無法訪問」)。我想嘗試下一步,但我不知道如何通過SSH或任何這些東西進行連接。 –

+0

不用擔心喬納森!出於好奇,你使用哪種AMI?只要你保存你的私人''。pem'文件,您可以在EC2儀表板中點擊您的實例上的'連接',它將解釋如何通過SSH進入它。 – TiM

+0

我的AMI是realm-object-server-hvm-20170309(ami-d518b9c3)。我在https://github.com/realm/realm-mobile-platform/issues/166#issuecomment-291658263上啓動了GitHub上關於此的一個線程,並且如果您對某些事情(包括私鑰和內容)做出了迴應想要在那裏遷移。在我上牀睡覺前檢查一下,所以我會嘗試連接明天,但我只想給你ami info :) –