(数据科学学习手札66)在ubuntu服务器上部署shiny
一、简介
shiny是R中专门用于开发轻量级web应用的框架,在本地写一个shiny应用并调用非常方便,但如果你希望你的shiny应用能够以远程的方式提供给更多人来使用,就需要将写好的shiny应用部署到服务器上,主要有两种方式,第一种是将shiny应用发布在shinyapps上,第二种是将你的shiny应用部署到自己租用的服务器上,前者比较方便但遇到一些R包环境或中文显示等问题时几乎是无解的,而后者虽然麻烦,但更为自由,且从0开始自己动手的过程又何尝不是一种极大的乐趣呢,本文就将针对在ubuntu 16.04服务器上部署shiny server的流程进行详细的说明;
二、环境配置
2.1 服务器配置说明
我使用的服务器是阿里云ECS,ubuntu 16.04,2核8G内存,40G系统盘,如果条件允许的话,建议内存不要选择过小,否则在编译安装一些R包如raster时会内存不足(当然你也可以通过swap的方式来增加虚拟内存,但速度是非常慢的),用于连接服务器的工具为putty,通过putty登入服务器:
2.2 安装最新版R
首先我们需要安装最新版的R(写作此文时最新的稳定版本为3.6.1),查看R官网对于ubuntu安装最新版R的介绍:
按照上述步骤,首先用vim打开对应的sources.list文件:
sudo vim /etc/apt/sources.list
按i进入编辑模式,结合我们系统版本,把前面R官网说明页面中的deb https://cloud.r-project.org/bin/linux/ubuntu xenial-cran35添加进文件中,按esc后,再按shift+:,输入wq完成写入并退出过程:
接着执行下列命令来安装最新版的R,遇到y/n全部选择y:
sudo apt-get update
sudo apt-get install r-base
这时查看R版本:
这时可以看到我们已经成功安装了最新版本的R。
2.3 安装Rstudio与Rstudio Server
接下来我们来安装Rstudio以及Rstudio Server,用于远程编写及管理服务器上的R程序,在官网对应的下载页面找到对应我们系统版本的geb格式安装包下载链接:
Rstudio:
Rstudio Server:
其实可以在服务器中输入wget 下载链接 来下载对应的文件,但是无奈这样下速度太慢,于是我在本地电脑用了梯子之后以很快的速度下载了Rstudio的geb文件,然后用pscp上传到我们的服务器上的指定目录下:
除此之外还需要安装用以打开geb格式文件的相关程序:
sudo apt-get install gdebi
接下来执行下列命令安装Rstudio:
sudo gdebi rstudio-1.2.-amd64.deb
同样的方式,我们用pscp上传Rstudio Server的安装包到刚才的目录下执行下列语句:
sudo gdebi rstudio-server-1.2.-amd64.deb
在完成上述命令后,我们可以通过访问http://你的服务器公网IP:8787来使用Rstudio Server服务:
这里输入的账户和密码与服务器登录账户与密码一致,这里不得不吐槽一下Rstudio Server的傻逼设定,这里登入的账户和密码不能已获取超级用户权限,没关系,我们新建一个没有超级用户权限的用户:
sudo adduser 用户名
这样我们就可以用这个无超级用户权限的账号登入Rstudio Server:
可以看到熟悉的界面,就是个在线版的Rstudio,可以通过它来方便地修改服务器上的R代码。
2.4 安装shiny和shiny server
接下来到了最重要的地方,我们来安装shiny和shiny server,首先我们在服务器上的R环境中安装shiny包:
安装成功:
接下来安装shiny server,同样的在本地从官网下载对应的geb安装包,然后用pscp上传到指定目录下:
执行下列命令来安装shiny server:
sudo gdebi shiny-server-1.5.9.923-amd64.deb
安装完成后访问 http://服务器公网IP:3838,这是shiny server的默认导引页,若能显示正常则证明shiny server安装成功:
这时可以发现右侧下方的应用没有正常显示,但这里并没有明确显示具体的报错信息,为了在shiny应用出错时能显示具体的错误信息,我们需要修改shiny server的配置文件,执行下列命令打开shiny server的配置文件:
vim /etc/shiny-server/shiny-server.conf
如图所示位置添加上两行语句用于设置shiny应用出错时显示具体错误信息,保存退出,重新访问刚才的页面:
可以看出这时显示的报错信息提示我们缺失rmarkdown包,在R环境中安装rmarkdown后再次访问此页面:
这时可以看到对应的应用都已正常显示,而这两个应用所在的路径在shiny server的配置文件中有说明:
打开对应路径可以看到hello和rmd两个文件夹,每个文件夹代表一个应用,其内部拥有标准的shiny应用的ui.R和server.R,有时也会有global.R来辅助程序运行:
同样的,我们可以修改配置文件中的默认应用路径到我们自己的应用位置,而在管理shiny server运行上,主要用到下列命令:
#查看状态
sudo systemctl status shiny-server
#开启
sudo systemctl start shiny-server
#停止
sudo systemctl stop shiny-server
#重启
sudo systemctl restart shiny-server
而直接访问应用就是在刚才的引导页url后面添加路径信息,如我们直接来访问hello应用,http://服务器公网IP:3838/sample-apps/hello/ :
至此,我们就完成了在ubuntu上配置部署shiny应用的全部工作,当你想要部署新的应用时,只需要将应用对应文件夹放入应用默认目录下再按照格式访问即可。
以上就是本文的全部内容,如有笔误或不清楚之处望指出!
(数据科学学习手札66)在ubuntu服务器上部署shiny的更多相关文章
- (数据科学学习手札55)利用ggthemr来美化ggplot2图像
一.简介 R中的ggplot2是一个非常强大灵活的数据可视化包,熟悉其绘图规则后便可以自由地生成各种可视化图像,但其默认的色彩和样式在很多时候难免有些过于朴素,本文将要介绍的ggthemr包专门针对原 ...
- (数据科学学习手札50)基于Python的网络数据采集-selenium篇(上)
一.简介 接着几个月之前的(数据科学学习手札31)基于Python的网络数据采集(初级篇),在那篇文章中,我们介绍了关于网络爬虫的基础知识(基本的请求库,基本的解析库,CSS,正则表达式等),在那篇文 ...
- (数据科学学习手札49)Scala中的模式匹配
一.简介 Scala中的模式匹配类似Java中的switch语句,且更加稳健,本文就将针对Scala中模式匹配的一些基本实例进行介绍: 二.Scala中的模式匹配 2.1 基本格式 Scala中模式匹 ...
- (数据科学学习手札47)基于Python的网络数据采集实战(2)
一.简介 马上大四了,最近在暑期实习,在数据挖掘的主业之外,也帮助同事做了很多网络数据采集的内容,接下来的数篇文章就将一一罗列出来,来续写几个月前开的这个网络数据采集实战的坑. 二.马蜂窝评论数据采集 ...
- (数据科学学习手札44)在Keras中训练多层感知机
一.简介 Keras是有着自主的一套前端控制语法,后端基于tensorflow和theano的深度学习框架,因为其搭建神经网络简单快捷明了的语法风格,可以帮助使用者更快捷的搭建自己的神经网络,堪称深度 ...
- (数据科学学习手札42)folium进阶内容介绍
一.简介 在上一篇(数据科学学习手札41)中我们了解了folium的基础内容,实际上folium在地理信息可视化上的真正过人之处在于其绘制图像的高度可定制化上,本文就将基于folium官方文档中的一些 ...
- (数据科学学习手札40)tensorflow实现LSTM时间序列预测
一.简介 上一篇中我们较为详细地铺垫了关于RNN及其变种LSTM的一些基本知识,也提到了LSTM在时间序列预测上优越的性能,本篇就将对如何利用tensorflow,在实际时间序列预测任务中搭建模型来完 ...
- (数据科学学习手札36)tensorflow实现MLP
一.简介 我们在前面的数据科学学习手札34中也介绍过,作为最典型的神经网络,多层感知机(MLP)结构简单且规则,并且在隐层设计的足够完善时,可以拟合任意连续函数,而除了利用前面介绍的sklearn.n ...
- (数据科学学习手札32)Python中re模块的详细介绍
一.简介 关于正则表达式,我在前一篇(数据科学学习手札31)中已经做了详细介绍,本篇将对Python中自带模块re的常用功能进行总结: re作为Python中专为正则表达式相关功能做出支持的模块,提供 ...
随机推荐
- VS2008 专业版试用到期破解 【转】
对于在win7内核下的vs2008破解,和在xp内核系统下的破解是不同的.传统(XP)的破解方式: 一.先安装试用版,然后在“添加或删除程序”里找到VS2008,点“更改/删除”就会看到一个输入序列号 ...
- SQLServer性能优化之---数据库级日记监控
上节回顾:https://www.cnblogs.com/dotnetcrazy/p/11029323.html 4.6.6.SQLServer监控 脚本示意:https://github.com/l ...
- 利用LDAP操作AD域
LDAP操作代码样例 初始化LDAP 目录服务上下文 该例子中,我们使用uid=linly,ou=People,dc=jsoso,dc=net这个账号,链接位于本机8389端口的LDAP服务器(ld ...
- 微服务SpringCloud之熔断器
学习SpringCloud微服务是参考纯洁的微笑博客,看到他提到股市的熔断我也忍不住吐槽一下,记得当时实施熔断第一天就熔断了,现在想想也还是搞笑,从之前的全民炒股到现在的全民炒房,都是一个炒字,问题是 ...
- 【深入浅出-JVM】(5):Java 虚拟机结构
Java 虚拟机基本结构 Java 堆 新生代.老年代划分 栈帧 感谢您的耐心阅读,如果您发现文章中有一些没表述清楚的,或者是不对的地方,请给我留言,您的鼓励是作者写作最大的动力. 作 者 : @mo ...
- wcf服务编程(二)
地址: 1.命名管道:用于同一台机器的跨进程通讯.URL表示方式为:net.pipe:// ;由于是在同一台机器的不同进程间通讯,所以不用定义端口号.
- Centos6.5安装Redis3.2.8
1 - Redis安装 redis安装 在网上一搜一大把,但是还是在这里想要能够统一吧,所以这个安装步骤是在Centos6.5 Minimal 上安装redis3.4.8,本次安装是在root 用户下 ...
- [小米OJ] 6. 交叉队列
思路: 大概思想如下: 1. 动态规划求解,构造dp[][] 二维数组: 2. 设dp[i][j], i 为 第一个字符串的第i个字母:j 为 第二个字符串的第j个字母 3. dp[i][j] 如果 ...
- [剑指offer] 34. 第一个只出现一次的字符
题目描述 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). 一次遍历存储到哈希表 一次 ...
- 【原创】用事实说话,Firefox 的性能是 Chrome 的 2 倍,Edge 的 4 倍,IE11 的 6 倍!
前言 每个浏览器新版本发布,都号称性能有显著提升,并且市面有各种测试工具,测试结果也是大相径庭,比如下面这篇文章: https://www.oschina.net/news/97924/browser ...