1164.2.7
by Matt Giuca
Added doc/man/(config|install).rst. Bit more of man/index.rst. |
1 |
.. IVLE - Informatics Virtual Learning Environment
|
2 |
Copyright (C) 2007-2009 The University of Melbourne
|
|
3 |
||
4 |
.. This program is free software; you can redistribute it and/or modify
|
|
5 |
it under the terms of the GNU General Public License as published by
|
|
6 |
the Free Software Foundation; either version 2 of the License, or
|
|
7 |
(at your option) any later version.
|
|
8 |
||
9 |
.. This program is distributed in the hope that it will be useful,
|
|
10 |
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12 |
GNU General Public License for more details.
|
|
13 |
||
14 |
.. You should have received a copy of the GNU General Public License
|
|
15 |
along with this program; if not, write to the Free Software
|
|
16 |
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
17 |
||
1348
by David Coles
Configuration documentation - fixing a few references |
18 |
.. _ref-install: |
19 |
||
1164.2.7
by Matt Giuca
Added doc/man/(config|install).rst. Bit more of man/index.rst. |
20 |
************
|
21 |
Installation
|
|
22 |
************
|
|
23 |
||
1164.2.9
by Matt Giuca
doc/man: More headings! |
24 |
System requirements
|
1164.2.7
by Matt Giuca
Added doc/man/(config|install).rst. Bit more of man/index.rst. |
25 |
===================
|
26 |
||
1164.2.14
by William Grant
Add dependencies to docs. |
27 |
Given versions are those on which IVLE is known to work; earlier versions |
28 |
might work too. Debian/Ubuntu package names are given after the name of the |
|
29 |
software. |
|
30 |
||
1408
by William Grant
Update installation docs to prefer use of ivle-dev-setup. |
31 |
.. If this list changes, you also need to change the list below, and
|
32 |
the list in bin/ivle-dev-setup.
|
|
1164.2.41
by Matt Giuca
doc/man/install: Added package names for Apache and Python. Added a full apt-get install command to save typing. |
33 |
|
1790.1.7
by William Grant
Update docs to reflect libjs-codemirror requirement, including addition of PPA containing it (it's not in the primary archive). |
34 |
* Ubuntu 8.04 LTS or later (other distros should work with some tweaking, but are untested)
|
1164.2.41
by Matt Giuca
doc/man/install: Added package names for Apache and Python. Added a full apt-get install command to save typing. |
35 |
* Apache 2.x (``apache2``) with modules: |
1164.2.14
by William Grant
Add dependencies to docs. |
36 |
+ mod_python (``libapache2-mod-python``) |
37 |
+ mod_dav_svn and mod_authz_svn (``libapache2-svn``) |
|
1164.2.41
by Matt Giuca
doc/man/install: Added package names for Apache and Python. Added a full apt-get install command to save typing. |
38 |
* Python 2.5 (``python2.5``) or 2.6 (``python2.6``) with modules: |
1164.2.14
by William Grant
Add dependencies to docs. |
39 |
+ ConfigObj (``python-configobj``) |
40 |
+ docutils (``python-docutils``) |
|
41 |
+ epydoc (``python-epydoc``) |
|
1164.2.24
by William Grant
Add FormEncode to dependencies, and sort alphabetically. |
42 |
+ FormEncode (``python-formencode``) |
43 |
+ Genshi (``python-genshi``) |
|
44 |
+ psycopg2 (``python-psycopg2``) |
|
45 |
+ pysvn (``python-svn``) |
|
1164.2.14
by William Grant
Add dependencies to docs. |
46 |
+ Storm (``python-storm``) |
1801.1.1
by William Grant
Replace cjson with json, or simplejson if json is not available (Python <2.6) |
47 |
+ simplejson (``python-simplejson``, for Python 2.5 only) |
1164.2.14
by William Grant
Add dependencies to docs. |
48 |
* jQuery (``libjs-jquery``) |
1790.1.5
by William Grant
Add external CodeMirror dep, and use it instead of the embedded copy. |
49 |
* CodeMirror (``libjs-codemirror``) |
1164.2.14
by William Grant
Add dependencies to docs. |
50 |
* PostgreSQL 8.3 or later (``postgresql``) |
51 |
* Subversion (``subversion``) |
|
52 |
* debootstrap (``debootstrap``) |
|
1164.2.25
by William Grant
Need rsync too. |
53 |
* rsync (``rsync``) |
1164.2.14
by William Grant
Add dependencies to docs. |
54 |
* GCC and related build machinery (``build-essential``) |
1164.2.7
by Matt Giuca
Added doc/man/(config|install).rst. Bit more of man/index.rst. |
55 |
|
1164.2.9
by Matt Giuca
doc/man: More headings! |
56 |
Master versus slave servers
|
57 |
===========================
|
|
58 |
||
1574
by William Grant
Document the master vs. slave distinction. |
59 |
IVLE is normally deployed in a cluster of several machines, split into |
60 |
two different roles: master and slave. |
|
61 |
||
62 |
There must be exactly one master server per cluster. The master normally |
|
63 |
runs the PostgreSQL database server, the Subversion server, and the IVLE User |
|
64 |
Management Server (``ivle-usrmgt-server``). It might also export shared data
|
|
65 |
directories to the slaves over NFS. |
|
66 |
||
67 |
There may be any number of slaves in a cluster. They run the IVLE web |
|
68 |
application, which also starts console host processes. Each slave makes use |
|
69 |
of the shared services on the master. |
|
70 |
||
71 |
For a small instance a slave may be run on the same machine as the master. |
|
1761
by William Grant
Document master setup from a package. |
72 |
This is the setup described in the source installation section, while the |
73 |
Ubuntu package installation section describes a multi-node configuration. |
|
1349
by Matt Giuca
Added sample data infrastructure, with a little bit of sample data. The sample data is in examples/db/sample.sql. Documentation in doc/man/sample.rst details the infrastructure for importing and exporting sample data. |
74 |
|
1408
by William Grant
Update installation docs to prefer use of ivle-dev-setup. |
75 |
|
1164.2.7
by Matt Giuca
Added doc/man/(config|install).rst. Bit more of man/index.rst. |
76 |
Installing from source
|
77 |
======================
|
|
78 |
||
1790.1.7
by William Grant
Update docs to reflect libjs-codemirror requirement, including addition of PPA containing it (it's not in the primary archive). |
79 |
When setting up a development IVLE environment on Ubuntu 10.04 LTS or later, |
1408
by William Grant
Update installation docs to prefer use of ivle-dev-setup. |
80 |
there are scripts to automate most of the process. First get and extract |
1769
by William Grant
Fix download link. |
81 |
`a release tarball <https://launchpad.net/ivle/+download>`_, or check out |
1758
by William Grant
Shuffle all of the manual instructions one layer deeper, into the 'Manual steps' section. |
82 |
the latest code from the Bazaar branch: ::
|
1408
by William Grant
Update installation docs to prefer use of ivle-dev-setup. |
83 |
|
84 |
bzr get lp:ivle
|
|
85 |
||
86 |
This will create a new directory, ``ivle``, containing a pristine
|
|
87 |
source tree. The remaining steps assume that you are in this new |
|
88 |
directory. |
|
89 |
||
1790.1.7
by William Grant
Update docs to reflect libjs-codemirror requirement, including addition of PPA containing it (it's not in the primary archive). |
90 |
One of IVLE's dependencies (``libjs-codemirror``) does not yet have an
|
91 |
official Ubuntu package. To make this dependency package available, add |
|
92 |
the production PPA, and update your local package cache: ::
|
|
93 |
||
94 |
sudo add-apt-repository ppa:unimelb-ivle/production
|
|
95 |
sudo apt-get update
|
|
96 |
||
97 |
Alternatively, manually obtain and install ``libjs-codemirror``.
|
|
98 |
||
1758
by William Grant
Shuffle all of the manual instructions one layer deeper, into the 'Manual steps' section. |
99 |
|
100 |
Automated setup
|
|
101 |
---------------
|
|
102 |
||
1408
by William Grant
Update installation docs to prefer use of ivle-dev-setup. |
103 |
The ``ivle-dev-setup`` script will configure PostgreSQL, Apache, IVLE
|
104 |
and the filesystem to cooperate, getting you most of the way to a |
|
105 |
working system in just one step: ::
|
|
106 |
||
107 |
bin/ivle-dev-setup
|
|
108 |
||
109 |
.. warning:: |
|
110 |
This reconfigures parts of your system, and has the potential to |
|
111 |
break other applications using Apache or PostgreSQL. It may also |
|
112 |
fail to execute if you have existing incompatible configurations |
|
113 |
of those services. |
|
114 |
||
115 |
||
116 |
This may take a few minutes, and will ask you to confirm installation |
|
117 |
of the dependency packages. |
|
118 |
||
119 |
Upon completion, you must build a self-contained jail in which to run |
|
120 |
untrusted user code. ``ivle-dev-setup`` will have configured most of
|
|
121 |
the necessary settings, but you may wish to use a local Ubuntu mirror |
|
122 |
to improve speed or minimise download costs. If you don't wish to use |
|
123 |
a special mirror, you may omit the first step. ::
|
|
124 |
||
125 |
sudo ivle-config --jail/mirror http://url.to.mirror/ubuntu
|
|
126 |
sudo ivle-buildjail -r
|
|
127 |
||
128 |
.. warning:: |
|
129 |
``ivle-buildjail`` will download a large volume of package data --
|
|
130 |
potentially some hundreds of megabytes. |
|
131 |
||
132 |
``ivle-buildjail`` will download, unpack and install a minimal Ubuntu
|
|
133 |
system and configure it for IVLE usage. This could take a while. |
|
134 |
||
135 |
Once the jail has been successfully built, IVLE is up and running, |
|
136 |
but with no user accounts or other data in place. For development |
|
137 |
or demonstration purposes, sample data (including fictitious users, |
|
138 |
subjects, and projects) can be loaded. |
|
139 |
||
140 |
For other environments, it may be more appropriate to start with an |
|
141 |
empty database and just create users as required. |
|
142 |
||
143 |
To load the sample data: ::
|
|
144 |
||
145 |
sudo ivle-loadsampledata examples/db/sample.sql
|
|
146 |
||
147 |
.. warning:: |
|
148 |
If you answer 'yes' to the ``ivle-loadsampledata`` prompt, any
|
|
149 |
existing data in your IVLE database will be **permanently |
|
150 |
destroyed**. |
|
151 |
||
152 |
... or to add a new admin user: ::
|
|
153 |
||
154 |
sudo ivle-adduser --admin -p password username 'Full Name'
|
|
155 |
||
156 |
You should then be able to browse to http://ivle.localhost/, and |
|
1459
by William Grant
Correct the default username in the install docs. |
157 |
log in with username ``admin`` and password ``password``, or the |
1408
by William Grant
Update installation docs to prefer use of ivle-dev-setup. |
158 |
username and password that you gave to ``ivle-adduser``.
|
159 |
||
160 |
||
161 |
Manual steps
|
|
162 |
------------
|
|
163 |
||
164 |
If the automatic installation scripts do not work, or if you want more |
|
165 |
control over the whole process, these manual steps are probably for |
|
166 |
you. But you need not read this section at all if you were able to log |
|
167 |
in after following the steps above. |
|
168 |
||
169 |
.. If this list changes, you also need to change the list above, and
|
|
170 |
the command in bin/ivle-dev-setup.
|
|
1164.2.41
by Matt Giuca
doc/man/install: Added package names for Apache and Python. Added a full apt-get install command to save typing. |
171 |
|
172 |
If you want to grab all of the required packages in one command, use::
|
|
173 |
||
174 |
sudo apt-get install apache2 libapache2-mod-python libapache2-svn \
|
|
1801.1.1
by William Grant
Replace cjson with json, or simplejson if json is not available (Python <2.6) |
175 |
python2.6 python-configobj python-docutils python-epydoc \
|
1355
by William Grant
Drop python-routes dependency. |
176 |
python-formencode python-genshi python-psycopg2 python-svn python-storm \
|
1790.1.7
by William Grant
Update docs to reflect libjs-codemirror requirement, including addition of PPA containing it (it's not in the primary archive). |
177 |
libjs-jquery libjs-codemirror postgresql subversion debootstrap rsync \
|
178 |
build-essential
|
|
1164.2.41
by Matt Giuca
doc/man/install: Added package names for Apache and Python. Added a full apt-get install command to save typing. |
179 |
|
1164.2.15
by William Grant
Add some initial installation docs. |
180 |
As IVLE needs to compile some binaries, you must first build, then |
1758
by William Grant
Shuffle all of the manual instructions one layer deeper, into the 'Manual steps' section. |
181 |
install it. From the source directory created earlier: ::
|
1164.2.15
by William Grant
Add some initial installation docs. |
182 |
|
183 |
./setup.py build
|
|
184 |
sudo ./setup.py install
|
|
185 |
||
1765
by William Grant
Add back database-setup anchor. |
186 |
.. _database-setup: |
1758
by William Grant
Shuffle all of the manual instructions one layer deeper, into the 'Manual steps' section. |
187 |
|
188 |
Setting up the database
|
|
189 |
~~~~~~~~~~~~~~~~~~~~~~~
|
|
1164.2.15
by William Grant
Add some initial installation docs. |
190 |
|
1164.2.46
by Matt Giuca
doc/man/install: New instructions for setting up Postgres DB and user. Now the database is created under the new username, so there are no problems when IVLE runs as a different database user. |
191 |
First, it is recommended that you create a separate database user for IVLE. |
192 |
You may use any name for the user. ::
|
|
193 |
||
194 |
sudo -u postgres createuser ivleuser # Answer 'n' to all questions
|
|
195 |
sudo -u postgres psql -c "ALTER USER ivleuser WITH ENCRYPTED PASSWORD 'ivle-password';"
|
|
196 |
||
197 |
Now, you must create a PostgreSQL database, and populate it with the |
|
198 |
IVLE schema. You may use any name for the database (here we use ``ivle``). :: |
|
199 |
||
200 |
sudo -u postgres createdb -O ivleuser ivle
|
|
1164.2.15
by William Grant
Add some initial installation docs. |
201 |
sudo -u postgres createlang plpgsql ivle
|
1164.2.46
by Matt Giuca
doc/man/install: New instructions for setting up Postgres DB and user. Now the database is created under the new username, so there are no problems when IVLE runs as a different database user. |
202 |
psql -h localhost -W ivle ivleuser < userdb/users.sql
|
1164.2.15
by William Grant
Add some initial installation docs. |
203 |
|
204 |
The configuration wizard - ``ivle-config`` - will ask you a series of
|
|
1164.2.46
by Matt Giuca
doc/man/install: New instructions for setting up Postgres DB and user. Now the database is created under the new username, so there are no problems when IVLE runs as a different database user. |
205 |
questions. You should give the database username and password as configured |
206 |
above. Apart from database settings, the defaults should be correct |
|
1164.2.15
by William Grant
Add some initial installation docs. |
207 |
for a development system. If deploying IVLE properly - particularly on |
208 |
multiple nodes - several options will need to be changed. Watching |
|
209 |
carefully, run: ::
|
|
210 |
||
211 |
sudo ivle-config
|
|
212 |
||
213 |
||
1758
by William Grant
Shuffle all of the manual instructions one layer deeper, into the 'Manual steps' section. |
214 |
Creating the data tree
|
215 |
~~~~~~~~~~~~~~~~~~~~~~
|
|
1164.2.7
by Matt Giuca
Added doc/man/(config|install).rst. Bit more of man/index.rst. |
216 |
|
1164.2.15
by William Grant
Add some initial installation docs. |
217 |
IVLE needs a directory hierarchy in which to store filesystem data, which |
218 |
by default lives in ``/var/lib/ivle``. Create it now. :: |
|
219 |
||
220 |
sudo ivle-createdatadirs
|
|
221 |
||
1164.2.22
by William Grant
Document configuration of the jail creation process. |
222 |
|
223 |
Configuring the jail environment
|
|
1758
by William Grant
Shuffle all of the manual instructions one layer deeper, into the 'Manual steps' section. |
224 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
1164.2.15
by William Grant
Add some initial installation docs. |
225 |
|
226 |
You will require a self-contained jail environment in which to safely |
|
1164.2.22
by William Grant
Document configuration of the jail creation process. |
227 |
execute student code. |
228 |
Before you can actually build the jail, a few configuration options are |
|
1164.2.42
by Matt Giuca
doc/man/install: Minor confusion avoidance. |
229 |
needed. Open up ``/etc/ivle/ivle.conf``, and find the ``[jail]`` section |
230 |
(**not** the ``[[jails]]`` section). |
|
1164.2.22
by William Grant
Document configuration of the jail creation process. |
231 |
Add to it: ::
|
232 |
||
233 |
devmode = True
|
|
234 |
suite = jaunty # Replace this with the codename of your Ubuntu release.
|
|
235 |
mirror = http://url.to.archive/mirror # Replace with a fast Ubuntu mirror.
|
|
236 |
||
1164.2.28
by William Grant
Add a TODO about jailbuilding instructions for the packages. |
237 |
.. TODO: Move this around a bit, as the config options required differ for
|
238 |
the packaged version.
|
|
239 |
||
1164.2.22
by William Grant
Document configuration of the jail creation process. |
240 |
Now we can actually build the jail. The creation process basically downloads |
241 |
a minimal Ubuntu system and installs it in ``/var/lib/ivle/jails/__base__``.
|
|
242 |
Note that this could download a couple of hundred megabytes. ::
|
|
243 |
||
244 |
sudo ivle-buildjail -r
|
|
1164.2.15
by William Grant
Add some initial installation docs. |
245 |
|
1758
by William Grant
Shuffle all of the manual instructions one layer deeper, into the 'Manual steps' section. |
246 |
|
1164.2.16
by William Grant
Add docs on configuring Apache. |
247 |
Configuring Apache
|
1758
by William Grant
Shuffle all of the manual instructions one layer deeper, into the 'Manual steps' section. |
248 |
~~~~~~~~~~~~~~~~~~
|
1164.2.16
by William Grant
Add docs on configuring Apache. |
249 |
|
250 |
IVLE makes use of two Apache virtual hosts: one for the application itself, |
|
251 |
and one for the Subversion services. There are example configuration files |
|
252 |
in ``examples/config/apache.conf`` and ``examples/config/apache-svn.conf``, |
|
1408
by William Grant
Update installation docs to prefer use of ivle-dev-setup. |
253 |
which will run IVLE at http://ivle.localhost/. |
1164.2.16
by William Grant
Add docs on configuring Apache. |
254 |
|
255 |
On a Debian or Ubuntu system, just copy those two files into |
|
256 |
``/etc/apache2/sites-available`` under appropriate names (eg. ``ivle`` and |
|
257 |
``ivle-svn``). Then you need to activate them: :: |
|
258 |
||
259 |
sudo a2ensite ivle
|
|
260 |
sudo a2ensite ivle-svn
|
|
261 |
sudo /etc/init.d/apache2 reload
|
|
262 |
||
263 |
||
1164.2.17
by William Grant
Add /etc/hosts augmentation docs. |
264 |
Configuring hostname resolution
|
1758
by William Grant
Shuffle all of the manual instructions one layer deeper, into the 'Manual steps' section. |
265 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
1164.2.17
by William Grant
Add /etc/hosts augmentation docs. |
266 |
|
267 |
All of IVLE's hostnames need to be resolvable from the local system. For a |
|
268 |
production environment, this would be done in DNS. For a development system, |
|
1164.2.22
by William Grant
Document configuration of the jail creation process. |
269 |
this is usually done in ``/etc/hosts``. Add this line to that file: :: |
1164.2.17
by William Grant
Add /etc/hosts augmentation docs. |
270 |
|
271 |
127.0.1.1 ivle.localhost public.ivle.localhost svn.ivle.localhost
|
|
272 |
||
1164.2.18
by William Grant
Also edit /etc/hosts inside the jail. |
273 |
Code running inside the jail environment also needs to be able to resolve |
274 |
those names. Add, to ``/var/lib/ivle/jails/__base_build__/etc/hosts``: :: |
|
275 |
||
276 |
127.0.1.1 svn.ivle.localhost
|
|
277 |
||
278 |
Then refresh the active copy of the jail: ::
|
|
279 |
||
280 |
sudo ivle-buildjail
|
|
281 |
||
1164.2.20
by William Grant
Document installation of the usrmgt-server init script. |
282 |
|
283 |
Configuring the user management server
|
|
1758
by William Grant
Shuffle all of the manual instructions one layer deeper, into the 'Manual steps' section. |
284 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
1164.2.20
by William Grant
Document installation of the usrmgt-server init script. |
285 |
|
286 |
You need to have the IVLE user management server (``usrmgt-server``) running
|
|
287 |
for many parts of IVLE to operate properly, so it should be configured to |
|
288 |
start on boot. There is an example init script in |
|
289 |
``examples/config/usrmgt-server.init``. For Debian or Ubuntu, copy it to
|
|
1164.2.44
by Matt Giuca
doc/man/install: Conflicting advice for installing usrmgt-server init script. Now recommend installation to /etc/init.d/ivle-usrmgt-server. |
290 |
``/etc/init.d/ivle-usrmgt-server``. Start it now, and set it to start
|
291 |
automatically: ::
|
|
1164.2.20
by William Grant
Document installation of the usrmgt-server init script. |
292 |
|
1164.2.44
by Matt Giuca
doc/man/install: Conflicting advice for installing usrmgt-server init script. Now recommend installation to /etc/init.d/ivle-usrmgt-server. |
293 |
sudo /etc/init.d/ivle-usrmgt-server start
|
294 |
sudo update-rc.d ivle-usrmgt-server defaults 99
|
|
1164.2.20
by William Grant
Document installation of the usrmgt-server init script. |
295 |
|
1164.2.27
by William Grant
Document user creation. |
296 |
|
297 |
Creating the initial user
|
|
1758
by William Grant
Shuffle all of the manual instructions one layer deeper, into the 'Manual steps' section. |
298 |
~~~~~~~~~~~~~~~~~~~~~~~~~
|
1164.2.27
by William Grant
Document user creation. |
299 |
|
1164.2.30
by William Grant
Document creating an admin user, now issue #151 is fixed. |
300 |
The final step in getting a usable IVLE set up is creating a user. You'll |
301 |
probably want admin privileges - if not, drop the ``--admin``. :: |
|
302 |
||
1763
by William Grant
Add initial user creation step to the master setup docs. |
303 |
sudo ivle-adduser --admin -p PASSWORD USERNAME 'FULL NAME'
|
1164.2.27
by William Grant
Document user creation. |
304 |
|
1408
by William Grant
Update installation docs to prefer use of ivle-dev-setup. |
305 |
You should then be able to browse to http://ivle.localhost/, and |
1164.2.27
by William Grant
Document user creation. |
306 |
log in with that username and password. |
307 |
||
1359
by Matt Giuca
Added a script ivle-loadsampledata. |
308 |
*Alternatively*, you may wish to import the IVLE sample data, for a complete
|
309 |
working IVLE environment (not for production use). See :ref:`sample-data`. |
|
310 |
||
1164.2.7
by Matt Giuca
Added doc/man/(config|install).rst. Bit more of man/index.rst. |
311 |
.. note:: |
312 |
For more advanced configuration, see :ref:`Configuring IVLE |
|
313 |
<ref-configuring-ivle>`. |
|
1761
by William Grant
Document master setup from a package. |
314 |
|
315 |
||
316 |
||
317 |
Installing from an Ubuntu package
|
|
318 |
=================================
|
|
319 |
||
320 |
IVLE is packaged in `a Launchpad PPA <https://launchpad.net/~unimelb-ivle/+archive/production>`_, |
|
321 |
providing a more managed installation and upgrade mechanism than a source |
|
322 |
installation. |
|
323 |
||
324 |
These instructions document the process to install a production-ready |
|
325 |
multi-node IVLE cluster. They expect that you have three domain names: |
|
326 |
one for the main IVLE web UI, one for the Subversion service, and one |
|
327 |
for serving user files publicly. |
|
328 |
||
329 |
.. warning:: |
|
330 |
By design the public domain may have arbitrary user-generated content |
|
331 |
served. Because of this, it should not have any domain with sensitive |
|
332 |
cookies as a suffix, including the main IVLE web UI. Be very careful |
|
333 |
with your choice here. |
|
334 |
||
335 |
||
336 |
Shared setup
|
|
337 |
------------
|
|
338 |
||
339 |
All master and slave nodes need to have access to the IVLE PPA. |
|
340 |
`Visit it <https://launchpad.net/~unimelb-ivle/+archive/production>`_ and |
|
341 |
follow the installation instructions on all involved systems. |
|
342 |
||
343 |
||
344 |
Master setup
|
|
345 |
------------
|
|
346 |
||
347 |
Setting up the database server
|
|
348 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
349 |
||
350 |
The master server runs the central IVLE PostgreSQL database. ::
|
|
351 |
||
352 |
sudo apt-get install postgresql
|
|
353 |
||
354 |
Ubuntu's default PostgreSQL configuration doesn't permit remote access, |
|
355 |
so we need to tweak it to allow password access from our slave. In |
|
356 |
``/etc/postgresql/8.3/main/postgresql.conf``, find the ``listen_addresses`` |
|
357 |
option, and ensure it is set to ``*``. In
|
|
358 |
``/etc/postgresql/8.3/main/pg_hba.conf`` add a line like the following to the
|
|
359 |
end. This example will allow any host in the ``1.2.3.4/24`` subnet to
|
|
360 |
authenticate with a password as the ``ivle`` user to the ``ivle`` database. :: |
|
361 |
||
362 |
host ivle ivle 1.2.3.4/24 md5
|
|
363 |
||
364 |
Then restart PostgreSQL, and the slaves should be able to see the database. ::
|
|
365 |
||
366 |
sudo /etc/init.d/postgresql-8.3 restart
|
|
367 |
||
368 |
||
369 |
Installing and configuring IVLE
|
|
370 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
371 |
||
372 |
We can now install IVLE. The installation process will ask you a few questons. |
|
373 |
Answer that this host is a **master**, let it generate a random usrmgt-server
|
|
374 |
secret, elect to manage the database with ``dbconfig-common``, and use a
|
|
375 |
random password. ::
|
|
376 |
||
377 |
sudo apt-get install ivle
|
|
378 |
||
379 |
Once that's done, we have a couple of additional configuration items to set: |
|
380 |
the URLs discussed earlier. Open up ``/etc/ivle/ivle.conf``,
|
|
381 |
and replace ``public.ivle.localhost`` and ``svn.ivle.localhost`` with the |
|
382 |
correct domain names. |
|
383 |
||
384 |
Make sure you restart the ``usrmgt-server`` afterwards, or newly created users
|
|
385 |
may inherit the old domain names. ::
|
|
386 |
||
387 |
sudo /etc/init.d/usrmgt-server restart
|
|
388 |
||
389 |
||
390 |
Sharing data between the servers
|
|
391 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
392 |
||
393 |
As well as its relational database, IVLE has a data hierarchy on the |
|
394 |
fileystem. Two part of this (``/var/lib/ivle/jails`` and
|
|
395 |
``/var/lib/ivle/sessions``) must be shared between the master and all of the
|
|
396 |
slaves. It doesn't matter how you achieve this, but a reasonable method is |
|
397 |
described here: exporting over NFS from the master. |
|
398 |
||
399 |
We'll first create a tree (``/export/ivle`` in this example, but it can be
|
|
400 |
whatever you want) to be exported to the slaves, move the existing data |
|
401 |
directories into it, and symlink them back into place. ::
|
|
402 |
||
403 |
sudo mkdir /export/ivle
|
|
404 |
sudo mv /var/lib/ivle/{sessions,jails} /export/ivle
|
|
405 |
sudo ln -s /export/ivle/{sessions,jails} /var/lib/ivle
|
|
406 |
||
407 |
Next install an NFS server. ::
|
|
408 |
||
409 |
sudo apt-get install nfs-kernel-server
|
|
410 |
||
411 |
Now we can export the directory we created earlier across the network. |
|
412 |
Add something like the following line to ``/etc/exports``. ``someslave`` |
|
413 |
should be replaced with the hostname, IP address, or subnet of your |
|
414 |
slave(s). ::
|
|
415 |
||
416 |
/export/ivle someslave(rw,sync)
|
|
417 |
||
418 |
Make sure you inform the kernel of the new export. ::
|
|
419 |
||
420 |
sudo exportfs -a
|
|
421 |
||
422 |
||
423 |
Configuring Apache
|
|
424 |
~~~~~~~~~~~~~~~~~~
|
|
425 |
||
426 |
The master serves Subversion repositories through Apache on the Subversion |
|
427 |
domain name that was discussed above. ::
|
|
428 |
||
429 |
sudo cp /usr/share/doc/ivle/apache-svn.conf /etc/apache2/sites-available/ivle-svn
|
|
430 |
sudo a2ensite ivle-svn
|
|
431 |
||
432 |
Edit ``/etc/apache2/sites-available/ivle-svn``, ensuring that the
|
|
433 |
``ServerName`` matches your chosen domain name. Then reload Apache's
|
|
434 |
configuration. ::
|
|
435 |
||
436 |
sudo /etc/init.d/apache2 reload
|
|
437 |
||
438 |
||
439 |
Setting up a jail environment
|
|
440 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
441 |
||
442 |
IVLE requires that a base jail be provided, on top of which all of the |
|
443 |
individual user jails are constructed in order to safely execute user code. |
|
444 |
||
445 |
We need to change some configuration options before we can build a working |
|
446 |
jail. First set the mirror and Ubuntu release -- make sure you replace the |
|
447 |
URL and release code name with an Ubuntu mirror and your Ubuntu release. ::
|
|
448 |
||
449 |
sudo ivle-config --jail/mirror http://url.to.mirror/ubuntu --jail/suite hardy
|
|
450 |
||
451 |
Now comes the ugly bit: we need to tell the jail builder where to get the |
|
452 |
IVLE code that must be present in the jail. If you're using the production |
|
453 |
PPA, the following ``/etc/ivle/ivle.conf`` snippet will work. If you're not,
|
|
454 |
you'll have to replace the ``extra_keys`` and ``extra_sources`` values :: |
|
455 |
||
456 |
[jail]
|
|
457 |
extra_keys = '''
|
|
458 |
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
|
459 |
Version: SKS 1.0.10
|
|
460 |
|
|
461 |
mI0ES2pQKAEEANiscebT7+SFnvpN8nABcwT5nEV6psUOF8CcIIrz3iv6b6wA3lYd0DzbD7RD
|
|
462 |
fs1MNriEHHgqPF6EUhGrkk1165Oqi+lULdjgL0Fzi3GFvLV9F8+BtL3wt3+MM7YC+aTS1nhF
|
|
463 |
dQcPpnhNAJagW5gR4dIc4w87sNquxgCdJeJn/N3XABEBAAG0KkxhdW5jaHBhZCBVbml2ZXJz
|
|
464 |
aXR5IG9mIE1lbGJvdXJuZSBJVkxFIFBQQYi2BBMBAgAgBQJLalAoAhsDBgsJCAcDAgQVAggD
|
|
465 |
BBYCAwECHgECF4AACgkQVwp7ATtnautCMgP8C6PbLNyx9akgbiwhakFfGaEbxGFCo1EAUE7v
|
|
466 |
FgdelJSEkeQLAn4WoANpixuojNi++PEDis22S4tz+ZC6G0dRU9Pcc1bb4xUgphR83QTcufH7
|
|
467 |
5EagfTf5lLIWaLdg5f/NeuHHrKvwKvPVkNJ3ShQejFB/xWGpqe2Rr7Rscm9lT0Q=
|
|
468 |
=TJYw
|
|
469 |
-----END PGP PUBLIC KEY BLOCK-----
|
|
470 |
'''
|
|
471 |
extra_packages = ivle-services,
|
|
472 |
extra_sources = deb http://ppa.launchpad.net/unimelb-ivle/production/ubuntu hardy main,
|
|
473 |
||
474 |
Now we can build the jail. This will download lots of packages, and install |
|
475 |
a minimal Ubuntu system in ``/var/lib/ivle/jails/__base__``. :: |
|
476 |
||
477 |
sudo ivle-buildjail -r
|
|
478 |
||
479 |
You should now have a functional master. |
|
1762
by William Grant
Document slave setup from a package. |
480 |
|
481 |
||
1763
by William Grant
Add initial user creation step to the master setup docs. |
482 |
Creating the initial user
|
483 |
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
484 |
||
485 |
The last master step for getting a usable IVLE set up is creating a user. |
|
486 |
You'll probably want admin privileges - if not, drop the ``--admin``. :: |
|
487 |
||
488 |
sudo ivle-adduser --admin -p PASSWORD USERNAME 'FULL NAME'
|
|
489 |
||
490 |
You can then visit your IVLE web UI domain and login in with the username |
|
491 |
and password. |
|
492 |
||
493 |
||
1762
by William Grant
Document slave setup from a package. |
494 |
Slave setup
|
495 |
-----------
|
|
496 |
||
497 |
Installing and configuring IVLE
|
|
498 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
499 |
||
500 |
We need to tell the database configuration assistant that we want to connect |
|
501 |
to a remote database. The second command will also ask you whether you want to |
|
502 |
store administrative passwords: say no here. ::
|
|
503 |
||
504 |
sudo apt-get install dbconfig-common
|
|
505 |
sudo dpkg-reconfigure dbconfig-common
|
|
506 |
||
507 |
We are going to need some details from the master for authentication purposes. |
|
508 |
Grab the ``password`` value from the ``database`` section, and the ``magic`` |
|
509 |
value from the ``usrmgt`` section of the master's ``/etc/ivle/ivle.conf``. |
|
510 |
||
511 |
Now we can install IVLE. Advise the installer that this machine is not a |
|
512 |
master, and use the details retrieved from the master to answer the rest of |
|
513 |
the questions. ::
|
|
514 |
||
515 |
sudo apt-get install ivle
|
|
516 |
||
517 |
Once the installation has completed, make the same configuration changes as on |
|
518 |
the master: set the domain names in ``ivle.conf`` to real values.
|
|
519 |
||
520 |
For maximum performance, you should also set the ``version`` value in the
|
|
521 |
``media`` section. The exact string is not important, as long as the value is
|
|
522 |
identical on every slave, and changed on each upgrade. It is used to make |
|
523 |
static file URLs unique, so clients can cache them indefinitely. The IVLE |
|
524 |
version is conventionally used as this string. |
|
525 |
||
526 |
||
527 |
Getting access to the shared data
|
|
528 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
529 |
||
530 |
We need to mount the shared components of the IVLE data hierarchy from the |
|
531 |
master. If you've used the suggested method, follow these instructions. |
|
532 |
Otherwise you'll have to work it out for yourself. |
|
533 |
||
534 |
First install the NFS common utilities, required for NFS mounts. ::
|
|
535 |
||
536 |
sudo apt-get install nfs-common
|
|
537 |
||
538 |
Now we can add the mount to ``/etc/fstab``. Something like this should do: :: |
|
539 |
||
540 |
themaster:/export/ivle /export/ivle nfs defaults 0 0
|
|
541 |
||
542 |
Then mount the filesystem, and link the shared directories into the |
|
543 |
hierarchy. ::
|
|
544 |
||
545 |
mount -a
|
|
546 |
ivle-createdatadirs
|
|
547 |
rmdir /var/lib/ivle/{sessions,jails}
|
|
548 |
ln -s /export/ivle/{sessions,jails} /var/lib/ivle
|
|
549 |
||
550 |
||
551 |
Configuring Apache
|
|
552 |
~~~~~~~~~~~~~~~~~~
|
|
553 |
||
554 |
The slaves use Apache to serve the main IVLE web UI and public user files. |
|
555 |
Let's activate the configuration now. ::
|
|
556 |
||
557 |
sudo cp /usr/share/doc/ivle/apache.conf /etc/apache2/sites-available/ivle
|
|
558 |
sudo a2ensite ivle
|
|
559 |
||
560 |
Now edit ``/etc/apache2/sites-available/ivle``, and ensure that the
|
|
561 |
``ServerName`` matches your chosen IVLE web UI domain name, and
|
|
562 |
``ServerAlias`` your public name. Then reload Apache's configuration. ::
|
|
563 |
||
564 |
sudo /etc/init.d/apache2 reload |