You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用blogdown::new_site()在Shiny Server创建站点异常:本地正常,服务器找不到CSS

解决Shiny Server上blogdown::new_site()资源加载异常的问题

我之前帮不少开发者解决过Shiny Server部署blogdown站点的类似问题,你遇到的CSS等资源找不到的情况,大概率是路径权限或者资源加载配置的问题,咱们一步步来排查解决:

  • 确认工作目录与站点路径
    Shiny Server运行时的默认工作目录和你本地R环境不一样,直接运行blogdown::new_site()可能会把站点创建到shiny用户无权访问的目录里。先在Shiny Server的R会话里运行getwd()确认当前工作目录,之后用绝对路径创建站点,比如:

    blogdown::new_site(dir = "/var/shiny-server/my-blog")
    

    建议把站点放在Shiny Server默认的托管目录(比如/var/shiny-server/)下,避免权限冲突。

  • 修正静态资源的权限
    blogdown生成的CSS、JS、图片等静态资源,需要Shiny Server的运行用户(一般是shiny用户)拥有读取权限。创建站点后,在服务器终端运行以下命令递归修改目录权限:

    sudo chown -R shiny:shiny /var/shiny-server/my-blog
    

    这样能确保shiny用户可以访问所有站点文件。

  • 调整blogdown的资源加载配置
    部分blogdown主题会用相对路径加载资源,但Shiny Server的请求路由和本地预览不同,容易导致路径错误。你可以:

    1. 打开站点根目录下的config.toml(或config.yaml),设置baseurl = "/"(如果是根路径部署),或者根据Shiny Server的访问路径调整这个值;
    2. 先运行blogdown::build_site()静态生成所有页面,再让Shiny Server托管生成的public目录——静态构建后的资源路径更稳定,不容易出动态生成的路径问题。
  • 配置Shiny Server指向正确的资源目录
    如果是把blogdown站点作为Shiny应用部署,需要修改Shiny Server的配置文件(通常是/etc/shiny-server/shiny-server.conf),指定站点根目录为blogdown生成的public文件夹。比如:

    location /my-blog {
      site_dir /var/shiny-server/my-blog/public;
      log_dir /var/log/shiny-server;
      directory_index on;
    }
    

    修改完成后,重启Shiny Server生效:

    sudo systemctl restart shiny-server
    

如果以上步骤还没解决问题,可以去/var/log/shiny-server/目录下查看日志文件,里面会记录具体的资源加载错误信息,能帮你更精准定位问题。

内容的提问来源于stack exchange,提问作者jyjek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:19:16