在服务器上启动闪亮的应用

时间:2014-04-28 16:08:32

标签: r shiny

我正在尝试在服务器上启动闪亮的应用程序。我只是按照管理指南中的说明进行操作:

mkdir ~/ShinyApps
sudo cp -R /opt/shiny-server/samples/sample-apps/hello ~/ShinyApps/

然后尝试通过http://<server-address>:3838/<your_username>/hello访问hello应用程序但是它显示此页面无法显示错误。任何人都知道可能导致这个问题的原因是什么?谢谢!

续 谢谢Jeff,我在指南中使用了完全相同的部分。 这是shiny-server.conf文件:

server {
  listen 3838;

  # Define a location at the base URL

  location /users {
      #this is set up so that I can run apps sithout sudo
      run_as :HOME_USER:
      user_dirs;
  }
  location /apps {
    run_as shiny;
    # Host the directory of Shiny Apps stored in this directory
    site_dir /srv/shiny-server;

    # Log all Shiny output to files in this directory
    log_dir /var/log/shiny-server;

    # When a user visits the base URL rather than a particular application,
    # an index of the applications available in this directory will be shown.
    directory_index on;
  }
}

shiny-server.log显示了很多错误:

[32m[2014-04-28 11:04:42.871] [INFO] shiny-server - [39mShiny Server v1.1.0.10000 (Node.js v0.10.21)
[32m[2014-04-28 11:04:42.875] [INFO] shiny-server - [39mUsing pidfile /var/run/shiny-server.pid
[32m[2014-04-28 11:04:42.877] [INFO] shiny-server - [39mUsing config file "/etc/shiny-server/shiny-server.conf"
[33m[2014-04-28 11:04:42.973] [WARN] shiny-server - [39mRunning as root unnecessarily is a security risk! You could be running more securely as non-root.
[31m[2014-04-28 11:04:42.217] [ERROR] shiny-server - [39mError loading config: location directive must contain (or inherit) one of site_dir, user_apps, app_dir, or redirect (/etc/shiny-server/shiny-server.conf:10:3)
[32m[2014-04-28 11:04:42.218] [INFO] shiny-server - [39mShutting down worker processes

如何解决这些错误?

3 个答案:

答案 0 :(得分:3)

我假设您从指南的this部分获得了该命令?如果是这样,您是否也使用deploy-example脚本来更改配置文件?运行该脚本时是否收到任何错误?

或者,编辑您的问题以在/etc/shiny-server/shiny-server.conf包含您的配置文件,我们将能够查看您的服务器是否已正确配置为使用user_dirs,用户可以使用该/var/log/shiny-server.log主持自己的应用程序。

同时检查(和/或编辑您要包含的问题)服务器日志中{{1}}的最新条目。

答案 1 :(得分:1)

尝试网址http://<server-address>:4949/sample-apps/。 如果不是4949,请尝试3838。

答案 2 :(得分:0)

原因是port 3838是否开放。如果它没有打开,也许您应该在服务器中运行以下指令:

iptables -I INPUT -p tcp --dport 3838 -j ACCEPT
iptables -I INPUT -p gre -j ACCEPT