There is a nice R module for apache: rApache. So you can easily publish statistics.
To install rApache first install the following packages from the Debian/Ubuntu repository:
1 | aptitude install apache2 apache2-mpm-prefork apache2-prefork-dev r-base-dev |
So the basics are done. Lets install rApache. Grab the latest version:
1 | wget http://biostat.mc.vanderbilt.edu/rapache/files/rapache-latest.tar.gz |
extract the contents and cd into it. The installation process should be clear, I had to give a hint for the apxs2 location:
1 2 3 | ./configure --with-apxs=/usr/bin/apxs2 make make install |
To notify apache about the new module you need to create two more files. First one is /etc/apache2/mods-available/r.conf:
1 2 3 4 5 6 7 8 9 | <Location /R> ROutputErrors SetHandler r-script RHandler sys.source </Location> <Location /RApacheInfo> SetHandler r-info </Location> |
Now all files in /R are assumed to be R-scripts, in /RApacheInfo you’ll find some information about your installation.
The second file is /etc/apache2/mods-available/r.load:
1 | LoadModule R_module /usr/lib/apache2/modules/mod_R.so |
This file just defines which lib to load.
To finish the installation you need to load the rApache module and restart the webserver via:
1 2 | a2enmod r /etc/init.d/apache2 restart |
That’s it. You can test whether all was successful by browsing to localhost/RApacheInfo, hopefully you’ll see some config stuff. To prepare some own tests create a directory /var/www/R (assuming your document-root is /var/www) and paste something like this in a file called test:
1 2 | y = rnorm(100) print(y) |
Browsing to localhost/R/test you should see something like this:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | [1] -0.4969626136 -0.0004799614 1.3858672447 -0.1888848545 0.5577465024 [6] -0.6463581808 1.3594363388 1.8160182284 -1.8602721944 0.3249432873 [11] 1.0861606647 -0.5075055497 -0.5152062853 0.4851131375 0.2924883195 [16] -0.5542238124 1.2741001461 0.2627202474 -0.8986869795 -0.8628182849 [21] -0.0788598913 0.4843055866 -0.2747585510 -1.1928500793 1.6193763442 [26] 0.3452218627 0.9518228897 -0.5858433386 1.9585346877 -0.2582043114 [31] -1.7989436202 1.2713761553 0.9045031014 -0.3456065867 0.3739555330 [36] 0.7512315203 -0.5289340037 -0.7700091217 -1.5103278314 -1.5195628428 [41] -0.8100795062 1.1027597227 0.0194147933 0.7819879165 -0.3914496199 [46] -0.4650911293 0.5889685176 -0.9659270213 1.0570030616 -0.0657166412 [51] -0.2077095857 0.6421821337 -0.1911934111 -3.1567052058 0.2704713187 [56] -0.5154689593 0.0923834868 -1.2100314635 0.6693369266 -1.2093881229 [61] 1.6755264101 1.2151146432 0.6683583636 -0.2982231602 1.4830922366 [66] 1.6505026636 -0.1769048244 0.3516470621 -0.0053594481 -0.3776870673 [71] -0.4797554602 1.2207702646 1.2762816419 -2.6137169267 -1.4423704831 [76] -0.4251822440 0.8007722424 -0.4985947758 -2.0685396392 -1.6844317212 [81] -0.2509955532 0.7906569225 -0.1259848747 -0.1352738978 -1.4943405839 [86] -2.4272199144 -0.5778250558 1.2579971393 -1.0476874144 0.2305160769 [91] -0.2920446292 0.1823053837 1.8858770756 1.4158084170 -1.2539321864 [96] 1.2667650232 0.1272379338 1.2726069769 0.8745111042 0.3848103655 |
To create a graphic you need to change the content type to an image type. A small example might give you an idea:
1 2 3 4 5 6 7 8 | setContentType ("image/png") temp <- tempfile () y = rnorm (100) png (temp, type="cairo") plot (1:100, y, t='l') dev.off () sendBin (readBin (temp, 'raw', n=file.info(temp)$size)) unlink (temp) |
Reload the page and you’ll see a more or less nice plot :-P
That’s it for the moment, for a more interactive interface take a look at the ggplot2 mod.
R-bloggers.com offers daily e-mail updates about R news and tutorials on topics such as: visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more...

Zero Inflated Models and Generalized Linear Mixed Models with R.
Zuur, Saveliev, Ieno (2012).