2017-04-03 108 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 :) –