Heroku Buildpack for R 使用教程
1. 项目介绍
Heroku Buildpack for R 是一个用于在 Heroku 平台上部署 R 语言应用程序的构建包。它支持 R 语言的统计计算和 CRAN 包管理,适用于需要使用 R 语言进行数据分析、统计建模和 Web 应用开发的项目。该构建包支持 Heroku 的多个栈(如 heroku-18, heroku-20, heroku-22),并且集成了 Packrat 和 renv 包管理器,以及 Shiny 和 Plumber Web 应用框架。
2. 项目快速启动
2.1 创建 Heroku 应用并添加 Buildpack
首先,创建一个新的 Heroku 应用并添加 vsv/heroku-buildpack-r
构建包:
heroku create --buildpack vsv/heroku-buildpack-r
或者,对于已有的应用,可以使用以下命令添加构建包:
heroku buildpacks:add vsv/heroku-buildpack-r
2.2 配置 R 应用
在项目根目录下创建一个 init.R
文件,用于安装所需的 R 包。例如:
# init.R
my_packages = c("package_name_1", "package_name_2")
install_if_missing = function(p) {
if (p %in% rownames(installed.packages()) == FALSE) {
install.packages(p, clean=TRUE, quiet=TRUE)
}
}
invisible(sapply(my_packages, install_if_missing))
2.3 部署应用
将代码推送到 Heroku 进行部署:
git push heroku main
2.4 运行 R 应用
部署完成后,可以通过以下命令运行 R 控制台:
heroku run R
或者运行 R 脚本:
heroku run Rscript
3. 应用案例和最佳实践
3.1 Shiny 应用
Shiny 是一个用于创建交互式 Web 应用的 R 包。使用 Heroku Buildpack for R 可以轻松部署 Shiny 应用。在项目根目录下创建一个 run.R
文件:
# run.R
library(shiny)
port <- Sys.getenv('PORT')
shiny::runApp(
appDir = getwd(),
host = '0.0.0.0',
port = as.numeric(port)
)
3.2 Plumber 应用
Plumber 是一个用于创建 RESTful API 的 R 包。使用 Heroku Buildpack for R 可以轻松部署 Plumber 应用。在项目根目录下创建一个 app.R
文件:
# app.R
library(plumber)
port <- Sys.getenv('PORT')
server <- plumb("plumber.R")
server$run(
host = '0.0.0.0',
port = as.numeric(port)
)
4. 典型生态项目
4.1 Packrat 和 renv
Packrat 和 renv 是 R 语言的包管理工具,用于管理项目的依赖关系和版本控制。Heroku Buildpack for R 支持这两种包管理器,可以通过在项目中包含 packrat/init.R
或 renv/activate.R
文件来启用它们。
4.2 Heroku Scheduler
Heroku Scheduler 是一个用于调度定时任务的工具。可以结合 Heroku Buildpack for R 使用,例如调度一个 R 脚本的执行:
R --file=prog.R --gui-none --no-save
通过以上步骤,您可以轻松地在 Heroku 平台上部署和运行 R 语言应用程序。