【问题标题】:How to sync ShinyApps with MySQL From Localhost to Public如何将 ShinyApps 与 MySQL 从 Localhost 同步到 Public
【发布时间】:2018-07-01 20:33:06
【问题描述】:

我目前正在使用 R Shiny 开发应用程序并完成我的 ShinyApps,现在我正在尝试将应用程序部署到 Shinyapps.io 以便多个用户可以访问和使用它,但我有一个问题用于部署。

我的应用程序是关于药房管理的,它控制 CRUD 操作,因此很明显它使用这些选项配置与 db Connection 绑定(在本地运行)

options(mysql = list(
"host" = "127.0.0.1",
"port" = 3306,
"user" = "root",
"password" = ""
))

还有一件事,要连接到数据库,我通常会启动我的 XAMPP 应用程序并打开 mysql admin,这样我的应用程序就可以在本地连接数据库。在部署之前它工作得完美无瑕

但是当我尝试在 delpoy 之后在 shiny.io 中运行它时它立即崩溃(我的意思是自动断开连接)。所以我确实尝试将主机IP更改为这样公开,(我正在尝试在用户本地机器上获取IP地址)

configA <- system("ipconfig", intern=TRUE)
configB <- configA[grep("IPv4", configA)]
configC <- gsub(".*? ([[:digit:]])", "\1", configB)

options(mysql = list(
"host" = configC,
"port" = 3306,
"user" = "root",
"password" = ""
))

ConfigC 变量存储 IPv4 地址以获取本地计算机上的公共 IP,但这些仍然不起作用,我在下面的链接中附加了一个登录

如何在 Shinyapps.io 中将我的应用程序与 MySQL 连接和同步? 我使用 DBI 和 RMySQL 包。我是否需要先托管 MySQL 才能同步我的应用程序?谁能向我简要介绍一步一步的解释如何?提前谢谢你

这是我来自 shinyapps.io 的错误日志 http://textuploader.com/dulzh

【问题讨论】:

    标签: mysql r shiny


    【解决方案1】:

    对于有同样问题但不知道如何解决的人,我将分享对我有用的方法:

    1) 我建议将您的 MySQL 数据库托管到 AWS(亚马逊网络服务),它是免费的且性能卓越,可以在线同步任何网络服务更新,尤其是 shinyapps.io ,首先创建一个帐户

    2)使用包括信用卡在内的完整信息验证您的 AWS 账户,以便您可以访问其服务

    3) 点击服务>数据库>RDS

    4) 然后您将被重定向到 AWS RDS Dasboard,在这里您可以管理 MySQL 数据库的实例,要创建一个新实例,请单击 Launch DB Instance

    5) 这是我的实例设置:
    引擎选项:MySQL

    用例:生产 - MySQL

    DB Instance Class:db.r4.large 2vCPU,15.25 GiB RAM(我相信这个设置是主观上基于我们的 CPU 性能)

    多可用区部署:否

    存储类型:预置 IOPS

    分配的存储空间:100 GiB

    预置 IOPS:取决于您分配的存储(我使用 4000)

    6) 然后在设置选项卡中,填写您的数据库实例标识符,主用户名和密码,然后当您单击下一步时,有高级配置,再次填写数据库名称,然后您会想要检查所有日志报告,希望以后更容易维护,完成后 > 启动数据库实例

    7) 等到您的实例状态变为可用(不断刷新以了解)

    8) 实例可用后,检查实例并向下滚动直到找到连接部分,记住并保存端点、安全组规则、主用户名和密码实例 来自细节部分

    9) 在您的 server.R 中,编辑您的 MySQL 连接选项,从 localhost 到 AWS RDS..

    options(mysql = list(
        "host" = "your Endpoint",
        "port" = 3306,
        "user" = "your master username of db instance",
        "password" = "your master password of db instance"
      ))
    

    10) 在将您的 MySQL 数据库从 localhost 部署到 AWS RDS 之前,首先转到您的 AWS > Services > VPC > Security Group >(单击 Group Name 中的一个您的实例)> 入站规则

    11) 在入站规则中,您必须将您或其他 PC 访问到您的 shinyapps http://whatsmyip.org 的所有外部 IP 列入白名单,并在第 3.8 节中将基于此http://docs.rstudio.com/shinyapps.io/applications.html#accessing-databases-with-odbc 的所有闪亮应用 IP 地址列入白名单。 4

    12) 最后,无法直接将 MySQL 数据库从 localhost 部署到 AWS RDS,我建议安装 MySQL Workbench 来完成,安装完成后启动 MySQL WorkBench

    13) 创建新的 MySQL 连接并填写连接表单: 连接名称:(任何你喜欢的) 连接方式:TCP/IP 主机名:(粘贴您的端点) 端口 3306 用户名:(您的数据库实例的主用户名) 密码:(您的数据库实例的主密码)

    14) 成功连接到 AWS RDS 后,打开您的连接,然后 MySQL WorkBench UI 将打开,从 Navigator > Management > Data 导入您的 .bak 文件(MySQL 数据库)导入 > 选择从独立文件导入 > 浏览您的文件> 然后开始导入

    15) 您已成功将数据库部署到 AWS RDS!您可以在 WorkBench 中使用查询来查看所有表/数据库信息

    16) 运行您的 ShinyApps 并对其进行测试,然后完成!

    (如果您发现消息无法连接到您的 AWS RDS 主机,可能是您的外部 IP 已更改为新的,要解决此问题,您需要在步骤 10 中再次将您的 IP 列入 AWS VPC 的白名单)

    希望这些对你有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-15
      • 2015-05-29
      • 1970-01-01
      • 2013-04-21
      • 2012-01-06
      • 2017-03-30
      相关资源
      最近更新 更多