shiny-server
D:/jiayong/my-website/memento/content/docs/shiny/_index.md
D:/jiayong/my-website/memento/content/docs/_index.md
page
Last updated:
shiny-server
虚拟机或物理机安装ubuntu 22.04,或云服务器
创建用户的时候取一个中性的名字,该用户具有sudo权限用来执行用户管理等
比如systemadmin (admin是系统自带的,会冲突)
配置网络
询问网络管理员
安装ssh服务
sudo apt-get update
sudo apt-get install openssh-server
查看ssh服务是否开启
service ssh status
如果不是active(running)就启动服务
sudo service ssh restart
在windows上win+R运行cmd, ubuntu的ip地址是网络管理员给的, 个人的话自己家里的网络,用ip a
查看,inet就是ip地址
ssh admin@ip
第一次进去要先yes,然后输入密码,现在可以在windows上通过命令行操作linux
ubuntu内搭建shiny-server
官网教程{# https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/_markup/render-link.html #}https://posit.co/download/shiny-server/
-
安装R
直接按照教程里的sudo apt-get install r-base
安装的R不是最新版的,为了装上最新版本的R,需要多一些操作,参照cran的{# https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/_markup/render-link.html #}offical guide
-
安装Shiny Server
-
安装shiny
shiny-server安装以后会自动创建一个名为shiny的用户,shiny-server默认是用shiny用户运行的,所以如果是其他用户安装的R包,shiny是没有权限执行的
为避坑,先提前安装一些必要的library
sudo apt-get install build-essential
, 否则会sh: 1: make: not found
sudo apt-get install zlib1g-dev
,否则会安装不了httpuv
(shiny的一个依赖包)
用shiny用户安装shiny
测试安装成功没
显示版本号就好了
官网的做法是为用root权限为所有用户安装包
教程里似乎忘记换行了??会提示su: 用户 -c 不存在
,分两次执行以下
或者执行以下行
-
测试Shiny server
在ubuntu上进入localhost:3838看到欢迎页面,localhost:3838/sample-apps/hello/是一个简单的shinyapp
-
安装nginx
sudo apt-get update
sudo apt-get -y install nginx
-
部署自己的app
-
访问成功后,就可以把你的shiny项目放在/srv/shiny-server这个目录下(一般默认是这个目录),比如test文件夹包含标准的shiny结构,那你就可以ip:3838/test然后就能访问你用shiny写的网站了。

-
首先会有移动文件等权限问题,让xiaoming等其他普通用户也能上传自己的app
@dettli
首先添加用户组
sudo groupadd shiny-apps
sudo usermod -aG shiny-apps shiny
向里面加入想贡献app的xiaoming等其他普通用户
新建用户
sudo useradd -m xiaoming
或者创建时就为他指定shell工具
sudo useradd -m -s /bin/bash xiaoming
后期改shell的话
sudo usermod -s /bin/bash xiaoming
设定xiaoming的密码
sudo passwd xiaoming
sudo usermod -aG shiny-apps xiaoming
将/srv/shiny-server文件夹下的所有文件的拥有者设为 shiny,群体的使用者 shiny-apps :
sudo chown -R shiny:shiny-apps /srv/shiny-server
在该目录下创建的文件都属于该目录所属的组
sudo chmod g+w /srv/shiny-server
sudo chmod g+s /srv/shiny-server
-
不同的上传途径
- xiaoming在windows端开发,通过scp上传文件到linux
在windows的cmd中
scp -P 10022 -r d:/shiomix/app/ {# https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/_markup/render-link.html #}xiaoming@10.10.51.122:/srv/shiny-server/shiomix
ssh {# https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/_markup/render-link.html #}xiaoming@10.10.51.122
在linux中
mv shiomix /srv/shiny-server/shiomix
ls -l /srv/shiny-server
可以看到shiomix文件夹是属于用户xiaoming的,属于用户组shiny-apps的
- xiaoming在windows开发,上传到github (提前让sudo用户安装git
sudo apt-get -y install git
)
克隆仓库
git clone 仓库地址
放到/srv/shiny-server/下
cp -r folderpath /srv/shiny-server/
- xiaoming直接在linux上开发
-
运行不成功大多是包的问题
记住所有包都要用shiny用户安装
如此情况,运行sudo apt-get install libcurl4-openssl-dev
-
虚拟机暴露到局域网内
现在其他pc还不能访问shinyserver,不够方便
vmware软件的左上角,编辑,虚拟网络编辑器,点右下角更改设置,选第一个VMnet0,已桥接至选择当前用的网卡,有线选有线,无线选无线
更改虚拟机的设置,网络适配器,网络连接改桥接模式,进入ubuntu的设置,网络,有限,ipv4,方式改为手动,地址和DNS填写和物理机一模一样的,重启一下,期间可能会看到很多打印机添加进来,能不能上网还得上个www.baidu.com看看
充分利用linux系统
-
管理用户组
sudo groupadd -g 7777 student
查看,在最后一行可以看到student:x:7777
cat /etc/group
添加用户xiaoming到student组
sudo usermod -aG student xiaoming
-
Anaconda
下载
wget {# https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/_markup/render-link.html #}https://repo.anaconda.com/archive/Anaconda3-2024.02-1-Linux-x86_64.sh
安装
sudo bash ./Anaconda3-2024.02-1-Linux-x86_64.sh
enter下去,到同意条款
yes
问安装路径,输入
/opt/anaconda3
问是否初始化conda
no
为了让其他用户也能用conda,之前我们已经有student用户组了,mygroup可以替换为student,让所有student组的用户都能用conda
sudo groupadd mygroup
sudo chgrp -R mygroup /opt/anaconda3
sudo chmod 770 -R /opt/anaconda3
记得把新创建的用户也加到mygroup用户组里
sudo usermod -aG mygroup xiaowang
xiaowang每次想要用conda的时候,都要先
source /opt/anaconda3/bin/activate
最好不要修改base!!!
nginx配置
在server_name _;
这一行下面添加
client_max_body_size
是允许上传的文件大小, 要和shiny中设置的一样