最近有一个数据展示的项目,使用 Shiny 进行展示,为了方便小组成员交流,就部署到腾讯云上了。不难,但是坑不少,因此记录一下。参考了知乎专栏文章 在 Google 云计算平台上使用 Rstudio Server1。
不一定非得是 腾讯云,哪家都可以,只是鹅厂的『云 + 校园计划』正好符合我。
服务器操作系统选择 Linux,千万别选 Windows,建议 Ubuntu,Centos 也行,但一定要是 64 位,因为现在很多软件都不支持 32 位。安全组策略选择全部放行,不然后面配置起来很麻烦。
按照腾讯云的文档登陆服务器,尽量不要选择浏览器登陆。如果本机是 Linux,直接:
ssh -q -l [云服务器登录账号] -p 22 [云服务器的公网IP]
坑爹的地方在于,默认不是最新的 R,而 Shiny 不支持老版本,因此要更新到最新版本。参照 Installing R latest version 这个教程2升级 R,并安装中文字体,代码如下:
sudo sh -c "echo 'deb https://mirrors.tuna.tsinghua.edu.cn/CRAN/bin/linux/ubuntu trusty/' >>/etc/apt/sources.list"
sudo apt-get update
sudo apt-get install r-base
sudo apt-get install language-pack-zh-hans
sudo apt-get install xfonts-wqy
安装
必须先安装 gdebi,然后用 wget 下载 deb 包,但是非常坑爹的一点是腾讯云从 Rstudio 官网下载 Rstudio Server 安装包非常慢,我把包上传到坚果云了,可以从坚果云下载。
官网3下载:
sudo apt-get install gdebi-core
wget "https://download2.rstudio.org/rstudio-server-1.0.44-amd64.deb"
sudo gdebi rstudio-server-1.0.44-amd64.deb
从坚果云下载:
在此 网页 点击下载,然后取消,点击右键复制下载地址,替换掉上述 wget
后面的网址。
使用
Rstudio Server 默认不能使用管理员账户,因此,必须新建账户,这里创建账户 test。
sudo adduser test
然后就可以用浏览器打开 http://<server-ip>:8787
,server-ip 是你的腾讯云公网 ip。之后输入账户和密码就可以使用 Rstudio Server 了,可以使用我的测试帐号,不过好像每次只能单人登陆:
网址:http://123.207.156.73:8787/
帐号:test
密码:test2016
进去之后,最好首先把软件源改为国内的,否则下载软件包的速度感人。修改方法很简单,菜单栏“Tools –> Global option –> Packages –> CRAN mirror”,选择 “China (Beijing) [https] - TUNA Team, Tsinghua University”。
Rstudio Server 与桌面版相比,可以在 Files 窗口下直接上传数据和文件。新建项目 test,然后上传文件,在 Rstudio 里测试之后就可以进行 Shiny 展示了。
安装
必须安装最新版 R,否则不能正常运行。登陆腾讯云服务器,安装 shiny,之后下载 Shiny Server 并安装4。
sudo su - \
-c "R -e \"install.packages('shiny', repos='https://cran.rstudio.com/')\""
wget "https://download3.rstudio.org/ubuntu-12.04/x86_64/shiny-server-1.5.1.834-amd64.deb"
sudo gdebi shiny-server-1.5.1.834-amd64.deb
同理,如果速度太慢,可以从坚果云下载:
在此 网页 点击下载,然后取消,点击右键复制下载地址,替换掉上述 wget
后面的网址。
使用
最后一步,将 test 用户的 test 项目部署到服务器:
sudo cp -R /home/test/test/ /srv/shiny-server/
然后访问 http://<hostname>:3838/APP_NAME/
就可以了,比如,我这里就是 http://123.207.156.73:3838/test/。