这可能有点晚了,但无论如何我都会回答。如果您已经有了解决方案,可以分享给我们吗?
我的主要目标很简单。我的笔记本电脑上有一个闪亮的应用程序的工作版本。我曾经如下所述运行它,一直在本地测试。
R -e "shiny::runApp('.')"
然后我们不得不将它放到 Amazon EC2 实例上。
起初我的尝试是直接将 apache 代理到我的应用程序将侦听的端口 8100。但这并没有那么好,因为以这种方式运行服务器似乎实际上使用了原始套接字,而使用闪亮服务器则回退到使用 sock.js,因此现在通过 HTTP 进行通信。
因此,按照此处的说明在我们的 EC2 实例上下载了闪亮服务器应用程序:https://github.com/rstudio/shiny-server
顺便说一句,虽然那里的说明建议您在使用 RHEL 实例时从源代码安装 node.js,但通过 yum 安装方式对我来说效果很好。 You have those instructions here.
在 node.js、shiny-server 安装和设置之后,编辑了我的 Apache conf(Ubuntu 和 RHEL 以不同的方式调用 conf。因此编辑你拥有的那个)。添加了一个虚拟主机来服务我的请求。正如您所注意到的,还使用带有 Apache Location 指令的 Apache Basic digest Auth 对其进行了屏蔽。
<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-server conf 以仅侦听来自 127.0.0.1 的请求(仅限本地主机)。所以在我的闪亮服务器中,我有以下内容:
listen 3838 127.0.0.1;
顺便说一句,如果您在 Amazon EC2 环境中,则不需要此功能,因为您可以使用 EC2 控制面板中的安全组设置来执行相同操作。无论如何,我这样做是一个很好的措施。
就目前而言,这已经足够了,因为我们正在寻找非常快速和简单的东西。
现在急切地等待令人敬畏的 RShiny 人员提供身份验证作为企业版交易的一部分。
希望这会有所帮助。