只需十步,部署shiny server到阿里云云服务器
前文
项目进行到尾声,准备给师兄师姐部署,但是如果像这样给一次部署一次再看问题再改之后再上交部署有点麻烦,所以打算自己部署自己调试
一开始首选当然是shinyapps.io的公用仓库,但是它免费额度只有25h,我一天就能用四五个小时,对于调试总是得掐时间,有点紧张。
所以便决定自己用服务器部署shiny server。
本来是打算用现有的博客服务器的,因为还有不少内存,但最后因为操作系统不兼容的原因遂放弃。
之后决定重新买一个服务器,意外发现阿里云有3个月云服务器的免费试用额度,刚好可以用来调试,遂有了这篇文章,旨在记录我踩过的坑。
步骤
准备云服务器
配置
我使用的Ubuntu操作系统,2核2G的阿里云香港云服务器(免费试用3月)
接下来的操作在远程连接之后进行,现在是以root用户登录到终端
操作1 切换用户
阿里云的linux服务器默认用户就是root,但是我们部署shiny server如果全部使用root用户的话会导致后面出现很多问题,所以我们需要新建一个shiny用户并给予sudo权限,并且之后使用shiny用户完成接下来的一系列操作。
添加一个新账户
adduser shiny
之后会提醒你设置密码,也可以留空;在之后的信息也可以全部留空
给予新用户sudo权限
adduser shiny sudo
切换用户并测试
su - shiny $ whoami shiny $ sudo whoami [sudo] password for shiny: root
操作2(此操作以及之后操作都是shiny用户执行)
打开/etc/apt/sources.list
并将以下行添加到文件末尾:
`deb http://cran.rstudio.com/bin/linux/ubuntu xenial/`
操作3
添加CRAN网络的密钥ID:
wget -qO- https://cloud.r-project.org/bin/linux/ubuntu/marutter_pubkey.asc | sudo tee /etc/apt/trusted.gpg.d/cran_ubuntu_key.asc
操作4
更新存储库:
sudo apt update
操作5
安装R二进制文件:
sudo apt install r-base
操作6
安装shiny包
sudo su - -c "R -e \"install.packages('shiny', repos='https://cran.rstudio.com/')\""
操作7
安装Shiny Server
安装
gdebi
sudo apt-get install gdebi-core
下载Shiny Server
wget https://download3.rstudio.org/ubuntu-18.04/x86_64/shiny-server-1.5.22.1017-amd64.deb
使用
gdebi
安装Shiny服务器软件包sudo gdebi shiny-server-1.5.22.1017-amd64.deb
在这一步结束之后,shiny server会自动启动
操作8 环境配置完毕,简单测试
##常用的代码
#重启
sudo systemctl restart shiny-server
#查看状态
sudo systemctl status shiny-server
#开启
sudo systemctl start shiny-server
#停止
sudo systemctl stop shiny-server
操作9 在终端打开防火墙和3838端口
有些服务器不太智能,防火墙和端口得手动启动以及添加
输入以下代码
#检查防火墙状态
sudo ufw status
#若状态为inactive,则输入以下开启
sudo ufw enable
#开放端口 3838
sudo ufw allow 3838
#重新加载
sudo ufw reload
#再次检查状态
sudo ufw status
#确认到3838端口已开启即可
操作10 在控制台操作端口
不知道是阿里云的问题还是我的问题,我在终端打开防火墙和3838端口后并无法真正打开3838端口,还得进入阿里云云服务器的控制台-安全组-管理规则-手动添加规则
添加规则3838,授权所有IPv6,所有IPv4
完成
浏览器打开公网ip:3838,即可看见shiny server的欢迎界面,说明已经部署成功