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

« back to all changes in this revision

Viewing changes to doc/man/install.rst

  • Committer: William Grant
  • Date: 2009-06-29 01:55:55 UTC
  • mto: This revision was merged to the branch mainline in revision 1322.
  • Revision ID: grantw@unimelb.edu.au-20090629015555-49xxv0piiieunx8e
Add docs on configuring Apache.

Show diffs side-by-side

added added

removed removed

Lines of Context:
15
15
   along with this program; if not, write to the Free Software
16
16
   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
17
17
 
18
 
.. _ref-install:
19
 
 
20
18
************
21
19
Installation
22
20
************
28
26
might work too. Debian/Ubuntu package names are given after the name of the
29
27
software.
30
28
 
31
 
.. If this list changes, you also need to change the list below, and
32
 
   the list in bin/ivle-dev-setup.
33
 
 
34
29
* Ubuntu 8.04 or later (other distros should work with some tweaking, but are untested)
35
 
* Apache 2.x (``apache2``) with modules:
 
30
* Apache 2.x with modules:
36
31
   + mod_python (``libapache2-mod-python``)
37
32
   + mod_dav_svn and mod_authz_svn (``libapache2-svn``)
38
 
* Python 2.5 (``python2.5``) or 2.6 (``python2.6``) with modules:
 
33
* Python 2.5 or 2.6 with modules:
 
34
   + pysvn (``python-svn``)
39
35
   + cjson (``python-cjson``)
 
36
   + Genshi (``python-genshi``)
40
37
   + ConfigObj (``python-configobj``)
 
38
   + Routes (``python-routes``)
41
39
   + docutils (``python-docutils``)
42
40
   + epydoc (``python-epydoc``)
43
 
   + FormEncode (``python-formencode``)
44
 
   + Genshi (``python-genshi``)
 
41
   + Storm (``python-storm``)
45
42
   + psycopg2 (``python-psycopg2``)
46
 
   + pysvn (``python-svn``)
47
 
   + Storm (``python-storm``)
48
43
* jQuery (``libjs-jquery``)
49
44
* PostgreSQL 8.3 or later (``postgresql``)
50
45
* Subversion (``subversion``)
51
46
* debootstrap (``debootstrap``)
52
 
* rsync (``rsync``)
53
47
* GCC and related build machinery (``build-essential``)
54
48
 
55
49
Master versus slave servers
58
52
Installing from a Debian package
59
53
================================
60
54
 
61
 
.. _database-setup:
62
 
 
63
 
 
64
55
Installing from source
65
56
======================
66
57
 
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: ::
70
 
 
71
 
   bzr get lp:ivle
72
 
 
73
 
This will create a new directory, ``ivle``, containing a pristine
74
 
source tree. The remaining steps assume that you are in this new
75
 
directory.
76
 
 
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: ::
80
 
 
81
 
   bin/ivle-dev-setup
82
 
 
83
 
.. warning::
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
87
 
   of those services.
88
 
   
89
 
 
90
 
This may take a few minutes, and will ask you to confirm installation
91
 
of the dependency packages.
92
 
 
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. ::
98
 
 
99
 
   sudo ivle-config --jail/mirror http://url.to.mirror/ubuntu
100
 
   sudo ivle-buildjail -r
101
 
 
102
 
.. warning::
103
 
   ``ivle-buildjail`` will download a large volume of package data --
104
 
   potentially some hundreds of megabytes.
105
 
 
106
 
``ivle-buildjail`` will download, unpack and install a minimal Ubuntu
107
 
system and configure it for IVLE usage. This could take a while.
108
 
 
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.
113
 
 
114
 
For other environments, it may be more appropriate to start with an
115
 
empty database and just create users as required.
116
 
 
117
 
To load the sample data: ::
118
 
 
119
 
   sudo ivle-loadsampledata examples/db/sample.sql
120
 
 
121
 
.. warning::
122
 
   If you answer 'yes' to the ``ivle-loadsampledata`` prompt, any
123
 
   existing data in your IVLE database will be **permanently
124
 
   destroyed**.
125
 
 
126
 
... or to add a new admin user: ::
127
 
 
128
 
   sudo ivle-adduser --admin -p password username 'Full Name'
129
 
 
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``.
133
 
 
134
 
 
135
 
Manual steps
136
 
------------
137
 
 
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.
142
 
 
143
 
