~azzar1/unity/add-show-desktop-key

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
18
************
19
Installation
20
************
21
1164.2.9 by Matt Giuca
doc/man: More headings!
22
System requirements
1164.2.7 by Matt Giuca
Added doc/man/(config|install).rst. Bit more of man/index.rst.
23
===================
24
1164.2.14 by William Grant
Add dependencies to docs.
25
Given versions are those on which IVLE is known to work; earlier versions
26
might work too. Debian/Ubuntu package names are given after the name of the
27
software.
28
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.
29
.. If this list changes, you also need to change the list below.
30
1164.2.14 by William Grant
Add dependencies to docs.
31
* Ubuntu 8.04 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.
32
* Apache 2.x (``apache2``) with modules:
1164.2.14 by William Grant
Add dependencies to docs.
33
   + mod_python (``libapache2-mod-python``)
34
   + 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.
35
* Python 2.5 (``python2.5``) or 2.6 (``python2.6``) with modules:
1164.2.14 by William Grant
Add dependencies to docs.
36
   + cjson (``python-cjson``)
37
   + ConfigObj (``python-configobj``)
38
   + docutils (``python-docutils``)
39
   + epydoc (``python-epydoc``)
1164.2.24 by William Grant
Add FormEncode to dependencies, and sort alphabetically.
40
   + FormEncode (``python-formencode``)
41
   + Genshi (``python-genshi``)
42
   + psycopg2 (``python-psycopg2``)
43
   + pysvn (``python-svn``)
44
   + Routes (``python-routes``)
1164.2.14 by William Grant
Add dependencies to docs.
45
   + Storm (``python-storm``)
46
* jQuery (``libjs-jquery``)
47
* PostgreSQL 8.3 or later (``postgresql``)
48
* Subversion (``subversion``)
49
* debootstrap (``debootstrap``)
1164.2.25 by William Grant
Need rsync too.
50
* rsync (``rsync``)
1164.2.14 by William Grant
Add dependencies to docs.
51
* 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.
52
1164.2.9 by Matt Giuca
doc/man: More headings!
53
Master versus slave servers
54
===========================
55
1164.2.7 by Matt Giuca
Added doc/man/(config|install).rst. Bit more of man/index.rst.
56
Installing from a Debian package
57
================================
58
59
Installing from source
60
======================
61
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.
62
.. If this list changes, you also need to change the list above.
63
64
If you want to grab all of the required packages in one command, use::
65
66
    sudo apt-get install apache2 libapache2-mod-python libapache2-svn \
67
    python2.6 python-cjson python-configobj python-docutils python-epydoc \
68
    python-formencode python-genshi python-psycopg2 python-svn python-routes \
69
    python-storm libjs-jquery postgresql subversion debootstrap rsync \
70
    build-essential
71
1164.2.15 by William Grant
Add some initial installation docs.
72
While installing from a distribution package is often a better idea for
73
users, developers will need to install from a plain source tree.
74
75
To get the tree, either grab and extract a release tarball, or get the
76
very latest code using bzr: ::
77
78
   bzr get lp:ivle
79
80
You should then change into the new source directory.
81
82
As IVLE needs to compile some binaries, you must first build, then
83
install it: ::
84
85
   ./setup.py build
86
   sudo ./setup.py install
87
88
Unlike the package, you will have to manually set up the database and
89
configuration.
90
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.
91
First, it is recommended that you create a separate database user for IVLE.
92
You may use any name for the user. ::
93
94
   sudo -u postgres createuser ivleuser     # Answer 'n' to all questions
95
   sudo -u postgres psql -c "ALTER USER ivleuser WITH ENCRYPTED PASSWORD 'ivle-password';"
96
97
Now, you must create a PostgreSQL database, and populate it with the
98
IVLE schema. You may use any name for the database (here we use ``ivle``). ::
99
100
   sudo -u postgres createdb -O ivleuser ivle
1164.2.15 by William Grant
Add some initial installation docs.
101
   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.
102
   psql -h localhost -W ivle ivleuser < userdb/users.sql
1164.2.15 by William Grant
Add some initial installation docs.
103
104
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.
105
questions. You should give the database username and password as configured
106
above. Apart from database settings, the defaults should be correct
1164.2.15 by William Grant
Add some initial installation docs.
107
for a development system. If deploying IVLE properly - particularly on
108
multiple nodes - several options will need to be changed. Watching
109
carefully, run: ::
110
111
   sudo ivle-config
112
113
1164.2.7 by Matt Giuca
Added doc/man/(config|install).rst. Bit more of man/index.rst.
114
Basic configuration
115
===================
116
117
.. Note: Place here only the configuration required to get the system
118
   installed and running. Any further configuration should go in config.rst.
119
1164.2.15 by William Grant
Add some initial installation docs.
120
IVLE needs a directory hierarchy in which to store filesystem data, which
121
by default lives in ``/var/lib/ivle``. Create it now. ::
122
123
   sudo ivle-createdatadirs
