26
28
might work too. Debian/Ubuntu package names are given after the name of the
31
.. If this list changes, you also need to change the list below, and
32
the list in bin/ivle-dev-setup.
29
34
* Ubuntu 8.04 or later (other distros should work with some tweaking, but are untested)
30
* Apache 2.x with modules:
35
* Apache 2.x (``apache2``) with modules:
31
36
+ mod_python (``libapache2-mod-python``)
32
37
+ mod_dav_svn and mod_authz_svn (``libapache2-svn``)
33
* Python 2.5 or 2.6 with modules:
34
+ pysvn (``python-svn``)
38
* Python 2.5 (``python2.5``) or 2.6 (``python2.6``) with modules:
35
39
+ cjson (``python-cjson``)
36
+ Genshi (``python-genshi``)
37
40
+ ConfigObj (``python-configobj``)
38
+ Routes (``python-routes``)
39
41
+ docutils (``python-docutils``)
40
42
+ epydoc (``python-epydoc``)
43
+ FormEncode (``python-formencode``)
44
+ Genshi (``python-genshi``)
45
+ psycopg2 (``python-psycopg2``)
46
+ pysvn (``python-svn``)
41
47
+ Storm (``python-storm``)
42
+ psycopg2 (``python-psycopg2``)
43
48
* jQuery (``libjs-jquery``)
44
49
* PostgreSQL 8.3 or later (``postgresql``)
45
50
* Subversion (``subversion``)
46
51
* debootstrap (``debootstrap``)
47
53
* GCC and related build machinery (``build-essential``)
49
55
Master versus slave servers
52
58
Installing from a Debian package
53
59
================================
55
64
Installing from source
56
65
======================
67
When setting up a development IVLE environment on Ubuntu 9.04 or later,
68
there are scripts to automate most of the process. First get and extract
69
a release, or check out the latest code from the bzr branch: ::
73
This will create a new directory, ``ivle``, containing a pristine
74
source tree. The remaining steps assume that you are in this new
77
The ``ivle-dev-setup`` script will configure PostgreSQL, Apache, IVLE
78
and the filesystem to cooperate, getting you most of the way to a
79
working system in just one step: ::
84
This reconfigures parts of your system, and has the potential to
85
break other applications using Apache or PostgreSQL. It may also
86
fail to execute if you have existing incompatible configurations
90
This may take a few minutes, and will ask you to confirm installation
91
of the dependency packages.
93
Upon completion, you must build a self-contained jail in which to run
94
untrusted user code. ``ivle-dev-setup`` will have configured most of
95
the necessary settings, but you may wish to use a local Ubuntu mirror
96
to improve speed or minimise download costs. If you don't wish to use
97
a special mirror, you may omit the first step. ::
99
sudo ivle-config --jail/mirror http://url.to.mirror/ubuntu
100
sudo ivle-buildjail -r
103
``ivle-buildjail`` will download a large volume of package data --
104
potentially some hundreds of megabytes.
106
``ivle-buildjail`` will download, unpack and install a minimal Ubuntu
107
system and configure it for IVLE usage. This could take a while.
109
Once the jail has been successfully built, IVLE is up and running,
110
but with no user accounts or other data in place. For development
111
or demonstration purposes, sample data (including fictitious users,
112
subjects, and projects) can be loaded.
114
For other environments, it may be more appropriate to start with an
115
empty database and just create users as required.
117
To load the sample data: ::
119
sudo ivle-loadsampledata examples/db/sample.sql
122
If you answer 'yes' to the ``ivle-loadsampledata`` prompt, any
123
existing data in your IVLE database will be **permanently
126
... or to add a new admin user: ::
128
sudo ivle-adduser --admin -p password username 'Full Name'
130
You should then be able to browse to http://ivle.localhost/, and
131
log in with username ``admin`` and password ``password``, or the
132
username and password that you gave to ``ivle-adduser``.
138
If the automatic installation scripts do not work, or if you want more
139
control over the whole process, these manual steps are probably for
140
you. But you need not read this section at all if you were able to log
141
in after following the steps above.
143
.. If this list changes, you also need to change the list above, and
144
the command in bin/ivle-dev-setup.
146
If you want to grab all of the required packages in one command, use::
148
sudo apt-get install apache2 libapache2-mod-python libapache2-svn \
149
python2.6 python-cjson python-configobj python-docutils python-epydoc \
150
python-formencode python-genshi python-psycopg2 python-svn python-storm \
151
libjs-jquery postgresql subversion debootstrap rsync build-essential
58
153
While installing from a distribution package is often a better idea for
59
154
users, developers will need to install from a plain source tree.
74
169
Unlike the package, you will have to manually set up the database and
77
.. TODO: Separate IVLE PostgreSQL account.
79
First you must create a PostgreSQL database, and populate it with the
80
IVLE schema. You may use any name for the database. ::
82
sudo -u postgres createdb ivle
172
First, it is recommended that you create a separate database user for IVLE.
173
You may use any name for the user. ::
175
sudo -u postgres createuser ivleuser # Answer 'n' to all questions
176
sudo -u postgres psql -c "ALTER USER ivleuser WITH ENCRYPTED PASSWORD 'ivle-password';"
178
Now, you must create a PostgreSQL database, and populate it with the
179
IVLE schema. You may use any name for the database (here we use ``ivle``). ::
181
sudo -u postgres createdb -O ivleuser ivle
83
182
sudo -u postgres createlang plpgsql ivle
84
sudo -u postgres psql -d ivle < userdb/users.sql
183
psql -h localhost -W ivle ivleuser < userdb/users.sql
86
185
The configuration wizard - ``ivle-config`` - will ask you a series of
87
questions. Apart from database settings, the defaults should be correct
186
questions. You should give the database username and password as configured
187
above. Apart from database settings, the defaults should be correct
88
188
for a development system. If deploying IVLE properly - particularly on
89
189
multiple nodes - several options will need to be changed. Watching
90
190
carefully, run: ::
104
204
sudo ivle-createdatadirs
106
.. TODO: Setting jail/devmode, jail/suite, jail/extra_packages...
107
We also need to document setting of the default mirror, once
207
Configuring the jail environment
208
--------------------------------
110
210
You will require a self-contained jail environment in which to safely
111
execute student code. The creation process basically downloads a minimal
112
Ubuntu system and installs it in ``/var/lib/ivle/jails/__base__``. Note
113
that this could download a couple of hundred megabytes. You should
114
replace the URL with a good close Ubuntu mirror. ::
116
sudo ivle-buildjail -r -m http://url.to.archive/mirror
211
execute student code.
212
Before you can actually build the jail, a few configuration options are
213
needed. Open up ``/etc/ivle/ivle.conf``, and find the ``[jail]`` section
214
(**not** the ``[[jails]]`` section).
218
suite = jaunty # Replace this with the codename of your Ubuntu release.
219
mirror = http://url.to.archive/mirror # Replace with a fast Ubuntu mirror.
220
extra_packages = python-configobj, python-svn, python-cjson
222
.. TODO: Move this around a bit, as the config options required differ for
223
the packaged version.
225
Now we can actually build the jail. The creation process basically downloads
226
a minimal Ubuntu system and installs it in ``/var/lib/ivle/jails/__base__``.
227
Note that this could download a couple of hundred megabytes. ::
229
sudo ivle-buildjail -r
118
231
Configuring Apache
119
232
------------------
132
245
sudo /etc/init.d/apache2 reload
248
Configuring hostname resolution
249
--------------------------------
251
All of IVLE's hostnames need to be resolvable from the local system. For a
252
production environment, this would be done in DNS. For a development system,
253
this is usually done in ``/etc/hosts``. Add this line to that file: ::
255
127.0.1.1 ivle.localhost public.ivle.localhost svn.ivle.localhost
257
Code running inside the jail environment also needs to be able to resolve
258
those names. Add, to ``/var/lib/ivle/jails/__base_build__/etc/hosts``: ::
260
127.0.1.1 svn.ivle.localhost
262
Then refresh the active copy of the jail: ::
267
Configuring the user management server
268
--------------------------------------
270
You need to have the IVLE user management server (``usrmgt-server``) running
271
for many parts of IVLE to operate properly, so it should be configured to
272
start on boot. There is an example init script in
273
``examples/config/usrmgt-server.init``. For Debian or Ubuntu, copy it to
274
``/etc/init.d/ivle-usrmgt-server``. Start it now, and set it to start
277
sudo /etc/init.d/ivle-usrmgt-server start
278
sudo update-rc.d ivle-usrmgt-server defaults 99
281
Creating the initial user
282
-------------------------
284
The final step in getting a usable IVLE set up is creating a user. You'll
285
probably want admin privileges - if not, drop the ``--admin``. ::
287
sudo ivle-adduser --admin -p password username 'Full Name'
289
You should then be able to browse to http://ivle.localhost/, and
290
log in with that username and password.
292
*Alternatively*, you may wish to import the IVLE sample data, for a complete
293
working IVLE environment (not for production use). See :ref:`sample-data`.
136
296
For more advanced configuration, see :ref:`Configuring IVLE
137
297
<ref-configuring-ivle>`.