第三章:安装 Shiny — Pavian 依赖环境配置

讲完了 Pavian 能做什么、为什么需要它,咱们得先把它跑起来。Pavian 是个 Shiny 应用,说白了就是跑在 R 环境里的一个 Web 服务。你要是没装过 Shiny 相关的东西,这章就是你的起点。

我刚开始接触 Shiny 时,总觉得“装个包而已,几条命令搞定”。结果呢?卡在权限、版本、端口上折腾了大半天。嗯,这章我把踩过的坑都捋一遍,咱们一次装稳。

3.1 Shiny 是什么?为什么 Pavian 非要它?

Shiny 是 R 语言的一个 Web 框架。它能让你的 R 脚本变成一个交互式网页。用户不用写代码,点几下就能跑分析、看图表。

Pavian 的整个前端界面、上传文件、运行分类、展示结果,全都是基于 Shiny 构建的。你没装 Shiny,Pavian 就只是个代码仓库,跑不起来。

我个人的习惯是:在正式部署前,先在本机搭一个 Shiny Server 测试环境。这样调试方便,也避免一上来就动生产服务器。

提示:如果你只是临时用一下 Pavian,也可以用 RStudio 直接运行 Shiny 应用。但长期做项目,建议还是装 Server 版,稳定且支持多用户。

3.2 安装 R 环境(如果还没装)

Shiny 是 R 的包,所以第一步:把 R 装好。我的经验是千万别用系统自带的旧版本,Pavian 对 R 版本有要求,至少 4.0 以上。

咱们以 Ubuntu 20.04/22.04 为例。先添加 CRAN 源,再安装。

# 添加 CRAN 源
sudo apt update
sudo apt install --no-install-recommends software-properties-common dirmngr
wget -qO- https://cloud.r-project.org/bin/linux/ubuntu/marutter_pubkey.asc | sudo tee -a /etc/apt/trusted.gpg.d/cran_ubuntu_key.asc
sudo add-apt-repository "deb https://cloud.r-project.org/bin/linux/ubuntu $(lsb_release -cs)-cran40/"

# 安装 R
sudo apt update
sudo apt install r-base r-base-dev

装完检查版本:

R --version

正常会输出类似 R version 4.3.2 (2023-10-31)。低于 4.0 的,建议重新配源。

避坑:不要用 sudo apt install r-base 直装,那个版本通常很老。我曾经在生产服务器上直接 apt 装了个 3.6,结果 Pavian 报了一堆包版本冲突,最后乖乖重装。

3.3 安装 Shiny 核心包

R 环境就绪后,咱们在 R 控制台里安装 shiny 包。注意,有些系统会缺编译工具,提前装好 libcurl4-openssl-dev 之类的库,不然编译时容易卡住。

# 一次性安装系统依赖(Debian/Ubuntu)
sudo apt install libcurl4-openssl-dev libssl-dev libxml2-dev

# 进入 R 控制台
sudo R
> install.packages("shiny", repos = "https://cran.rstudio.com/")

安装过程会下载并编译。网速慢的话,几分钟到十几分钟不等。我建议用 repos 参数指定国内的镜像,比如 https://mirrors.tuna.tsinghua.edu.cn/CRAN/,能快不少。

装完后测试一下:

> library(shiny)
> runExample("01_hello")

这时候浏览器应该弹出一个小窗口,显示一个带滑动条的交互页面。如果没弹出来,检查一下防火墙或者 R 的端口是不是被占用了。

提示:如果 runExample 正常,说明 Shiny 核心已经装好了。Pavian 后续还要依赖 shinyjs、DT、ggplot2 等包,但安装流程都在 Pavian 自己的 install.R 里自动处理,咱们这里先把 Shiny 基础搞定就行。

3.4 安装 Shiny Server(可选但推荐)

Pavian 最终要作为长期服务运行,Shiny Server 能让它开机自启、管理多个应用、支持多用户访问。我个人习惯用 Shiny Server 开源版,免费且够用。

官方提供了 .deb 包,直接下载安装:

# 安装依赖
sudo apt install -y gdebi

