专栏首页生信技能树把你的shiny网页工具部署在云服务器

把你的shiny网页工具部署在云服务器

以下是投稿

缘由

我们课题组有一份油菜的核心种质资源,前几年经重测序之后已经发表了。但是课题组后面很多的项目都基于这份核心种质资源,实验室成员常常需要检索分析某些基因的特定SNP,所以我在自学了一段时间的Shiny之后就尝试着搭建了一个Shiny app并利用Shiny-server部署在课题组的服务器上,但是由于我开发的这个Shiny app本来就打开比较慢,加上很多时候服务器负荷运行,导致Shiny app打开速度就更慢了,有的时候甚至加载时间过长直接打不开。恰巧我紧跟生信技能树推文更新,了解到可以搞个云服务器来部署Shiny应用。

购买服务器

一开始@思考问题的熊建议我利用RStudioShinyapp.io部署Shiny应用,看名字就知道这是RStudio专门开发的用于部署Shiny应用的一个服务器,有免费版也有企业版的,对于我来说免费版的就足够了,具体使用可以参考官方手册,我这里不讲,因为我的应用无法部署上去,我使用到的一个包genetics显示来源有问题,不兼容。具体就是这个包我是从CRAN安装的,但是利用rsconnect检测的时候显示genetics的来源是BioConductor,这就很尴尬了,Google发现很多用户都遇到个类似的问题,有的解决办法是从GitHub上安装绕过了这个问题,genetics好像不能通过GitHub安装,所以没办法只能弃之,自己购买一个云服务器进行部署。

服务器产商很多,国外的AWS我也尝试注册过,它提供为期一年的免费试用,但是注册激活的时候需要填信用卡信息,我没有,只能放弃,转向国内的云服务器。国内的服务器主要有阿里云aliyun、腾讯云Tencent Cloud以及华为云HUAWEI CLOUD等,生信技能树也专门写了推文介绍,有需要的朋友关注生信技能树看推文哈!

我最后选了阿里云,先进入阿里云,注册登录,然后学生认证。

我直接购买了一年的学生套餐,瞄了一眼,发现还能领个20元的优惠券:

最后94元就买一年的最低配(1核2G,1M带框,40G云盘)的服务器,我主要是用来部署服务器,所以容易足够了。地域选择的话我选了华东(杭州),我不记得在哪看了篇博客,里面测试发现不同区域之间差别不大,所以我也没纠结,就选了所在城市地域。系统我就选了Ubuntu16.04 64位(好像只有这一个Ubuntu版本可选)

购买之后进入控制台,里面有云服务器的详细信息,对我最有用的话就是有个公网IP了,这样我的Shiny app全世界都能访问了!

配置服务器

有了云服务器就能各种折腾了,我已经折腾过好几台服务器了,所以比较顺利就安装配置好了部署环境,新手的话参考生信技能树的帖子:如果有一个新的服务器你会做什么?,基本能顺利地走通。

我这里就只讲一下安装Shiny-server,默认你已经安装了R语言以及Shiny包:

首先进入官网下载,里面有详细的安装方法:

sudo apt-get install gdebi-core
wget https://download3.rstudio.org/ubuntu-14.04/x86_64/shiny-server-1.5.14.948-amd64.deb
sudo gdebi shiny-server-1.5.14.948-amd64.deb

安装好之后,会自动创建shiny用户。

需要注意的是,你购买的云服务器你进去之后实际上是root用户登录的,我一开始部署的时候由于安装的包都是root用户安装的,所以就修改了配置问题,用root用户运行Shiny-server,开始的时候运行正常,后面突然莫名其妙就运行不了,所以我最后不得不将所有R包都删了,然后以shiny用户登录。

shiny用户登录好之后,我先进行了一下设置,主要是R语言以及shiny-server设置:

