In the last post we installed Rapache, but didn't get to configuring it. Let's now create the "rapache.conf" file and some "Hello World" examples to check that Rapache works.
Configuration
As was the case for PHP and Python, we create a file in the "/etc/httpd/conf.d" directory with configuration information. We will name this "rapache.conf" and start out with the following text:
LoadModule R_module /etc/httpd/modules/mod_R.so
ROutputErrors
<Location /RApacheInfo>
SetHandler r-info
</Location>
<Directory /var/www/html/rscripts>
SetHandler r-script
RHandler sys.source
</Directory>
<Directory /var/www/html/brew>
SetHandler r-script
RHandler brew::brew
</Directory>
The "LibModule" statement tells Apache to load the "mod_R.so" shared library and associate it with the "R_module" set of directives.
The "ROutputErrors" statement indicates that R errors should be displayed in the brower.
The "Location" statement creates a location "RApacheInfo" that displays information about the running rapache module. We can test that rapache has loaded and is running correctly by browsing to the link:
http://localhost/RApacheInfo
The first "Directory" statement indicates that all files in the "rscripts" subdirectory will be processed by the "sys.source()" function. This will execute the file as an R script.
The second "Directory" statement indicates that all files in the "brew" subdirectory will be processed by the "brew" function that is in the "brew" package. This function takes a file containing a mix of HTML and R code, executes the R code, and places the results within the HTML that is returned. This is analogous to the mixture of HTML and code in PHP and PSP.
Hello World: R Script
We can test the "R Script" handling with some simple code that generates HTML. This code also uses the "setContentType" function to indicate that the result should be treated as HTML, and finishes with the "DONE" statement indicating the script has finished without error.
setContentType("text/html")
cat("<HTML><BODY><H1>")
cat("Hello from R!")
cat("</H1></BODY></HTML>")
DONE
If we save this to the file "test.R" in "/var/www/html/rscripts" we will see "Hello from R!" displayed in the Header 1 font when we browse to:
http://localhost/rscripts/test.R
Hello World: Brew
Instead of writing out all of the HTML directly with "cat()" commands, we can create an "rhtml" file containing a mix of R and HTML. This then gets processed by the "brew" function to create the HTML response.
As an example, we create the file "test.rhtml" in "/var/www/html/brew" containing:
<HTML>
<BODY>
<H1>
<% cat("Hello from Brew!") %>
</H1>
</BODY>
</HTML>
Browsing to "http://localhost/brew/test.rhtml" will display "Hello from Brew!" in the Header 1 font.
Beyond Hello
Rapache provides rich capabilities for accessing all of the information in the HTTP request from within R, and for setting information as part of the HTTP response.
It also provides ways to pass information other than HTML back as the response, and can even support the uploading of files to the server as part of the client's request.
This is discussed on the Rapache manual and displayed by the examples available from the Rapache web site.
Configuration
As was the case for PHP and Python, we create a file in the "/etc/httpd/conf.d" directory with configuration information. We will name this "rapache.conf" and start out with the following text:
LoadModule R_module /etc/httpd/modules/mod_R.so
ROutputErrors
<Location /RApacheInfo>
SetHandler r-info
</Location>
<Directory /var/www/html/rscripts>
SetHandler r-script
RHandler sys.source
</Directory>
<Directory /var/www/html/brew>
SetHandler r-script
RHandler brew::brew
</Directory>
The "LibModule" statement tells Apache to load the "mod_R.so" shared library and associate it with the "R_module" set of directives.
The "ROutputErrors" statement indicates that R errors should be displayed in the brower.
The "Location" statement creates a location "RApacheInfo" that displays information about the running rapache module. We can test that rapache has loaded and is running correctly by browsing to the link:
http://localhost/RApacheInfo
The first "Directory" statement indicates that all files in the "rscripts" subdirectory will be processed by the "sys.source()" function. This will execute the file as an R script.
The second "Directory" statement indicates that all files in the "brew" subdirectory will be processed by the "brew" function that is in the "brew" package. This function takes a file containing a mix of HTML and R code, executes the R code, and places the results within the HTML that is returned. This is analogous to the mixture of HTML and code in PHP and PSP.
Hello World: R Script
We can test the "R Script" handling with some simple code that generates HTML. This code also uses the "setContentType" function to indicate that the result should be treated as HTML, and finishes with the "DONE" statement indicating the script has finished without error.
setContentType("text/html")
cat("<HTML><BODY><H1>")
cat("Hello from R!")
cat("</H1></BODY></HTML>")
DONE
If we save this to the file "test.R" in "/var/www/html/rscripts" we will see "Hello from R!" displayed in the Header 1 font when we browse to:
http://localhost/rscripts/test.R
Hello World: Brew
Instead of writing out all of the HTML directly with "cat()" commands, we can create an "rhtml" file containing a mix of R and HTML. This then gets processed by the "brew" function to create the HTML response.
As an example, we create the file "test.rhtml" in "/var/www/html/brew" containing:
<HTML>
<BODY>
<H1>
<% cat("Hello from Brew!") %>
</H1>
</BODY>
</HTML>
Browsing to "http://localhost/brew/test.rhtml" will display "Hello from Brew!" in the Header 1 font.
Beyond Hello
Rapache provides rich capabilities for accessing all of the information in the HTTP request from within R, and for setting information as part of the HTTP response.
It also provides ways to pass information other than HTML back as the response, and can even support the uploading of files to the server as part of the client's request.
This is discussed on the Rapache manual and displayed by the examples available from the Rapache web site.