问题

我正在尝试在虚拟机(ubuntu 16.04)上构建和部署apprtc应用程序。我已经成功部署了对撞机服务器。但是尝试使用Google App Engine启动apprtc应用程序时出现错误。

遵循的步骤


https://github.com/webrtc/apprtc克隆源代码
根据文档启动对撞机服务器(在端口8080上监听)
转到apprtc目录并使用命令npm install安装节点软件包。
使用命令“ grunt build”成功构建apprtc应用程序。
https://cloud.google.com/appengine/docs/standard/java/download安装google app引擎(appengine-java-sdk-1.9.62)
使用以下命令运行apprtc应用程序:

DIRECTORY_PATH/appengine-java-sdk-1.9.62/bin/dev_appserver.sh out/app_engine/.



出现这样的错误

Executing [/usr/lib/jvm/java-8-oracle/jre/bin/java, -javaagent:/home/jishnu/manaf/appengine-java-sdk-1.9.62/lib/agent/appengine-agent.jar, -classpath, /home/jishnu/manaf/appengine-java-sdk-1.9.62/lib/appengine-tools-api.jar, com.google.appengine.tools.development.DevAppServerMain, --property=kickstart.user.dir=/home/jishnu/manaf/apprtc, /home/jishnu/manaf/apprtc/out/app_engine/.]
Feb 08, 2018 5:00:03 PM java.util.prefs.FileSystemPreferences$1 run
INFO: Created user preferences directory.
Feb 08, 2018 5:00:06 PM com.google.apphosting.utils.config.AppEngineWebXmlReader readAppEngineWebXml
SEVERE: Received exception processing /home/jishnu/manaf/apprtc/out/app_engine/WEB-INF/appengine-web.xml
com.google.apphosting.utils.config.AppEngineConfigException: Could not locate /home/jishnu/manaf/apprtc/out/app_engine/WEB-INF/appengine-web.xml
    at com.google.apphosting.utils.config.AppEngineWebXmlReader.getInputStream(AppEngineWebXmlReader.java:141)
    at com.google.apphosting.utils.config.AppEngineWebXmlReader.readAppEngineWebXml(AppEngineWebXmlReader.java:75)
    at com.google.apphosting.utils.config.EarHelper.readWebModule(EarHelper.java:178)
    at com.google.appengine.tools.development.ApplicationConfigurationManager$WarModuleConfigurationHandle.readConfiguration(ApplicationConfigurationManager.java:417)
    at com.google.appengine.tools.development.ApplicationConfigurationManager.<init>(ApplicationConfigurationManager.java:158)
    at com.google.appengine.tools.development.ApplicationConfigurationManager.newWarConfigurationManager(ApplicationConfigurationManager.java:100)
    at com.google.appengine.tools.development.ApplicationConfigurationManager.newWarConfigurationManager(ApplicationConfigurationManager.java:86)
    at com.google.appengine.tools.development.DevAppServerImpl.<init>(DevAppServerImpl.java:142)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at com.google.appengine.tools.development.DevAppServerFactory.doCreateDevAppServer(DevAppServerFactory.java:338)
    at com.google.appengine.tools.development.DevAppServerFactory.access$000(DevAppServerFactory.java:31)
    at com.google.appengine.tools.development.DevAppServerFactory$1.run(DevAppServerFactory.java:285)
    at com.google.appengine.tools.development.DevAppServerFactory$1.run(DevAppServerFactory.java:282)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.google.appengine.tools.development.DevAppServerFactory.createDevAppServer(DevAppServerFactory.java:281)
    at com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:348)
    at com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:45)
    at com.google.appengine.tools.development.DevAppServerMain.run(DevAppServerMain.java:223)
    at com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:214)
Caused by: java.io.FileNotFoundException: /home/jishnu/manaf/apprtc/out/app_engine/WEB-INF/appengine-web.xml (No such file or directory)
    at java.io.FileInputStream.open0(Native Method)
    at java.io.FileInputStream.open(FileInputStream.java:195)
    at java.io.FileInputStream.<init>(FileInputStream.java:138)
    at java.io.FileInputStream.<init>(FileInputStream.java:93)
    at com.google.apphosting.utils.config.AppEngineWebXmlReader.getInputStream(AppEngineWebXmlReader.java:137)
    ... 21 more