# vi .Rprofile
Sys.setenv(LANG="en_US.UTF-8")
options=(repo = c(CRAN = "https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
options(BioC_mirror="https://mirrors.tuna.tsinghua.edu.cn/bioconductor")

# vi .Renviron
R_LIBS=/home/shiny/R_Library

然后shiny-server配置文件如下:

# Instruct Shiny Server to run applications as the user "shiny"
preserve_logs true;
sanitize_errors false;
run_as shiny;

# Define a server that listens on port 3838
server {
  listen 3838;

  # Define a location at the base URL
  location / {

    # 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;
  }
}

然后就是安装各种需要用到的R包了,这里不讲,网上教程太多了,ubuntu学徒安装R包失败可以肯定的是遇到各种依赖缺失的问题,这个时候就Google或者百度了,缺啥补啥!

需要注意的是,由于我购买的是最低配的服务器,所以有些需要编译的R包有时候会由于内存不足,编译安装失败,这个时候我的建议是多安装几次,总会成功的!

所有准备环境准备好了之后,就可以将Shiny app文件上传到/srv/shiny-server目录里面,可能需要修改目录所属权限:

sudo chown -R shiny:shiny shiny-server

剩下就差最后最后一步了,云服务器多了个安全组,需要进入控制台进行设置:(左边侧栏)网络与安全-安全组,进入之后手动添加开通3838端口就行了。此时浏览器打开 http://公网ip:3838/app名 就可以看到自己部署的应用了!我这次部署了两个应用 http://121.41.229.126:3838/bnasnpdb 和 http://121.41.229.126:3838/gwas ,目前运行良好,打开速度也还行!

以上是我这次云服务器部署shiny app的经验,由于一开始没打算记录下来,现在信息大爆炸时代,技术分享实在太多了,但是@jimmy说每个人的故事都不一样,所以我就事后回忆记录一下,如果能帮助到其他人就最好了!限于本人能力,里面肯定有很多不足的地方。

本文分享自微信公众号 - 生信技能树(biotrainee),作者:生信技能树

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-07-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • linux命令行文本操作一文就够

    主要是 awk/grep/sed这三驾马车,加上vi这个神器,最后辅助一些小工具,包括 wc,cat,diff,join,paste,cut,uniq 这里 简...

    生信技能树
  • 明明解决了gfortran问题但是仍然安装WGCNA失败

    最近升级了R,全部R包需要批量安装,所以有了昨天的教程:批量安装R包小技巧大放送 但是总会有一些R包安装失败,比如大名鼎鼎的WGCNA

    生信技能树
  • 关键问题答疑:WGCNA的输入矩阵到底是什么格式

    这样的问题我其实被问过好多次了,因为这次是学员提问,虽然已经过了一个月的答疑期,但是情谊还在,所以就系统性的回复一下。

    生信技能树
  • dotnet 在 UOS 国产系统上使用 MonoDevelop 创建 GTK 全平台带界面应用

    本文告诉大家如何在 UOS 国产系统上开始使用 MonoDevelop 开发,通过创建 GTK# 应用,进入界面开发的第一步

    林德熙
  • 开源流媒体服务器SRS学习笔记(4) - Cluster集群方案

    单台服务器做直播,总归有单点风险,利用SRS的Forward机制 + Edge Server设计,可以很容易搭建一个大规模的高可用集群,示意图如下

    菩提树下的杨过
  • Python安装PyGraphics包简

    Python还比较年轻,这几个小软件很小,但找齐不那么容易,官网上可能由于对方有部分库遗失下载不下来,各处收集,全部收齐上传在此,且在命名时已按照逐一安装的顺序...

    py3study
  • Shiro rememberME 自定义rememberMeManager 不能使用

    #cookie rememberMeCookie = org.apache.shiro.web.servlet.SimpleCookie  rememberMe...

    冷冷
  • 2016互联网全行业洞察及趋势报告(完整版)

    导读 中国互联网走过了将近30年历程,自身面貌发生了巨大变化。艾瑞十几年间持续观察、解读并见证了互联网的飞速发展。2016年互联网全行业洞察及趋势报告《润物有...

    灯塔大数据
  • 第三章(1.3)linux下部署tensorflow环境

    两只橙
  • Robot Framework(13)- RF 循环的详细使用

    https://www.cnblogs.com/poloyy/category/1770899.html

    小菠萝测试笔记

扫码关注云+社区

领取腾讯云代金券