# 下载 Shiny Server(以 Ubuntu 22.04 为例)
wget https://download3.rstudio.org/ubuntu-18.04/x86_64/shiny-server-1.5.22.1000-amd64.deb

# 安装
sudo gdebi shiny-server-1.5.22.1000-amd64.deb

装完后,服务默认启动,监听端口 3838。你可以访问 http://服务器IP:3838,看到 Shiny Server 的欢迎页面就算成功。

我遇到过一个问题:Shiny Server 启动后,访问却报 502。查日志发现是 /srv/shiny-server 目录权限不对。解决方法:

sudo chown -R shiny:shiny /srv/shiny-server
sudo systemctl restart shiny-server

3.5 配置 Shiny Server 让 Pavian 跑起来

Pavian 的源码通常放在 /srv/shiny-server/pavian 下。你需要把 Pavian 的整个文件夹拷贝过去,然后设置正确的用户和权限。

# 假设 Pavian 源码在你当前目录
sudo cp -r pavian /srv/shiny-server/
sudo chown -R shiny:shiny /srv/shiny-server/pavian

然后打开 /etc/shiny-server/shiny-server.conf,看一眼配置。默认的内容大概是这样:

# Instruct Shiny Server to run applications as the user "shiny"
run_as shiny;

# Define a server that listens on port 3838
server {
  listen 3838;

  # Define a location at the base URL
  location / {
    # Host the directory of Shiny Apps stored in this directory
    site_dir /srv/shiny-server;

    # Log all Shiny output to files in this directory
    log_dir /var/log/shiny-server;

    # When a user visits the base URL rather than a particular application,
    # an index of the applications available in this directory will be shown.
    directory_index on;
  }
}

基本不用改。如果你想让 Pavian 在根路径直接显示,可以改成 location /pavian { ... },但我建议保留 / 的目录索引,方便后期加其他应用。

3.6 验证安装与常见错误

重启 Shiny Server,然后打开浏览器:

sudo systemctl restart shiny-server
# 浏览器访问 http://你的IP:3838/pavian/

正常情况下,你会看到 Pavian 的上传界面。如果报错,先看日志:

sudo tail -f /var/log/shiny-server/pavian-*.log

常见错误及修复对照表:

错误现象 可能原因 解决方法
502 Bad Gateway Shiny Server 服务未启动或端口被占用 sudo systemctl status shiny-server 检查,若占用则改端口
应用加载到一半卡住 缺少依赖包(如 shinyjs、DT) 在 R 中手动安装缺失包,或用 Pavian 自带的 install.R
权限错误:Permission denied /srv/shiny-server/pavian 目录不是 shiny 用户所有 sudo chown -R shiny:shiny /srv/shiny-server/pavian
找不到 pavian 应用 文件夹名不对或路径不对 确认目录名是 pavian,且位于 /srv/shiny-server/ 下
避坑:我曾经在 CentOS 上装 Shiny Server,默认日志路径是 /var/log/shiny-server/,结果那台机器磁盘写满了,应用启动直接挂掉。建议生产环境挂一块独立的日志盘,或者设置日志轮转。

3.7 本章核心流程总览

咱们把整个安装流程画一张图,方便你对照操作。

Shiny Server + Pavian 安装流程图 Shiny Server + Pavian 安装流程图 安装 R (≥4.0) 安装系统依赖库 安装 Shiny R 包 测试 Shiny 示例 安装 Shiny Server 部署 Pavian 应用 验证访问 /pavian/ 各步骤顺序不能乱 跳步会导致依赖缺失 测试示例是必选项 不测试直接部署容易踩坑
重点回顾:
  1. R 版本务必 ≥4.0,否则 Pavian 的依赖包装不上。
  2. 系统依赖库缺一不可,我建议直接装 libcurl4-openssl-dev libssl-dev libxml2-dev 三件套。
  3. Shiny 包装完后一定跑一下示例,确认 R 和包都没问题。
  4. Shiny Server 装完检查 /srv/shiny-server 目录权限,shiny 用户必须有读和执行权限。
  5. 部署 Pavian 后,如果页面出不来,先看 /var/log/shiny-server/pavian-*.log。