目录

与Apache部署

Apache与Rook部署

使用apache而不是使用r的rook是稳定。有趣的是,Rook是不稳定的,不应不受监督。不久之后,服务器通常没有反应。另一方面,Apache具有增加其稳定性的多个功能,例如并行化。Apache通常配置有模块,例如prefork.c维护多个儿童流程以处理传入的请求。如果任何孩子崩溃,父进程会自动重生新的过程。分析pageserver利用这一点,如果孩子们使用太多记忆,让孩子们杀死自己(通过发送自己Sigusr1- 这是一个深奥的功能,Apache进程将其解释为“完成此请求,然后退出”)。

除此之外,Apache是​​一个完全成熟的软件,许多其他工具都可以用于监视,登录,部署等。您还可以使用MOD_PROXY来解决服务的跨域问题(例如,如果您想要搜索 -前面是来自另一个系统)。

使用Apache代替ROOK的缺点是更复杂的安装和初始设置,并且服务器启动/重新启动较慢。

简而言之,Rook是原型制作,开发,调试的首选部署。它也可以考虑单用户模式,其中Web应用程序的唯一用户将是从R内部启动服务器的人,并且每次崩溃时都不介意重新启动它。

如果其他人要使用它,特别是如果您希望它在回家后和周末继续运行,则需要投资于建立Apache部署。

好消息是,我将向您展示如何通过本文档的接下来几个步骤进行操作。

安装Apache

希望这已经为您完成。如果您在OS X上运行,则可能已经有了它。如果您正在运行任何现代Linux发行版,它可能会安装,如果没有,则可以在软件包管理器上安装。

安装Rapache

http://rapache.net并按照那里的说明进行操作。对Rapache的作者(和Rook)的作者杰夫·霍纳(Jeff Horner)大喊大叫……当我有疑问时,他总是回答他的电子邮件!

应用程序目录

我们将为应用程序创建一些配置式文件,因此很方便将它们放置在所有相同的目录中。让我们创建该目录。

library(AnalysispagesErver)app.basedir < - “ Rapache-example” dir.create(app.basedir)app.basedir <-Sunlorizepath(app.basedir)app.basedir
## [1]“/tmp/rtmphziykj/rbuild589f2999e7c3b/sanamlypageserver/vignettes/apache-example”

启动脚本

首先,您将创建一个启动脚本。这将包括建造Analysis PagereGistry,然后从中Analysis Pagerapacheapp。最后调用特殊方法add.handlers.to.global应用对象的。

这是一个例子。我们将使用随附的示例注册表分析pageserver

Library(Analysis Pageserver)reg <-AniplyPageserver ::: trig.registry()app <-apache.app.from.registry(reg,tmpdir = tempdir())app app $ add.handlers.global()

将此文件放入Rapache-example/driver.r

保持此脚本尽可能精简是一个很好的工程。组织它的一种好方法是为您的应用程序开发R包。它应该提供一个构建Analysis PagereGistry的函数,然后您还可以拥有四行脚本。

将更多逻辑放在此驱动程序脚本中,因此很难测试和维护。

确定应用程序的位置

通过“位置”,我的意思是URL的前缀。在此页面的示例中,我们将其放在下面/myapp。这意味着与应用程序相关的所有资源和URL都将以类似http://server-name.com/myapp

config.js文件

接下来,您需要自定义JavaScript配置文件。有一个R函数可以为您编写。我们将其保存到Rapache-example/config.js

app.prefix < - “/myApp” config.lines <-config.js(app.prefix = app.prefix)config.js.path <-fire.path(app.basedir,“ config.js”)writelines(config.lines,file.path(app.basedir,“ config.js”))

AnalyspagesErver特定的httpd.conf

接下来,您必须为服务器设置HTTPD.Conf文件。功能apache.httpd.conf可以为你写这个。让我们把它放在其他文件旁边Rapache-example

您需要知道的一件事是通往mod_r.so,这是您刚安装的Rapache。

通常这是在其他Apache扩展程序的目录中,这是由APXS或者APXS2可执行,有参数-Q libexecdir。您可能需要使用此工具的完整路径,有时会安装在/sbin或者/usr/sbin。在我的(OS X)笔记本电脑上,完整的路径是/USR/libexec/apache2/mod_r.so

继续我们的例子:

driver.path <-file.path(app.basedir,“ driver.r”)app.location < - “/myapp” conf.lines <-Apache.httpd.conf(driver.path = driver.path.path,app.location= app.prefix,config.js.path = config.js.path,mod.r.path =“/usr/libexec/apache2/mod_r.so”),“ myApp-httpd.conf”)Writelines(conf.lines,httpd.conf.path)

在系统httpd.conf中包含应用程序的httpd.conf

在这一点上,您有一个httpd.conf,这还不错,但它并不是真正的。如果您正在从笔记本电脑或具有root访问的小型机器上运行,则可以在系统末端将此线路滑入httpd.conf:

包括/USERS/FRIEDMAB/EP/Analysispageserver/Vignettes/rapache-example/myapp-httpd.conf

并重新启动您的Apache服务器,也许类似

sudo apache重新启动

最后,您可以将浏览器指向着陆页http://localhost/myapp/client/analissy-page-server.html

这看起来像Rook部署,但是如果您从另一台计算机连接,通常会更稳定。

部署如果您没有修改系统Apache配置的权利

如果您无权修改共享Apache服务器的配置,则必须制作自己的Apache。您可以通过复制系统Apachectl脚本并将路径修改为httpd.conf文件来做到这一点。然后制作系统httpd.conf文件的副本,并将您的私有Apachectl指向使用。确保包括您的应用程序的特定httpd.conf文件。设置您的pidfile,lockfile,errorlog和customlog,以写入本地目录,而不是与系统apache冲突。将您的收听指令更新为高级端口。祝你好运!


下一个

与Fastrweb部署