JY MEMENTO
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/

  1. 安装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

    # s # s # # # w # s u u g u u d i d a T F e a d p o n o d o i t d o d s d n d a a t a v g - a t p a p t e e q t d e t l t h r r O h d l e i p - e - i u i f r a n p t n s y i h R p d d w s i n t t i a o t g k t t 4 - c t a n e : p . r e e h l i y s 0 e s e l n , E : p - l g 2 / r o q p r 9 / e s q e - k u 8 c p i r n e n A l o t o y 3 o o p - g A u f r a i ( p 8 d r y c n b g 2 . o k s y 5 r m " a t C - d g a M - 0 p C e e l i s D r R b s l c h 6 o A - h o 5 j N h w r a w D e t e e e - F c t c l k D t p n o e 5 . s e m R y 7 o a : e m u s C r d / d e t B g j / n t / B / u c d e e 6 b s l s r t 5 i t o ) c 1 n u s / 7 / ' d o f a 1 l f . f o p 6 i o r t r t 6 n c - w / 1 u a p a t t 9 x l r r h r E / ' o e e u 0 u j - s s 8 b t e p e t 4 u o c r e D n t o r d A t ' . p e . B u g o e p g 9 / r r r o p m o g t s g a o / i . r b e d u y i s / t ' n - c t c r e l o a r r i m n _ n m _ p ' u o u u b x n b b i u k u d n e n b i t y i u r u . c n m _ a ' t n k s u g e c a r y s $ . | ( a n l s s e s c u e b d d _ o e r d e t l e e e a s - e a - / c e s t ) c - / c a r p a t n / 4 t 0 r / u " s t e d . g p g . d / c r a n _ u b u n t u _ k e y . a s c
    s u d o a p t i n s t a l l - n o - i n s t a l l - r e c o m m e n d s r - b a s e
  2. 安装Shiny Server

    # s # w # s u g u d e d o t o s a h h g p i t d t n t e - y p b g - s i e s : t e / s r / h i d i n e o n s r w y t n - a l s l o e l a r d v g 3 e d . r e r - b s 1 i t . - u 5 c d . o i 2 r o 2 e . . o 1 r 0 g 1 / 7 u - b a u m n d t 6 u 4 - . 1 d 8 e . b 0 4 / x 8 6 _ 6 4 / s h i n y - s e r v e r - 1 . 5 . 2 2 . 1 0 1 7 - a m d 6 4 . d e b
  3. 安装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

    s R i y y q n e u n e e ( x d s s s ) i o t t a s l u l . - p a s c h k i a n g y e s ( ' s h i n y ' , r e p o s = ' h t t p s : / / c r a n . r s t u d i o . c o m / ' )

    测试安装成功没

    s u d o s u - s h i n y - c " R - e \ " p a c k a g e V e r s i o n ( ' s h i n y ' ) \ " "

    显示版本号就好了

    官网的做法是为用root权限为所有用户安装包

    s u d o s u - - c " R - e \ " i n s t a l l . p a c k a g e s ( ' s h i n y ' , r e p o s = ' h t t p s : / / c r a n . r s t u d i o . c o m / ' ) \ " "

    教程里似乎忘记换行了??会提示su: 用户 -c 不存在,分两次执行以下

    s - u c d o " R s u - e - \ " i n s t a l l . p a c k a g e s ( ' s h i n y ' , r e p o s = ' h t t p s : / / c r a n . r s t u d i o . c o m / ' ) \ " "

    或者执行以下行

    s u d o s u - - c " R - e \ " i n s t a l l . p a c k a g e s ( ' s h i n y ' , r e p o s = ' h t t p s : / / c r a n . r s t u d i o . c o m / ' ) \ " "
  4. 测试Shiny server

    在ubuntu上进入localhost:3838看到欢迎页面,localhost:3838/sample-apps/hello/是一个简单的shinyapp

  5. 安装nginx

    sudo apt-get update
    sudo apt-get -y install nginx

  6. 部署自己的app

    1. 访问成功后,就可以把你的shiny项目放在/srv/shiny-server这个目录下(一般默认是这个目录),比如test文件夹包含标准的shiny结构,那你就可以ip:3838/test然后就能访问你用shiny写的网站了。

      alt text

      1. 首先会有移动文件等权限问题,让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

      2. 不同的上传途径

        1. 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的
        2. xiaoming在windows开发,上传到github (提前让sudo用户安装git sudo apt-get -y install git) 克隆仓库
          git clone 仓库地址
          放到/srv/shiny-server/下
          cp -r folderpath /srv/shiny-server/
        3. xiaoming直接在linux上开发
    2. 运行不成功大多是包的问题

      记住所有包都要用shiny用户安装

      s u d o s u - s h i n y - c " R - e \ " i n s t a l l . p a c k a g e s ( ' p a c k a g e n a m e ' , r e p o s = ' h t t p s : / / c r a n . r s t u d i o . c o m / ' ) \ " "
      • 一些常见包的安装问题
      P P t N P P t N U U C I P i R < c E a e o o a e o o s s o f A s s o R i c r c r i i n d r T C t m R r n p u k h t p k h t p n n f e p l H u M d p O e s a s a a h a a a h a g g i b m i n D i i R m t c i g p e c g p e c g : : b a a n l : o a k n e s k e s k P P u c n v I > a v l a g P a P a K K r l l u d a N : t c i l g l y K g l y K g G G a i i r i S 1 i o n i e s i o G e i o G e _ _ t b b l P l T : o n g n t b u _ b u _ C L i c c K a A 1 n f g a c C ' c C ' F I o u u i G b L 0 i c g u s O l u s O l L B n r r s _ l L : t g / * u e r h N i r h N i A S l l C e e u h s r d l o F b l o F b G = f 4 - a O f r r o o l u I c u I c S - a - d l N y - a m a m u i w l G u w l G u = l i o e r F o c t i t e r n a d _ r a d _ r c l p v e I u o a n i c s s s P l s P l u e e e a G n l a s e u t a A ' a A ' r d n l d _ c f t n h * c a n d T n d T l s y P a i e e i c l o d H f o d H f b s ( A n g r d f n p e l t o t o e l F i T u r . a y a s a t e u t e u c - e n H s r o i / c s t f h n n f h n n a d d s e e r l R k f i o e v d o e v d u e o t c t - : e / a u o u i u i s v r a o v d x g l n n d r n d r e a l n I a [ c 8 e l d i o d i o [ ( , l t N r E u f 6 y r n r n A l D e a C s R r o _ i e m i e m N i e C d i L = R l r 6 c u n c e n c e T b b e , n U ' O / 4 u n t n t n I c i n s D I R c p - r p t o t t o t C u a t c E N u a p l a h r h r O r n O h a _ C M r c c c e y v e y v N l , S e D L E l k - k a a F , c l I U S . a l e p c r p c r ] w U k i R D S h g i d k o i k o i a b R b E A : e n g n a g n a s u H t c a _ G u a - t b - t b n E h u n D E N x n c a l c a l n t L a r d I ] o c - d o i e o i e o u ) t l R u g n n n n t , . L = s r n M f i f i ' p I . u l u D i n i n f e p c B . c - 5 g g g g o t k _ . h l u c g f D i s s ` s ` n ) - i I L f b u e l e l d c l R I i r m a i a i . o e B l a s r b r b n . m _ e r c c c c T f a D y c h u h u r i I n I o / h r r y g f u R r 4 e p l p l ' a = . c a . a . i p l . d 3 k t p t p n i k l . i / e h c h c s s g y . r c d . ' . ' t - ' e u a i c v c r l n o i t l l n a o i y f : r n o i y g u g : r

      如此情况,运行sudo apt-get install libcurl4-openssl-dev

  7. 虚拟机暴露到局域网内

    现在其他pc还不能访问shinyserver,不够方便
    vmware软件的左上角,编辑,虚拟网络编辑器,点右下角更改设置,选第一个VMnet0,已桥接至选择当前用的网卡,有线选有线,无线选无线
    更改虚拟机的设置,网络适配器,网络连接改桥接模式,进入ubuntu的设置,网络,有限,ipv4,方式改为手动,地址和DNS填写和物理机一模一样的,重启一下,期间可能会看到很多打印机添加进来,能不能上网还得上个www.baidu.com看看

充分利用linux系统

  1. 管理用户组

    sudo groupadd -g 7777 student
    查看,在最后一行可以看到student:x:7777
    cat /etc/group
    添加用户xiaoming到student组
    sudo usermod -aG student xiaoming

  2. 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配置

s u d o n a n o / e t c / n g i n x / s i t e s - e n a b l e d / d e f a u l t

server_name _;这一行下面添加

l } o c a p p p p r c t r r r r e l i o o o o w i o x x x x r e n y y y y i n _ _ _ _ t t / p h s s e _ s a t e e m h s t t t a i s p _ _ x n _ h h / _ y h v e e s b / t e a a h o t r d d i d { p s e e n y : i r r y _ / / s n U C [ i l p o ^ z o 1 g n / e c . r n ] a 1 a e + 3 l ; d c ) 0 h e t $ 0 o i M s $ o $ ; t h n 1 : t / 3 t $ 8 p c p 3 _ o e 8 u n r / p n m ; g e a r c n a t e d i n e o t ; n ; _ u p g r a d e ;

client_max_body_size是允许上传的文件大小, 要和shiny中设置的一样