前言
Ubuntu对比CentOS虽然更臃肿了一些,但是在易用性上的确是好一些。至少在我用到的依赖包中(如gdal等)CentOS7的支持并不算太好,很多包都要自己手动编译和配置。
由于ShinyServer也要安装很多的包,所以如果临时配置一台Shiny服务器的话,我选择Ubuntu18.04。
如果要在CentOS下安装ShinyServer,请查看这里:https://www.liujason.com/article/472.html
安装最新版的R
CentOS参考:https://www.liujason.com/article/472.html
Ubuntu参考:https://www.liujason.com/article/569.html
安装ShinyServer
首先要在R中安装shiny包:
sudo su - \ -c "R -e \"install.packages('shiny', repos='https://cran.rstudio.com/')\""
然后装shinyserver,最新版本自己去官网找:https://rstudio.com/products/shiny/download-server/ubuntu/
sudo apt-get install gdebi-core wget -y wget https://download3.rstudio.org/ubuntu-14.04/x86_64/shiny-server-1.5.12.933-amd64.deb sudo gdebi shiny-server-1.5.12.933-amd64.deb
配置实例
首先看看是否启动成功了,若未成功对照看看是不是依赖包没装好
root@shiny:~# service shiny-server status ● shiny-server.service - ShinyServer Loaded: loaded (/etc/systemd/system/shiny-server.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2020-02-23 15:47:59 UTC; 48s ago Main PID: 27858 (shiny-server) Tasks: 11 (limit: 4915) CGroup: /system.slice/shiny-server.service └─27858 /opt/shiny-server/ext/node/bin/shiny-server /opt/shiny-server/lib/main.js Feb 23 15:47:59 shiny systemd[1]: Started ShinyServer.
然后看看是否正在监听正确的端口和ip
apt install lsof -y && lsof -i:3838 root@shiny:~# lsof -i:3838 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME shiny-ser 27858 root 18u IPv6 58692408 0t0 TCP *:3838 (LISTEN)
设置文件在/etc/shiny-server/shiny-server.conf,如果监听的是IPv6的话,可以在这里编辑一下修改监听的IP和端口。
nano /etc/shiny-server/shiny-server.conf ------- # Define a server that listens on port 3838 server { listen 3838 0.0.0.0; -------
在server中监听端口后面加上监听的网卡ip,一般用0.0.0.0表示所有ipv4都监听,然后重启rshinyserver。
这时候访问http://ip:3838/index.html已经可以看到示例页面了。
调用并部署git内的shinyapp
shiny的web根目录在/srv/shiny-server里面,因此先进去删掉所有自带内容,再git拉取就可以了
cd /srv/shiny-server rm -rf * git init git remote add origin https://github.com/LiuZixia/RShinyProjects.git git pull origin master
设置Nginx反代并开启SSL
参考这里吧,一模一样的东西我就不搬过来了:
文章目录[隐藏] 前言 Nginx规则 前言 汤老板来问,我就整理一下吧。这里面有几个坑需要注意的: Shiny必须使用Nginx的Websocket插件,所以需要在Nginx里面打开,1.6以上版本都是自带的,直接使用即可。 Shiny的默认端口是3838,如果是引用非本地的shiny服务的话,防火墙注意开启 我安装下来发现,在有IPv6的条件下,Shiny会优先监听IPv6,因此需要修改/etc/shiny-server/shiny-server.conf中的监听端口,添加0.0.0.0以监听IPv4(改为::可以强制监听IPv6): ------- # Define a server that listens on port 3838 server { listen 3838 0.0.0.0; ------- Nginx规则 location /shiny/ { if ($request_uri ~* "(php|jsp|cgi|asp|aspx)") { expires 0; } proxy_pass http://shiny的ip:3838; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; […]
https://www.liujason.com/article/529.html