这可能有点晚了,但无论如何我都会回答。如果您已经有了解决方案,可以与我们分享吗?
我的主要目标非常简单。我的笔记本电脑上有一个闪亮应用程序的工作版本。我曾经按照下面提到的方式运行它,一直在本地进行测试。
R -e "shiny::runApp('.')"
然后到了我们必须将其放在 Amazon EC2 实例上的时刻。
起初,我的尝试是直接将 apache 代理到我的应用程序将侦听的端口 8100。但这并没有那么有效,因为看起来以这种方式运行服务器实际上使用原始套接字,而使用闪亮服务器则回落到使用 sock.js,因此现在通信是通过 HTTP 进行的。
因此,按照此处的说明在我们的 EC2 实例上下载闪亮服务器应用程序:https://github.com/rstudio/shiny-server https://github.com/rstudio/shiny-server
顺便说一句,虽然那里的说明建议您在使用 RHEL 实例时从源代码安装 node.js,但通过 yum 安装方式,它对我来说效果很好。这里有这些说明。 https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager#rhelcentosscientific-linux-6
在node.js、shiny-server安装和设置之后,编辑了我的Apacheconf(Ubuntu和RHEL以不同的方式调用conf。因此编辑您拥有的conf)。添加了虚拟主机来满足我的请求。正如您所注意到的,还使用带有 Apache Location 指令的 Apache Basic 摘要身份验证来屏蔽它。
<VirtualHost *:80>
ProxyPass / http://localhost:3838/
ProxyPassReverse / http://localhost:3838/
ProxyPreserveHost On
<Location />
AuthType Basic
AuthName "Restricted Access - Authenticate"
AuthUserFile /etc/httpd/htpasswd.users
Require valid-user
</Location>
</VirtualHost>
除此之外,还编辑了shiny-serverconf以仅侦听来自127.0.0.1的请求(仅本地主机)。所以在我的闪亮服务器中我有以下内容:
listen 3838 127.0.0.1;
顺便说一句,如果您位于 Amazon EC2 环境中,则不需要此操作,因为您可以使用 EC2 仪表板中的安全组设置来执行相同的操作。无论如何,我这样做是一个很好的措施。
目前,这已经足够了,因为我们正在寻找非常快速且简单的东西。
现在,迫切等待令人敬畏的 RShiny 人员提供身份验证作为企业版交易的一部分。
希望这可以帮助。