Store WeBWorK's temporary files in a separate directory or partition

From WeBWorK_wiki
Revision as of 13:27, 31 January 2012 by Apizer (talk | contribs)
Jump to navigation Jump to search

If you are running a large WeBWorK installation (say with 500 or more students) or your installation is on a slower server, it is a good idea to put all of WeBWorK's temporary files in a separate directory or partition usually named wwtmp. Any files or directories under the directory wwtmp needed by WeBWorK will be automatically recreated if needed so there is no reason to back up this directory. Not backing up this directly can significantly lessen the backup load on large installations.

Create the wwtmp directory or partition

You can set up wwtmp as a separate partition or simply as a directory. Create the wwtmp directory under Apache's main server document root which is set during the Apache installation. For Ubuntu, this is /var/www which we will assume in the instructions below.

Actually you can do this at any time and your active courses will continue to function seemingly without change. The only change behind the scenes will be that temporary files will be stored in a different location.

First we set the group and permissions for the wwtmp directory. As root (or using sudo), run the commands

# cd /var/www
# chgrp wwdata wwtmp
# chmod ug+w wwtmp
# chmod g+s wwtmp

Next we have to edit global.conf so that WeBWorK uses the new wwtmp directory. Since we have a working WeBWorK system, first we make a backup copy of global.conf.

$ cd /opt/webwork/webwork2/conf
$ cp global.conf global.conf.bak1
$ gedit global.conf

Now edit global.conf. Find the lines

$webworkDirs{htdocs_temp}   = "$webworkDirs{htdocs}/tmp";
$webworkURLs{htdocs_temp}   = "$webworkURLs{htdocs}/tmp";

and replace them by

#$webworkDirs{htdocs_temp}   = "$webworkDirs{htdocs}/tmp";
#$webworkURLs{htdocs_temp}   = "$webworkURLs{htdocs}/tmp";
$webworkDirs{htdocs_temp}   = '/var/www/wwtmp';
$webworkURLs{htdocs_temp}   = '/wwtmp';

Next find the lines

$courseDirs{html_temp}   = "$courseDirs{html}/tmp";
$courseURLs{html_temp}   = "$courseURLs{html}/tmp";

and replace them by

#$courseDirs{html_temp}   = "$courseDirs{html}/tmp";
#$courseURLs{html_temp}   = "$courseURLs{html}/tmp";
$courseDirs{html_temp}   = "/var/www/wwtmp/$courseName";
$courseURLs{html_temp}   = "/wwtmp/$courseName";

Then save the file and quit. If you look at the wwtmp directory you will find it empty but after you restart apache and then access some WeBWorK problems, you will find temporary directories and files in wwtmp. Remember your have to restart apache for these changes to take effect.