124
1164.2.22 by William Grant
Document configuration of the jail creation process.
125
126
Configuring the jail environment
127
--------------------------------
1164.2.15 by William Grant
Add some initial installation docs.
128
129
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.
130
execute student code. 
131
Before you can actually build the jail, a few configuration options are
1164.2.42 by Matt Giuca
doc/man/install: Minor confusion avoidance.
132
needed. Open up ``/etc/ivle/ivle.conf``, and find the ``[jail]`` section
133
(**not** the ``[[jails]]`` section).
1164.2.22 by William Grant
Document configuration of the jail creation process.
134
Add to it: ::
135
136
   devmode = True
137
   suite = jaunty # Replace this with the codename of your Ubuntu release.
138
   mirror = http://url.to.archive/mirror # Replace with a fast Ubuntu mirror.
139
   extra_packages = python-configobj, python-svn, python-cjson
140
1164.2.28 by William Grant
Add a TODO about jailbuilding instructions for the packages.
141
.. TODO: Move this around a bit, as the config options required differ for
142
   the packaged version.
143
1164.2.22 by William Grant
Document configuration of the jail creation process.
144
Now we can actually build the jail. The creation process basically downloads
145
a minimal Ubuntu system and installs it in ``/var/lib/ivle/jails/__base__``.
146
Note that this could download a couple of hundred megabytes. ::
147
148
   sudo ivle-buildjail -r
1164.2.15 by William Grant
Add some initial installation docs.
149
1164.2.16 by William Grant
Add docs on configuring Apache.
150
Configuring Apache
151
------------------
152
153
IVLE makes use of two Apache virtual hosts: one for the application itself,
154
and one for the Subversion services. There are example configuration files
155
in ``examples/config/apache.conf`` and ``examples/config/apache-svn.conf``,
156
which will run IVLE at ``http://ivle.localhost/``.
157
158
On a Debian or Ubuntu system, just copy those two files into
159
``/etc/apache2/sites-available`` under appropriate names (eg. ``ivle`` and
160
``ivle-svn``). Then you need to activate them: ::
161
162
   sudo a2ensite ivle
163
   sudo a2ensite ivle-svn
164
   sudo /etc/init.d/apache2 reload
165
166
1164.2.17 by William Grant
Add /etc/hosts augmentation docs.
167
Configuring hostname resolution
168
--------------------------------
169
170
All of IVLE's hostnames need to be resolvable from the local system. For a
171
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.
172
this is usually done in ``/etc/hosts``. Add this line to that file: ::
1164.2.17 by William Grant
Add /etc/hosts augmentation docs.
173
174
   127.0.1.1 ivle.localhost public.ivle.localhost svn.ivle.localhost
175
1164.2.18 by William Grant
Also edit /etc/hosts inside the jail.
176
Code running inside the jail environment also needs to be able to resolve
177
those names. Add, to ``/var/lib/ivle/jails/__base_build__/etc/hosts``: ::
178
179
   127.0.1.1 svn.ivle.localhost
180
181
Then refresh the active copy of the jail: ::
182
183
   sudo ivle-buildjail
184
1164.2.20 by William Grant
Document installation of the usrmgt-server init script.
185
186
Configuring the user management server
187
--------------------------------------
188
189
You need to have the IVLE user management server (``usrmgt-server``) running
190
for many parts of IVLE to operate properly, so it should be configured to
191
start on boot. There is an example init script in
192
``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.
193
``/etc/init.d/ivle-usrmgt-server``. Start it now, and set it to start
194
automatically: ::
1164.2.20 by William Grant
Document installation of the usrmgt-server init script.
195
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.
196
   sudo /etc/init.d/ivle-usrmgt-server start
197
   sudo update-rc.d ivle-usrmgt-server defaults 99
1164.2.20 by William Grant
Document installation of the usrmgt-server init script.
198
1164.2.27 by William Grant
Document user creation.
199
200
Creating the initial user
201
-------------------------
202
1164.2.30 by William Grant
Document creating an admin user, now issue #151 is fixed.
203
The final step in getting a usable IVLE set up is creating a user. You'll
204
probably want admin privileges - if not, drop the ``--admin``. ::
205
1164.2.45 by Matt Giuca
doc/man/install: s/ivle-makeuser/ivle-adduser/g.
206
   sudo ivle-adduser --admin -p password username 'Full Name'
1164.2.27 by William Grant
Document user creation.
207
208
You should then be able to browse to ``http://ivle.localhost/``, and
209
log in with that username and password.
210
1164.2.7 by Matt Giuca
Added doc/man/(config|install).rst. Bit more of man/index.rst.
211
.. note::
212
   For more advanced configuration, see :ref:`Configuring IVLE
213
   <ref-configuring-ivle>`.