sudo apt install r-base
#安装方式一
sudo apt-get install gdebi-core
sudo apt-get install libapparmor1
wget https://download2.rstudio.org/rstudio-server-1.0.143-amd64.deb
sudo gdebi rstudio-server-1.0.143-amd64.deb
#安装方式二
wget https://download2.rstudio.org/rstudio-server-rhel-1.1.456-x86_64.rpm
sudo yum install rstudio-server-rhel-1.1.456-x86_64.rpm
因为Rstudio-server不能以root用户登录,所以我们需要创建一个用户
#新建用户
sudo useradd -m user_name #需要home下有目录
# 设置密码
sudo passwd usr_name #第一次先输入用户名,在一次输入密码
#切换用户
su usr_name
#批量新建用户
#! /bin/bash
for user in `cat user.txt`
do
#新建用户及文件夹
useradd -m $user
#修改密码为123456
echo $user:"123456" | chpasswd
done
然后在网页上输入服务器IP:8787
进入Rstudio-server界面,输入用户和密码,即可登录
sudo su - -c "R -e \"install.packages('shiny', repos='http://cran.rstudio.com/')\""
不能直接进入R,然后install.packages("shiny")
,因为如果这样安装,是将shiny包安装下当前登录用户的个人library中,使得最终shiny-server无法运行
但是可以考虑在root用户下执行R包安装命令,但是后期可能会出现问题。
sudo apt-get install gdebi-core
wget https://download3.rstudio.org/ubuntu-12.04/x86_64/shiny-server-1.5.3.838-amd64.deb
sudo gdebi shiny-server-1.5.3.838-amd64.deb
也可以去shiny-server的下载网址可以去官网上查找相应的版本进行下载,打开网址:https://www.rstudio.com/products/shiny/shiny-server/ , 可以看到有多个shiny-server的版本
## wget下载
wget https://download3.rstudio.org/centos6.3/x86_64/shiny-server-1.5.9.923-x86_64.rpm
## 安装
sudo yum install --nogpgcheck shiny-server-1.5.9.923-x86_64.rpm
做完以上几步后,shiny-server算是初步安装好了,然后可以在网页上52.24.111.0:3838进入shiny-server界面(52.24.111.0是服务器ip地址,监听接口为3838)。一般我们能看到左边一列的文字和右边的两个框。当然还需要再安装个rmarkdown,不然还是会有error的
sudo su - -c "R -e \"install.packages('rmarkdown',repos='http://cran.rstudio.com/')\""
sudo vi /usr/lib/R/etc/Rprofile.site
sudo vim /etc/rstudio/rserver.conf
# 切换版本
# 更改下面两个则切换anaconda2/bin和/usr/bin/下面的R版本,二者选一
rsession-which-r=~/biotools/anaconda2/bin/R
rsession-which-r=/usr/bin/R
# 设置端口-添加下列语句
www-port=8787 ### 通过ip的8787端口连接
sudo vi /etc/sysconfig/iptables
###在文件中添加以下语句:
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 8787 -j ACCEPT
### 重启防火墙
sudo service iptables restart
sudo netstat -anp ###查看开放的端口信息
sudo rstudio-server verify-installation #查看安装是否正常
sudo rstudio-server start #启动RStudio-server
sudo rstudio-server status #查看RStudio-server
sudo rstudio-server stop #关闭RStudio-server
sudo rstudio-server restart #重启RStudio-server
sudo rstudio-server active-sessions #查看sessions
sudo rstudio-server suspend-session <pid> #暂停session
sudo rstudio-server suspend-all
sudo rstudio-server kill-session <pid> #关闭session
sudo rstudio-server kill-all
sudo rstudio-server offline/online #离线/上线通知
sudo vi /etc/rstudio/rserver.conf
# 修改以下配置
admin-enabled=1
admin-group=rstudio-admins
admin-superuser-group=rstudio-superuser-admins
http://<server-address>/admin
/var/log/shiny-server.log
/srv/shiny-server/index.html
- you can edit it or remove it./srv/shiny-server/
will be served as a Shiny app. For example, there is a default app at /srv/shiny-server/sample-apps/hello/
, which means you can run the app by going to http://123.456.1.2:3838/sample-apps/hello/
/etc/shiny-server/shiny-server.conf
sudo reload shiny-server
index.rmd
and add runtime: shiny to the document’s frontmatter
对于配置文件的一些修改:
vi /etc/shiny-server/shiny-server.conf
## vi /opt/shiny-server/config/default.config
配置文件内容如下
# Define the user we should use when spawning R Shiny processes
run_as shiny; ## 指定我们运行shinyapp的user是谁
# Define a top-level server which will listen on a port
server {
# Instruct this server to listen on port 3838
listen 3838; ## 设置shiny-app的监听端口
# Define the location available at the base URL
location / {
# Run this location in 'site_dir' mode, which hosts the entire directory
# tree at '/srv/shiny-server'
site_dir /srv/shiny-server; ## shiny-app的存放位置
# Define where we should put the log files for this location
log_dir /var/log/shiny-server; ## shiny-app运行过程中产生的日志文件存放位置
# Should we list the contents of a (non-Shiny-App) directory when the user
# visits the corresponding URL?
directory_index on;
}
}
- site_dir 后是Shiny-App的存放地址
- log_dir 是Shiny-App的运行过程中产生的日志文件,App出现了任何报错,都可以从这个目录下去寻找报错原因
## 重启
sudo systemctl restart shiny-server
## 查看状态
sudo systemctl status shiny-server
## 开启
sudo systemctl start shiny-server
## 停止
sudo systemctl stop shiny-server
假设当你登录是以usr_name
登录,你在shiny server创建的文件只有该用户(除了root)才有权限读写,但是shiny server是以shiny用户来运行shiny的app,所以要给予shiny用户在一些目录的权限;或者在shiny用户下创建文件;或者更改shiny-server的配置文件
sudo groupadd shiny-apps
sudo usermod -aG shiny-apps usr_name
sudo usermod -aG shiny-apps shiny
sudo chown -R shiny:shiny-apps /srv/shiny-server
sudo chmod g+w /srv/shiny-server
sudo chmod g+s /srv/shiny-server ####在该目录下创建的文件都属于该目录所属的组
下载shiny官网的例子
git clone https://github.com/rstudio/shiny-examples.git
文件是要下载到/srv/shiny-server
中,shiny app文件最终传输位置。
运行例子程序
http://52.24.111.0:3838/shiny-examples/010-download/
想要运行哪个shiny app,只要在http://52.24.111.0:3838/后面添加/srv/shiny-server
中的文件的相对路径即可
安装shiny-server的过程并不是一帆风顺的,遇见报错,就要排除bug!
shiny-app运行报错,我们需要重点从以下几个方面查看错误
## 1. 查看Server-Log, Server-Log提供了shiny-server运行过程中的日志文件vi /var/log/shiny-server.log file## 2. 查看App-Log, (App-Log提供了shiny-app运行过程中的报错日志)cd /var/log/shiny-server
可以登陆了,但是出现闪退: Shiny app - “Disconnected from the server. Reload.”
解决方案链接1:https://stackoverflow.com/questions/42793154/shiny-app-not-working-on-shiny-server-with-no-log-file-present
解决方案链接2:https://stackoverflow.com/questions/42265329/shiny-server-connection-closed-info-typeclose-code4503-reasonthe
使用**ctrl + shift + J
**可以直接调出浏览器的连接报错信息 ,也可以用这个报错信息搜索解决方法
此时我们先去目录/var/log/shiny-server
下查看shiny-app的运行日志情况,发现没有App的运行日志.是因为在配置文件中没写上,咱们写上即可
打开Shiny-Server的配置文件,sudo vi /etc/shiny-server/shiny-server.conf
在 run_as shiny;
后加上两句话:
sanitize_errors false;preserve_logs true; ## 此句话,就是让App显示log报错
同时在自己写的shiny-app程序中也加上 options(shiny.sanitize.errors = FALSE) 这句话
保存shiny-server的配置,程序也更改后,重启shiny-server即可 sudo systemctl restart shiny-server(注:不重启的话配置不生效!)
报错的核心原因是,shiny-server启动关联的R和我们自己启动的R不一致
即我们刚才安装的digest包并没有安装在shiny-server关联的R所在的library中,但我们无法更改shiny-server默认的R-path,把我们现在正在用的R位置关联给shiny-server
我们可以通过设置shiny-server登陆方式,在shiny账户下安装R包
咱们的配置文件里面有一句话是:
run_as shiny; ## 这句话指定我们运行shinyapp的user是shiny ,因为shiny-server创建完成之后,便会默认创建shiny用户
所以我们现在就登陆这个user账户,然后在user账户权限下 安装缺失的包!
## 首先,为咱们的user账户shiny,设置密码sudo passwd shiny ## 输入这句话后,会弹出一个设置密码的框框,咱们自由设置密码就行## 接着,登陆咱们刚才设置的shiny-user账户su - shiny ## 登陆过程中,会让你输入刚才自己设置的密码## 然后,在此账户下启动 R (without sudo)R## 最后,安装所需要的包: install.packages("digest",repos = "https://mirrors.ustc.edu.cn/CRAN/") ## repos代表下载镜像选清华的
An error has occurred\The application failed to start.The application exited during initialization.
是否调用的所有R包都已安装, 使用root安装,在个人用户下安装是不行的。
sudo su - -c "R -e \"install.packages('WGCNA', repos='http://cran.rstudio.com/', dependencies = TRUE)\""
或下载到本地:
suR CMD INSTALL WGCNA_1.69-81.tar.gz
$ vi /etc/shiny-server/shiny-server.conf# Define the user we should use when spawning R Shiny processesrun_as shiny;# Define a top-level server which will listen on a portserver { # Instruct this server to listen on port 3838 listen 3838; # Define the location available at the base URL location / { #### PRO ONLY #### # Only up tp 20 connections per Shiny process and at most 3 Shiny processes # per application. Proactively spawn a new process when our processes reach # 90% capacity. utilization_scheduler 20 .9 3; #### END PRO ONLY #### # Run this location in 'site_dir' mode, which hosts the entire directory # tree at '/srv/shiny-server' site_dir /srv/shiny-server; # Define where we should put the log files for this location log_dir /var/log/shiny-server; # Should we list the contents of a (non-Shiny-App) directory when the user # visits the corresponding URL? directory_index on; }}# Setup a flat-file authentication system. {.pro}auth_passwd_file /etc/shiny-server/passwd;# Define a default admin interface to be run on port 4151. {.pro}admin 4151 { # Only permit the user named `admin` to access the admin interface. required_user admin;}
# 开放防火墙sudo ufw allow 3838/tcp# 重启shiny-serversudo systemctl restart shiny-server
shiny server的配置重新设置过之后,需要重新启动才可以更新。