我目前正在使用R Shiny开发应用程序并完成我的ShinyApps,现在我正在尝试将应用程序部署到 Shinyapps.io ,以便多个用户可以访问和使用它,但我有一个问题用于部署。
我的应用程序是关于药房管理的,它控制着CRUD操作,所以显然它使用这些选项配置与db Connection结合(在本地运行)
options(mysql = list(
"host" = "127.0.0.1",
"port" = 3306,
"user" = "root",
"password" = ""
))
还有一件事,要连接到数据库,我通常启动我的XAMPP应用程序并打开mysql管理员,以便我的应用程序可以在本地连接数据库。它在部署之前完美无缺地工作
但是当我尝试在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
答案 0 :(得分:3)
对于有相同问题但不知道如何解决的人们,我将分享对我有用的东西:
1)我建议将您的MySQL数据库托管到AWS(Amazon Web Service),它是免费的,并且具有出色的性能,可以在线同步任何Web Service更新,尤其是 shinyapps.io ,首先创建一个帐户
2)用包括信用卡在内的完整信息验证您的AWS账户,以便您可以访问其服务
3) 点击服务>数据库> RDS
4)然后,您将被重定向到AWS RDS Dasboard,在这里您可以管理MySQL数据库的实例,以创建一个新实例,单击Launch DB Instance
5) 这是我的实例设置:
引擎选项:MySQL
用例:生产-MySQL
数据库实例类:db.r4.large 2vCPU,15.25 GiB RAM(我相信此设置主观地取决于我们的CPU性能)
多可用区部署:否
存储类型:预置IOPS
已分配的存储空间:100 GiB
预置的IOPS:取决于您分配的存储(我使用4000)
6)然后在“设置”选项卡中,填写数据库实例标识符,主用户名和密码,然后单击“下一步”,进行高级配置,再次填写数据库名称,然后您将需要在完成>启动数据库实例
之后,检查所有日志报告,希望以后可以更轻松地维护7)等到您的实例状态变为可用(保持刷新状态)
8)实例变为可用后,检查实例并向下滚动,直到找到“连接”部分,记住并保存端点,安全组规则,主用户名和密码实例来自“详细信息”部分的
9)。在server.R中,编辑MySQL连接选项,从本地主机到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数据库从本地主机部署到AWS RDS之前,首先请转到 AWS>服务> VPC>安全组>(单击由您的实例)>入站规则
11)在入站规则中,您必须将您或其他PC访问闪亮应用http://whatsmyip.org的所有外部IP白名单,并根据此http://docs.rstudio.com/shinyapps.io/applications.html#accessing-databases-with-odbc将所有闪亮应用的IP地址白名单在3.8.4节中
12)现在,最后不能直接将MySQL数据库从localhost部署到AWS RDS,我建议安装MySQL Workbench来完成,安装完成后,启动MySQL WorkBench
13)创建新的MySQL Connection并填写连接表单: 连接名称:(任何您喜欢的名称) 连接方式:TCP / IP 主机名:(粘贴您的端点) 端口3306 用户名:(您的数据库实例的主用户名) 密码:(您的数据库实例的主密码)
14)成功连接到AWS RDS之后,打开连接,然后打开MySQL WorkBench UI,从导航器>管理>数据导入.bak文件(MySQL数据库)。导入>选择从自包含文件导入>浏览文件>,然后启动导入
15)您已成功将数据库部署到AWS RDS!您可以在WorkBench中使用查询来查看所有表/数据库信息
16)运行您的ShinyApps并对其进行测试,然后完成!
(如果您从未发现消息无法连接到您的AWS RDS主机,可能是您的外部IP已更改为新的IP,要解决该问题,您需要在步骤10中再次将IP列入AWS VPC白名单)>
希望这些对您有所帮助!