com.google.apphosting.utils.config.AppEngineConfigException: Invalid configuration
    at com.google.appengine.tools.development.DevAppServerImpl.reportDeferredConfigurationException(DevAppServerImpl.java:435)
    at com.google.appengine.tools.development.DevAppServerImpl.doStart(DevAppServerImpl.java:232)
    at com.google.appengine.tools.development.DevAppServerImpl.access$000(DevAppServerImpl.java:47)
    at com.google.appengine.tools.development.DevAppServerImpl$1.run(DevAppServerImpl.java:219)
    at com.google.appengine.tools.development.DevAppServerImpl$1.run(DevAppServerImpl.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:217)
    at com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:368)
    at com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:45)
    at com.google.appengine.tools.development.DevAppServerMain.run(DevAppServerMain.java:223)
    at com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:214)
Caused by: com.google.apphosting.utils.config.AppEngineConfigException: Invalid appengine-web.xml(/home/jishnu/manaf/apprtc/out/app_engine/WEB-INF/appengine-web.xml) - Could not locate /home/jishnu/manaf/apprtc/out/app_engine/WEB-INF/appengine-web.xml
    at com.google.apphosting.utils.config.EarHelper.readWebModule(EarHelper.java:180)
    at com.google.appengine.tools.development.ApplicationConfigurationManager$WarModuleConfigurationHandle.readConfiguration(ApplicationConfigurationManager.java:417)
    at com.google.appengine.tools.development.ApplicationConfigurationManager.<init>(ApplicationConfigurationManager.java:158)
    at com.google.appengine.tools.development.ApplicationConfigurationManager.newWarConfigurationManager(ApplicationConfigurationManager.java:100)
    at com.google.appengine.tools.development.ApplicationConfigurationManager.newWarConfigurationManager(ApplicationConfigurationManager.java:86)
    at com.google.appengine.tools.development.DevAppServerImpl.<init>(DevAppServerImpl.java:142)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at com.google.appengine.tools.development.DevAppServerFactory.doCreateDevAppServer(DevAppServerFactory.java:338)
    at com.google.appengine.tools.development.DevAppServerFactory.access$000(DevAppServerFactory.java:31)
    at com.google.appengine.tools.development.DevAppServerFactory$1.run(DevAppServerFactory.java:285)
    at com.google.appengine.tools.development.DevAppServerFactory$1.run(DevAppServerFactory.java:282)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.google.appengine.tools.development.DevAppServerFactory.createDevAppServer(DevAppServerFactory.java:281)
    at com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:348)
    ... 3 more


预期成绩

根据文档,在此步骤之后,我们应该使用http://localhost:443网址成功访问apprtc应用程序。

我遵循的步骤的实际问题是什么?

最佳答案

com.google.apphosting.utils.config.AppEngineConfigException:无法找到/home/jishnu/manaf/apprtc/out/app_engine/WEB-INF/appengine-web.xml


好吧,从apprtc/src/app_engine/app.yaml看来,该应用程序是python应用程序,而不是Java应用程序。 python应用程序没有WEB-INF/appengine-web.xml

因此,您需要:


在gcloud SDK中安装python支持(如果尚未安装)或使用GAE python SDK(请参见What is the relationship between Google's App Engine SDK and Cloud SDK?
运行python开发服务器,具体取决于您使用的SDK:

<gcloud_sdk>/bin/dev_appserver.py out/app_engine/.


要么

<gae_python_sdk>/dev_appserver.py out/app_engine/.



这在您引用的源代码页面的apprtc README.md中或多或少地指定了:


  在本地运行AppRTC需要Google App Engine SDK for Python


...


  通过以下方式从out / app_engine目录中启动AppRTC开发服务器
  运行Google App Engine SDK开发服务器,

<path to sdk>/dev_appserver.py ./out/app_engine

10-08 00:24