Parent Directory
|
Revision Log
fixed a mispelling
1 2 WeBWorK 3 Online Homework Delivery System 4 Version 2.0 5 6 Copyright 2000-2004, The WeBWorK Project 7 All rights reserved. 8 9 The contents of this file were pulled from the WeBWorK wiki on 04-January-2004. 10 The latest version is available at http://devel.webwork.rochester.edu/. In this 11 document: 12 13 DESCRIPTION 14 SYSTEM REQUIREMENTS 15 INSTALLATION 16 APACHE CONFIGURATION 17 WEBWORK CONFIGURATION 18 COURSE CREATION 19 20 ____DESCRIPTION_________________________________________________________________ 21 22 WeBWorK is a Perl-based system for delivering individualized homework 23 problems over the web. By providing students with immediate feedback as to 24 the correctness of their answers, students are encouraged to make multiple 25 attempts until they succeed. By individualizing problems, cheating is 26 discouraged. By providing instructors with real-time statistics, lesson 27 plans can be customized to better serve students. 28 29 ____SYSTEM REQUIREMENTS_________________________________________________________ 30 31 Here are the software packages required by WeBWorK 2. Most OS vendors 32 precompiled binaries of these packages. The version requirements given 33 below are somewhat imprecise. 34 35 +-----------------------------------------------------------------------------------+ 36 | Package | Required For | Source |Version| 37 |-----------+----------------+----------------------------------------------+-------| 38 |Perl |basic operation |http://perl.org/ |>= 5.6 | 39 |-----------+----------------+----------------------------------------------+-------| 40 |Apache |basic operation |http://httpd.apache.org/ |1.3.x | 41 |-----------+----------------+----------------------------------------------+-------| 42 |mod_perl |basic operation |http://perl.apache.org/ |1.x | 43 |-----------+----------------+----------------------------------------------+-------| 44 |LaTeX |basic operation |http://www.tug.org/tetex/ | | 45 |-----------+----------------+----------------------------------------------| | 46 |netpbm |basic operation |http://netpbm.sf.net/ | | 47 |-----------+----------------+----------------------------------------------+-------| 48 |dvipng |"images" display|http://sourceforge.net/projects/preview-latex/|>= 0.8 | 49 | |mode | | | 50 |-----------+----------------+----------------------------------------------+-------| 51 |preview.sty|"images" display|http://sourceforge.net/projects/preview-latex/| | 52 | |mode | | | 53 |-----------+----------------+----------------------------------------------| | 54 |tth |"formatted-text"|http://hutchinson.belmont.ma.us/tth/ | | 55 | |display mode | | | 56 |-----------+----------------+----------------------------------------------| | 57 |libgdbm |GDBM database |http://www.gnu.org/software/gdbm/gdbm.html | | 58 | |backend | | | 59 +-----------------------------------------------------------------------------------+ 60 61 Perl must be compiled with GDBM support to use GDBM databases. (WeBWorK 62 1.x databases are usually GDBM.) Most OS vendors compile their perl 63 packages with this option on. 64 65 Also, some perl modules are required. All are available in CPAN, and many 66 OS vendors provide packages of these modules. 67 68 * For WeBWorK 2 69 70 * Bundle::Apache 71 * DBI and the DBD:: module of your choice (required if you wish to 72 use an SQL database backend) 73 * Data::UUID 74 * Date::Format and Date::Parse 75 * Mail::Sender 76 * SOAP::Lite (required if you wish to use a remote renderer) 77 78 * For PG (required if you wish to use a local renderer) 79 80 * GD 81 82 ____INSTALLATION________________________________________________________________ 83 84 Unpacking from CVS 85 86 A WeBWorK installation currently consists of two directory trees, a 87 webwork tree and a pg tree. These trees are stored as the CVS modules 88 webwork-modperl and pg, respectively. To check out from CVS, follow the 89 instructions in the WeBWorKCVS topic. After installing the SSH key, check 90 out the webwork-modperl and pg modules: 91 92 $ cvs checkout -P webwork-modperl 93 $ cvs checkout -P pg 94 95 Unpacking from tarballs 96 97 First, download the two tarballs: webwork-X.X.tar.bz2 and pg-X.X.tar.bz2. 98 ("X.X" represents the version number, i.e. "2.0pr2".) These files are 99 available from our SourceForge project page: 100 http://sourceforge.net/project/showfiles.php?group_id=93112 101 102 Untar them somewhere (like your home directory). 103 104 $ tar -xjf webwork-2.0pr2.tar.bz2 105 $ tar -xjf pg-2.0pr2.tar.bz2 106 107 Then, become root and move the directories to the your installation 108 directory. I prefer to use /opt. 109 110 # cp -r webwork-2.0pr2 /opt 111 # cp -r pg-2.0pr2 /opt 112 113 System permissions 114 115 Some directories must be writeable by the web server: 116 117 +---------------------------+ 118 | directory | 119 |---------------------------| 120 |webwork-2.0pr2/DATA | 121 |---------------------------| 122 |webwork-2.0pr2/DATA/uploads| 123 |---------------------------| 124 |webwork-2.0pr2/htdocs/tmp | 125 +---------------------------+ 126 127 Assuming that your web server runs as the user www, you can achieve this 128 by running: 129 130 # chown www webwork-2.0pr2/DATA 131 # chown www webwork-2.0pr2/DATA/uploads 132 # chwon www webwork-2.0pr2/htdocs/tmp 133 134 ____APACHE CONFIGURATION________________________________________________________ 135 136 WeBWorK requires Apache 1.3 and mod_perl 1.0 to run. For instructions on 137 how to compile, install, and test mod_perl, consult the mod_perl 138 Installation Guide. 139 140 Once Apache and mod_perl are installed, Apache must be configured to 141 handle requests for WeBWorK. Apache needs to know about three locations: 142 143 * The location that is handled by the Apache::WeBWorK module, usually 144 /webwork2. 145 * The location of system-wide resources, usually /webwork2_files. 146 * The location of course-specific resources, usually /webwork2_courses. 147 148 In the following examples, I'm assuming that you unpacked the WeBWorK 2 149 distribution to /opt/webwork2, and the PG distribution to /opt/pg. If your 150 Apache configuration is sufficiently paranoid, you may need to add the 151 following to the Location and Directory stanzas below, to permit access: 152 153 Order allow,deny 154 Allow from all 155 # or "Allow from yourschool.edu" 156 157 Examples 158 159 * Example 1: Standard setup 160 * Example 2: Virtual host setup 161 162 Example 1: Standard setup 163 164 You'll probably want this one. 165 166 # Define the location that is handled by the Apache::WeBWorK module, and tell 167 # perl where to find the libraries Apache::WeBWorK will need to run: 168 # 169 <Location /webwork2> 170 PerlSetVar webwork_root /opt/webwork2 171 PerlSetVar pg_root /opt/pg 172 <Perl> 173 use lib "/opt/webwork2/lib" 174 use lib "/opt/pg/lib" 175 </Perl> 176 SetHandler perl-script 177 PerlHandler Apache::WeBWorK 178 </Location> 179 180 # Provide access to system-wide resources: 181 # 182 Alias /webwork2_files /opt/webwork2/htdocs 183 <Directory /opt/webwork2/htdocs> 184 Options None 185 AllowOverride None 186 </Directory> 187 188 # Provide access to course-specific resources: 189 # 190 AliasMatch /webwork2_courses/([^/]*)/(.*) /opt/webwork2/courses/$1/html/$2 191 <Directory /opt/webwork2/courses/*/html> 192 Options FollowSymLinks 193 AllowOverride None 194 </Directory> 195 196 Example 2: Virtual host setup 197 198 This setup configures the root location (/) on a particular name-based 199 virtual host to be handled by Apache::WeBWorK. Please note that in this 200 setup, you would not be able to name a course files or courses. (Not that 201 you'd want to.) 202 203 NameVirtualHost * 204 205 <VirtualHost *> 206 207 ServerName webwork2.yourschool.edu 208 209 # Define the location that is handled by the Apache::WeBWorK module, and tell 210 # perl where to find the libraries Apache::WeBWorK will need to run: 211 # 212 <Location /> 213 PerlSetVar webwork_root /opt/webwork2 214 PerlSetVar pg_root /opt/pg 215 <Perl> 216 use lib "/opt/webwork2/lib" 217 use lib "/opt/pg/lib" 218 </Perl> 219 SetHandler perl-script 220 PerlHandler Apache::WeBWorK 221 </Location> 222 223 # Provide access to system-wide resources: 224 # 225 Alias /files /opt/webwork2/htdocs 226 <Directory /opt/webwork2/htdocs> 227 Options None 228 AllowOverride None 229 </Directory> 230 231 # Provide access to course-specific resources: 232 # 233 AliasMatch /courses/([^/]*)/(.*) /opt/webwork2/courses/$1/html/$2 234 <Directory /opt/webwork2/courses/*/html> 235 Options FollowSymLinks 236 AllowOverride None 237 </Directory> 238 239 </VirtualHost> 240 241 ____WEBWORK CONFIGURATION_______________________________________________________ 242 243 There are two sources of configuration information for a WeBWorK 244 installation. The global.conf file provides defaults for the entire 245 system, while the optional course.conf file overrides those values for a 246 particular course. Both of these files contain nested Perl data structures 247 which define the locations of files and directories, URLs, paths to 248 external programs, and other settings. 249 250 The configuration files are evaluated every time a request is made, so 251 configuration parameters can depend on certain properties of the request. 252 The following variables are made available in the configuration files: 253 254 +------------------------------------------------------------------------+ 255 | variable | description | 256 |------------+-----------------------------------------------------------| 257 |$webworkRoot|The base directory of the WeBWorK installation (i.e. | 258 | |/opt/webwork2) | 259 |------------+-----------------------------------------------------------| 260 |$webworkURL |The base URL handled by the Apache::WeBWorK mod_perl | 261 | |handler (i.e. /webwork2) | 262 |------------+-----------------------------------------------------------| 263 |$pgRoot |The base directory of the PG installation (i.e. /opt/pg) | 264 |------------+-----------------------------------------------------------| 265 |$courseName |The name of the course currently being requested (i.e. | 266 | |mth143) | 267 +------------------------------------------------------------------------+ 268 269 Overriding values in course.conf 270 271 Any value defined in global.conf can be overriddden on a per-course basis 272 in the file course.conf, located in each course's directory. This file is 273 optional, it can be empty or nonexistent. It has the same format as 274 global.conf. This is commonly used for overriding the database layout for 275 a course, and values like pg : specialPGEnvironmentVars : 276 PRINT_FILE_NAMES_FOR that depend on user IDs specific to a course. 277 278 To override some value in a course.conf file, change only the particular 279 hash key. For example, to override the PRINT_FILE_NAMES_FOR setting, put 280 the following in course.conf: 281 282 $pg->{specialPGEnvironmentVars}->{PRINT_FILE_NAMES_FOR} = ["new", "list", "of", "names"]; 283 284 Since the value of PRINT_FILE_NAMES_FOR is a list, you could also append a 285 value to it using the following perl construction: 286 287 push @{ $pg->{specialPGEnvironmentVars}->{PRINT_FILE_NAMES_FOR} }, "new"; 288 289 It might be helpful to consult Chapter 9, Data Structures, of the third 290 edition of the Camel Book for more information about nested data 291 structures. (The chapter is also illictly available on the web.) 292 293 Commonly modified global.conf values 294 295 Most values defined in global.conf need not be changed from their 296 defaults. Some values of interest include: 297 298 +------------------------------------------------------------------------+ 299 | value | description | 300 |-------------------------------+----------------------------------------| 301 | |The path to the courses directory. You | 302 | |might want to change this if you're | 303 |webworkDirs : courses |sharing courses with a WW1 installation,| 304 | |or if you wish to keep your courses | 305 | |somewhere else. (i.e. | 306 | |/var/lib/webwork/courses) | 307 |-------------------------------+----------------------------------------| 308 | |The URL of WeBWorK documentation, used | 309 |webworkURLs : docs |for the "Help" link. You may wish to | 310 | |change this if you have local | 311 | |documentation. | 312 |-------------------------------+----------------------------------------| 313 | |The URL of a WW1 profLogin.pl script, | 314 | |used for the "WeBWorK 1.x Instructor | 315 | |Tools" link. The script referenced | 316 |webworkURLs : oldProf |should have access to the same courses | 317 | |as this system. The user ID and session | 318 | |key of the current user are added to | 319 | |this URL to provide a seamless | 320 | |transition. | 321 |-------------------------------+----------------------------------------| 322 |mail : smtpServer |The SMTP server to use when sending | 323 | |email. Use an SMTP server at your site. | 324 |-------------------------------+----------------------------------------| 325 | |The "sender" address to pass to the SMTP| 326 |mail : smtpSender |server. This differs from the "from" | 327 | |address. Set this to some administrative| 328 | |address. | 329 |-------------------------------+----------------------------------------| 330 | |The full paths to external programs used| 331 |externalPrograms |by the system. Set the values in this | 332 | |hash to the paths appropriate fro your | 333 | |site. | 334 |-------------------------------+----------------------------------------| 335 | |The HTML template to use for arranging | 336 |templates : system |elements on generated pages. If you | 337 | |create your own site-specific template, | 338 | |specify the path to it here. | 339 |-------------------------------+----------------------------------------| 340 |permissionLevels |Use this hash to map capabilities to | 341 | |permission levels. | 342 |-------------------------------+----------------------------------------| 343 |pg : renderer |Set this to WeBWorK::PG::Remote to use a| 344 | |remote "renderd" renderer. | 345 |-------------------------------+----------------------------------------| 346 |pg : options |Use this hash to change the default PG | 347 | |options. | 348 |-------------------------------+----------------------------------------| 349 |pg : options : displayMode |Can be images, formattedText, or | 350 | |plainText | 351 |-------------------------------+----------------------------------------| 352 |pg : specialPGEnvironmentVars :|List the user IDs of users who should | 353 |PRINT_FILE_NAMES_FOR |get PG source file names in their | 354 | |rendered problems. | 355 +------------------------------------------------------------------------+ 356 357 Database options 358 359 The database configuration is controlled by the dbLayout hash. Various 360 versions of this hash are defined in separate configuration files, which 361 may be included using the include function. The database configuration 362 files are as follows: 363 364 +------------------------------------------------------------------------+ 365 | file | description | 366 |---------+--------------------------------------------------------------| 367 | |Defines dbLayout to use GDBM databases stored in the DATA | 368 |gdbm.conf|subdirectory of each course's directory. Suitable for courses | 369 | |that were created under WW1, or course that are to be shared | 370 | |between WW1 and WW2. | 371 |---------+--------------------------------------------------------------| 372 |sql.conf |Defines dbLayout to use a database on an SQL server. Suitable | 373 | |for courses that will only be used under WW2. | 374 +------------------------------------------------------------------------+ 375 376 What database layout configuration file you chose for the global default 377 (i.e. include into global.conf) depends on what database backend your 378 courses will usually use. Courses with a different database layout will 379 require a different configuration file to be included into that course's 380 course.conf file. 381 382 Please note: support for GDBM databases are provided only for backwards 383 compatability with courses used under WeBWorK 1.x and will be dropped in a 384 future version of WeBWorK 2 (as will all non-SQL database support). 385 386 ____COURSE CREATION_____________________________________________________________ 387 388 Database layouts 389 390 * The sql database layout specifies that all WeBWorK tables will be 391 stored as tables in an SQL database. Access is through the DBI module, 392 so (theoretically) any DBD:: module can be used. The sql layout 393 provides the fastest and most scalable performance. However, it 394 requires access to an SQL server. 395 * The gdbm database layout specifies that all WeBWorK tables will be 396 stored in a manner compatible with WeBWorK 1.x. That is, the data will 397 be stored in several GDBM databases within the course directory 398 itself. This layout provides compatability with WW1, but is 399 significantly slower and relies on fragile hacks to make it work. This 400 layout will not be supported in future releases of WeBWorK. 401 402 We suggest using the sql layout for new courses, unless compatability with 403 WW1 is necessary. 404 405 The default database layout for the system is stored in global.conf. It 406 can be changed on a per-course basis in that course's course.conf file. A 407 full discussion of this feature is available in the database.conf and 408 global.conf files in your distribution. 409 410 Database creation (SQL courses only) 411 412 For SQL courses, use the mksqldb utility to generate SQL statements that, 413 when executed, will create a course database. The output of mksqldb can be 414 piped directly to your SQL console. For example: 415 416 mksqldb myCourseName | mysql -u root -p 417 418 The mksqldb utility has some internal documentation that you may want to 419 consult. 420 421 Access privileges 422 423 You must also grant access privileges to two SQL accounts, webworkRead and 424 webworkWrite. webworkRead should have permission to SELECT. webworkWrite 425 should have permission to SELECT, INSERT, UPDATE, and DELETE. The 426 passwords for these accounts are defined in database.conf, and are blank 427 by default. This is because passwords entered here are both readable by 428 the web server and added to the course environment. Although we don't know 429 of any way that these values could "leak" out, one might exist. 430 431 If you have a dedicated machine for WeBWorK (with it's own IP address), it 432 is "safe" to leave those passwords blank and instead rely on IP-based 433 authentication. For example, at Rochester we grant access this way: 434 435 GRANT SELECT on webwork_myCourseName.* to webworkRead.localhost; 436 GRANT SELECT, INSERT, UPDATE, DELETE on webwork_myCourseName.* to webworkWrite.localhost; 437 438 Further discussion at SecurityIssues. 439 440 Course creation 441 442 Use the addcourse utility to create a new course directory, populate it 443 with problem templates (PG files), fill the database with users, and mark 444 some users as professors. The syntax of the utility is as follows: 445 446 addcourse [--templates=DIR] [--db-layout=LAYOUT] 447 [--users=FILE [--professors=USERID[,USERID]...] ] 448 COURSEID 449 450 All options are optional. Heh. 451 452 --templates=DIR 453 The contents of the directory DIR will be copied to the templates 454 directory of the new course. 455 456 --db-layout=LAYOUT 457 The specified database layout will be used in place of the default 458 specified in global.conf. 459 460 --users=FILE 461 The users listed in the comma-separated text file FILE will be 462 added to the user list of the new course. The format of this file 463 is the same as user lists exported from WeBWorK. 464 465 --professors=USERID[,USERID]... 466 Each USERID, if it is present in the new course's user list, will 467 be granted professor privileges (i.e. a permission level of 10). 468 Requires --users. 469 470 If you use --db-layout to override the default layout, you will need to 471 manually create a course.conf file in the new course's directory after 472 creating the course. The file should contain the following line: 473 474 *dbLayout = $dbLayouts{layoutName}; 475 476 This is described in greater detail in the global.conf and database.conf 477 files. 478 479 A default classlist file named defaultClasslist.lst is provided in the 480 courses directory. Templates can be obtained from various problem 481 libraries. 482 483 For example, I just created a course using the following commands: 484 485 $ cd /opt/webwork2 486 $ mysql -u root -p 487 mysql> GRANT SELECT on webwork_sqltest.* to webworkRead.localhost; 488 mysql> GRANT SELECT, INSERT, UPDATE, DELETE on webwork_sqltest.* to webworkWrite.localhost; 489 mysql> ^D 490 $ bin/mksqldb sqltest | mysql -u root -p 491 $ bin/addcourse --templates=/opt/problibs/rochester_problib --db-layout=sql \ 492 > --users=courses/defaultClasslist.lst --professors=professor
| aubreyja at gmail dot com | ViewVC Help |
| Powered by ViewVC 1.0.9 |