.. If this list changes, you also need to change the list above, and
144
 
   the command in bin/ivle-dev-setup.
145
 
 
146
 
If you want to grab all of the required packages in one command, use::
147
 
 
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
152
 
 
153
58
While installing from a distribution package is often a better idea for
154
59
users, developers will need to install from a plain source tree.
155
60
 
169
74
Unlike the package, you will have to manually set up the database and
170
75
configuration.
171
76
 
172
 
First, it is recommended that you create a separate database user for IVLE.
173
 
You may use any name for the user. ::
174
 
 
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';"
177
 
 
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``). ::
180
 
 
181
 
   sudo -u postgres createdb -O ivleuser ivle
 
77
.. TODO: Separate IVLE PostgreSQL account.
 
78
 
 
79
First you must create a PostgreSQL database, and populate it with the
 
80
IVLE schema. You may use any name for the database. ::
 
81
 
 
82
   sudo -u postgres createdb ivle
182
83
   sudo -u postgres createlang plpgsql ivle
183
 
   psql -h localhost -W ivle ivleuser < userdb/users.sql
 
84
   sudo -u postgres psql -d ivle < userdb/users.sql
184
85
 
185
86
The configuration wizard - ``ivle-config`` - will ask you a series of
186
 
questions. You should give the database username and password as configured
187
 
above. Apart from database settings, the defaults should be correct
 
87
questions. Apart from database settings, the defaults should be correct
188
88
for a development system. If deploying IVLE properly - particularly on
189
89
multiple nodes - several options will need to be changed. Watching
190
90
carefully, run: ::
203
103
 
204
104
   sudo ivle-createdatadirs
205
105
 
206
 
 
207
 
Configuring the jail environment
208
 
--------------------------------
 
106
.. TODO: Setting jail/devmode, jail/suite, jail/extra_packages...
 
107
         We also need to document setting of the default mirror, once
 
108
         issue #150 is fixed.
209
109
 
210
110
You will require a self-contained jail environment in which to safely
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).
215
 
Add to it: ::
216
 
 
217
 
   devmode = True
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
221
 
 
222
 
.. TODO: Move this around a bit, as the config options required differ for
223
 
   the packaged version.
224
 
 
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. ::
228
 
 
229
 
   sudo ivle-buildjail -r
 
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. ::
 
115
 
 
116
   sudo ivle-buildjail -r -m http://url.to.archive/mirror
230
117
 
231
118
Configuring Apache
232
119
------------------
234
121
IVLE makes use of two Apache virtual hosts: one for the application itself,
235
122
and one for the Subversion services. There are example configuration files
236
123
in ``examples/config/apache.conf`` and ``examples/config/apache-svn.conf``,
237
 
which will run IVLE at http://ivle.localhost/.
 
124
which will run IVLE at ``http://ivle.localhost/``.
238
125
 
239
126
On a Debian or Ubuntu system, just copy those two files into
240
127
``/etc/apache2/sites-available`` under appropriate names (eg. ``ivle`` and
245
132
   sudo /etc/init.d/apache2 reload
246
133
 
247
134
 
248
 
Configuring hostname resolution
249
 
--------------------------------
250
 
 
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: ::
254
 
 
255
 
   127.0.1.1 ivle.localhost public.ivle.localhost svn.ivle.localhost
256
 
 
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``: ::
259
 
 
260
 
   127.0.1.1 svn.ivle.localhost
261
 
 
262
 
Then refresh the active copy of the jail: ::
263
 
 
264
 
   sudo ivle-buildjail
265
 
 
266
 
 
267
 
Configuring the user management server
268
 
--------------------------------------
269
 
 
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
275
 
automatically: ::
276
 
 
277
 
   sudo /etc/init.d/ivle-usrmgt-server start
278
 
   sudo update-rc.d ivle-usrmgt-server defaults 99
279
 
 
280
 
 
281
 
Creating the initial user
282
 
-------------------------
283
 
 
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``. ::
286
 
 
287
 
   sudo ivle-adduser --admin -p password username 'Full Name'
288
 
 
289
 
You should then be able to browse to http://ivle.localhost/, and
290
 
log in with that username and password.
291
 
 
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`.
294
 
 
295
135
.. note::
296
136
   For more advanced configuration, see :ref:`Configuring IVLE
297
137
   <ref-configuring-ivle>`.