24
This page describes the configuration of IVLE, which is done by editing the
25
file :file:`ivle.conf`, located by default in :file:`/etc/ivle/ivle.conf`.
24
This page describes the configuration of IVLE. This consists of populating the
25
:file:`ivle.conf` file and configuring Apache to serve the IVLE webapp and
26
Subversion repositories.
27
28
Configuration options
28
29
=====================
31
Most of the configuration of IVLE is done by editing the file
32
:file:`ivle.conf`, located by default in :file:`/etc/ivle/ivle.conf`. These
33
settings are required as part of the :ref:`install process <ref-install>` and
34
for actual running of IVLE.
36
It uses the `ConfigObj`_ text format which is heavily based on the 'INI' text
39
.. _ConfigObj: http://www.voidspace.org.uk/python/configobj.html
43
Configuration of URLs used by the IVLE webapp.
47
:type: string(default="/")
49
Path on HTTP server that IVLE is served from.
51
.. describe:: public_host
55
The server goes into "public mode" if the browser sends a request with
56
this host. This is for security reasons - we only serve public student
57
files on a separate domain to the main IVLE site.
58
Public mode does not use cookies, and serves only public content.
59
Private mode (normal mode) requires login, and only serves files relevant
60
to the logged-in user. e.g. 'public.ivle.org'
62
.. describe:: svn_addr
66
The base url for accessing subversion repositories. e.g.
71
Configuration for IVLE installation and data paths.
75
:type: string(default="/usr/local")
77
The prefix that is prepended to installation paths.
81
:type: string(default="/var/lib/ivle")
83
Directory where IVLE data such as user jails will be stored.
87
:type: string(default="/var/log/ivle")
89
Directory where IVLE log files such as :file:`ivle_error.log` will be
93
:type: string(default="${prefix}/share/ivle")
95
Directory where IVLE shared data such as ``usrmgt-server``,
96
``python-console`` and services will be installed.
100
:type: string(default="${prefix}/lib/ivle")
102
Directory where IVLE libraries such as ``trampoline`` and ``timount`` will
107
Configuration paths for user `Jails <ref-jail>`_.
111
:type: string(default="${data}/jailmounts"))
113
Directory where complete jails will be mounted.
118
:type: string(default="${data}/jails")
120
Directory where user specific jail content will be stored.
122
.. describe:: template
124
:type: string(default="${src}/__base__")
126
Directory where template file system for each jail will be stored.
128
.. describe:: template_build
130
:type: string(default="${src}/__base_build__")
132
Directory where template file system will be built before being moved to
133
the ``template`` directory.
137
Configuration paths for Subversion repositories.
141
:type: string(default="${data}/svn")
143
Directory where Subversion data will be stored
147
:type: string(default="${base}/svn.conf")
149
Location of Subversion WebDAV AuthzSVNAccessFile configuration file for
150
user repositories will be stored.
152
.. describe:: group_conf
154
:type: string(default="${base}/svn-group.conf")
156
Location of Subversion WebDAV AuthzSVNAccessFile configuration file for
157
group repositories will be stored.
159
.. describe:: repo_path
161
:type: string(default="${base}/repositories")
163
Location where user and group repositories will be stored.
165
.. describe:: auth_ivle
167
:type: string(default="${base}/ivle.auth")
169
Location where Subversion WebDAV AuthUserFile password hash file will be
174
Configuration of `media serving <ref-media-serving>`_.
176
.. describe:: version
178
:type: string(default=None)
180
Media files such as images, CSS and JavaScript are aggressively cached in
181
IVLE. If this value is set then IVLE will send media URLs containing this
182
version number and content will be served with an ``Expires`` header set a
183
year in the future. This means that the client should only request a media
184
URL once and use the cached copy from then on. This version number should
185
be incremented each time any media is changed (typically this should just
186
be set to the IVLE release number) so that updated media will be sent to
189
If not provided or set to :const:`None`, IVLE will use standard browser
194
Configuration details for external media dependencies used by IVLE.
198
:type: string(default="/usr/share/javascript/jquery")
200
Directory where jQuery library is installed.
205
Configuration for the PostgreSQL database that IVLE uses.
209
:type: string(default="localhost")
211
Hostname of database IVLE server.
215
:type: integer(default=5432)
217
Port the database runs on.
221
:type: string(default="ivle")
223
Name of the IVLE database on the database server.
225
.. describe:: username
229
Username which IVLE uses on the database server.
231
.. describe:: password
235
Password which IVLE uses for authentication with the database server.
239
Settings for configuring external user authentication with `authentication
240
modules <ref-auth-modules>`_ and automatic subject enrollment with `subject
241
pulldown modules <ref-subject-pulldown-modules>`_.
243
.. describe:: modules
245
:type: string_list(default=list())
247
List of `authentication modules <ref-auth-modules>`_ to attempt to
248
authenticate with if a user does not have a password set in the local
251
.. describe:: ldap_url
253
:type: string(default=None)
255
URL of the LDAP server to be used by authentication modules.
257
.. describe:: ldap_format_string
259
:type: string(default=None)
262
.. describe:: subject_pulldown_modules
264
:type: string_list(default=list())
266
List of `subject pulldown modules <ref-subject-pulldown-modules>`_ to be
267
checked when a user signs into IVLE to see what subjects a student is
272
Settings for the `User Management Server <ref-usrmgt-server>`_.
276
:type: string(default="localhost")
278
The hostname where the User Management Server is running.
282
:type: integer(default=2178)
284
The port that the User Management Server is running on.
290
The shared secret used to secure communication between IVLE Web
291
Application and the User Management Server.
295
Options that control how the `Jail <ref-jail>`_ is built.
297
.. describe:: devmode
299
:type: boolean(default=False)
301
If set, copies IVLE files from the local machine into the jail rather than
302
installing them from a package.
306
If the Python site packages directory differs between the local
307
machine and the jail (such as if different versions of Python are
308
installed) you will need to supply the site packages to be installed
309
with the ``--python-site-packages`` option to ``ivle-buildjail``.
313
:type: string(default="hardy")
315
Which suite the jail will build with. This need not be the same as what
316
the local machine is running.
320
:type: string(default="http://archive.ubuntu.com/ubuntu")
322
The location of a HTTP mirror containing the specified suite.
324
.. describe:: extra_sources
326
:type: string_list(default=list())
328
A list of extra source locations to be added to the jail builder (such as
329
for site specific packages).
331
.. describe:: extra_packages
333
:type: string_list(default=list())
335
A list of extra packages to be installed in addition to the core packages
338
.. FIXME: Is this correct. Is it extra user packages (such as
339
python-scipy) or all packages that aren't in a standard debootstrap build
340
(such as python-svn and python-cjson)?.
342
.. describe:: extra_keys
344
:type: string(default=None)
346
Any extra package signing keys to accept as correctly validate installed
347
packages. Typically used for validating ``extra_sources`` packages.
349
.. note:: Cannot have triple-quoted list members.
354
User specific settings that are added to a user's :file:`ivle.conf` file
359
This should be in a user-specific place but since we're worried a user
360
may delete his/her .conf file, we put it here for now). These properties
361
**should not** be set in the server's :file:`/etc/ivle/ivle.conf`.
365
:type: string(default=None)
367
The login name of the user.
369
.. describe:: svn_pass
371
:type: string(default=None)
373
The key used to access repositories on the Subversion server.
30
376
Apache configuration
31
377
====================
378
Apache is used in IVLE for hosting of the IVLE web application and hosting
379
Subversion repositories over WebDAV. Typically the Subversion repository will
380
run on the Master server and the Web Application will be run on a collection
381
of slaves. It is also possible to combine the two function together to run as
387
The IVLE web application runs on Apache using ``mod_python``. An example
388
configuration is provided in the file :file:`examples/config/apache.conf`.
390
At minimum the following settings must be specified:
392
.. describe:: ServerName
394
Should be the formal hostname of the server, typically one that users will
395
use to access IVLE. For example, 'ivle.org'.
397
.. describe:: ServerAlias
399
Should be set to the value of ``[urls] public_host`` that is specified in
400
:file:`ivle.conf`. This is to ensure that Apache will correctly handle
401
requests for the public content.
403
.. describe:: SetHandler
405
Must be ``mod_python``
407
.. describe:: PythonHandler
409
Must be ``ivle.dispatch``
411
.. describe:: PythonOption mod_python.file_session.database_directory
413
Session directory for mod_python. This must be a shared directory between
414
all Slave servers, in particular when operating through a load balancer.
415
If not provided then users will encounter inconsistent behavior such as
416
being thrown back to the login screen after logging in.
418
Optional settings are:
420
.. describe:: PythonOption mod_python.session.cookie_name
422
The name to be set for cookies rather than the one automatically generated
423
by mod_python. For example, 'ivle'.
425
.. describe:: PythonDebug
427
If this option is set, any uncaught errors from mod_python will be sent to
428
the browser rather than being sent to the error log. It is recommended
429
that this setting is only used for development or debugging.
431
Subversion Repository
432
---------------------
433
IVLE also uses Apache to provide HTTP access to user's Subversion repositories
434
using ``mod_dav_svn``. Typically this is run on a single, stand alone server;
435
though it may be run in conjunction with the Web Application. An example
436
configuration is provided in the file :file:`examples/config/apache-svn.conf`.
437
IVLE will automatically generate password hash and repository permission files
438
that are used to control access to the repositories.
440
IVLE expects to find the paths ``users/`` and ``groups/`` at the URL provided
441
by the value of ``[urls] svn_addr`` set in :file:`ivle.conf`. Thus there
442
should be two ``Location`` clauses configured, one for users and one for
452
.. describe:: SVNParentPath
454
Directory where user repositories are stored. Should be the value of
455
``[path] [[svn]] repo_path`` in :file:`ivle.conf` with 'users' appended.
456
For example, '/var/lib/ivle/svn/repositories/users'.
458
.. describe:: AuthzSVNAccessFile
460
Location of the configuration file used to assign permissions to user
461
repositories. Should be the same value as ``[path] [[svn]] conf`` in
464
.. describe:: Require
466
Must be ``valid-user``
468
.. describe:: AuthType
472
.. describe:: AuthName
474
The name that should appear on authentication requests. For example, 'IVLE
475
Subversion repository'.
477
.. describe:: AuthUserFile
479
Location of the password hash file for Subversion users. Should be the
480
same as the value of ``[path] [[svn]] auth_ivle``. For example,
481
'/var/lib/ivle/svn/ivle.auth'.
490
.. describe:: SVNParentPath
492
Directory where user repositories are stored. Should be the value of
493
``[path] [[svn]] repo_path`` in :file:`ivle.conf` with 'groups' appended.
494
For example, '/var/lib/ivle/svn/repositories/groups'.
496
.. describe:: AuthzSVNAccessFile
498
Location of the configuration file used to assign permissions to group
499
repositories. Should be the same value as ``[path] [[svn]] group_conf`` in
502
.. describe:: Require
504
Must be ``valid-user``
506
.. describe:: AuthType
510
.. describe:: AuthName
512
The name that should appear on authentication requests. For example, 'IVLE
513
Subversion repository'.
515
.. describe:: AuthUserFile
517
Location of the password hash file for Subversion users. Should be the
518
same as the value of ``[path] [[svn]] auth_ivle``. For example,
519
'/var/lib/ivle/svn/ivle.auth'.