1 | Installation of Kofa |
---|
2 | #################### |
---|
3 | |
---|
4 | These are generic installation instructions for the WAeUP.Kofa |
---|
5 | student information portal and customized versions thereof. |
---|
6 | |
---|
7 | For specific aspects of this package please refer to the local README |
---|
8 | file. |
---|
9 | |
---|
10 | Please note, that **only Linux-based installs** are described and actively |
---|
11 | supported. We recommend use of Debian_ / Ubuntu_. |
---|
12 | |
---|
13 | .. note:: This means we do not actively support Windows(tm)! |
---|
14 | |
---|
15 | .. contents:: Table of Contents |
---|
16 | :local: |
---|
17 | |
---|
18 | |
---|
19 | Prerequisites |
---|
20 | ************* |
---|
21 | |
---|
22 | Installing `kofa` from sources on a local system involves many steps to meet |
---|
23 | all requirements, dependencies, etc. For quick setup we provide `docker`_ |
---|
24 | based installs which ease the whole setup procedure very much. |
---|
25 | |
---|
26 | There are, however, a few things, you should be aware of. Most important: |
---|
27 | `kofa` stores persistent data on disk, in an own `var/` directory. This |
---|
28 | directory keeps all files, database data and also log files. You must keep this |
---|
29 | directory if you want to keep your data. |
---|
30 | |
---|
31 | Starting with version 1.8, each release of `kofa` contains a `Dockerfile` in |
---|
32 | the sources root. You can use this file to build a dockerized version of |
---|
33 | `kofa`. But you can also use this file as a reference, how to build `kofa` from |
---|
34 | sources. |
---|
35 | |
---|
36 | Good to know and very important if you want to install the manual way: |
---|
37 | The Kofa packages are based on `Grok`_, which is a Python_ |
---|
38 | framework for agile web application development. Grok_ itself is based |
---|
39 | on `Zope`_. |
---|
40 | |
---|
41 | Both, Grok_ and Zope_, are written in the `Python`_ programming language (with |
---|
42 | parts written in C). For a source install you therefore have to have `Python`_ |
---|
43 | installed (including `Python`_ headers) in version 2.7 (Python 3.x is currently |
---|
44 | not supported). |
---|
45 | |
---|
46 | If you want to install using `docker` you of course need `docker` installed on |
---|
47 | your system. Please refer to your system documentation or to https://docker.com |
---|
48 | for details. |
---|
49 | |
---|
50 | |
---|
51 | Quick Install (dockerized) |
---|
52 | ************************** |
---|
53 | |
---|
54 | The Dockerfiles contained in our releases fetch sources from the central Python |
---|
55 | package repository `https://pypi.org/`. Visit the Dockerfile to learn, how you |
---|
56 | can build kofa from a local source tree. |
---|
57 | |
---|
58 | Go to the directory with the `Dockerfile` (we assume here, it is called |
---|
59 | `waeup.kofa`):: |
---|
60 | |
---|
61 | $ cd waeup.kofa |
---|
62 | |
---|
63 | Build `kofa` and tag the build, so you can tell different versions apart later |
---|
64 | on:: |
---|
65 | |
---|
66 | $ docker build -t kofa:latest . |
---|
67 | |
---|
68 | Please note the separated dot at the end of the command. |
---|
69 | |
---|
70 | Replace `kofa:latest` with any tag you find useful. Usual alternative tags |
---|
71 | would be: `kofa:1.8.1.dev0` or similar. But also `mybuild:foo` or just |
---|
72 | `mybuild` are valid tags. |
---|
73 | |
---|
74 | This command will take a lot of time and will perform all the steps, you would |
---|
75 | need to do to install `kofa` natively. |
---|
76 | |
---|
77 | If all works well, you can start a new `kofa` instance in foreground like this:: |
---|
78 | |
---|
79 | $ docker run --rm -it -p 8080:8080 -v kofadata1:/home/kofa/waeup.kofa/var kofa:latest |
---|
80 | |
---|
81 | Use the tag you picked before (here: `kofa:latest`) and connect to the running instance |
---|
82 | |
---|
83 | https://localhost:8080/ |
---|
84 | |
---|
85 | Your username and password will be `grok` and `grok`. |
---|
86 | |
---|
87 | Enter the credentials (username 'grok', password 'grok' by default) |
---|
88 | and name and add a `University`. |
---|
89 | |
---|
90 | Congratulations, you got Kofa running. |
---|
91 | |
---|
92 | |
---|
93 | What else can I do with `kofa` and Docker? |
---|
94 | ****************************************** |
---|
95 | |
---|
96 | Some remarks about the last `docker` command: |
---|
97 | `-v kofadata1:/home/kofa/waeup.kofa` keeps a persistent volume named `kofadata1` on |
---|
98 | your host. You do not have to know where this volume resides on your machine |
---|
99 | (while you can, if you insist). The containers using this volume can be |
---|
100 | discarded after use and you can of course keep multiple volumes in parallel on |
---|
101 | your system. |
---|
102 | |
---|
103 | You can stop the instance running in foreground pressing `CTRL-C`. |
---|
104 | |
---|
105 | Passing `--rm` to `docker` means to dispose a container after it stopped. |
---|
106 | |
---|
107 | |
---|
108 | Run `kofa` daemonized |
---|
109 | ********************* |
---|
110 | |
---|
111 | If you want to run `kofa` daemonized, use this:: |
---|
112 | |
---|
113 | $ docker run --rm -d -p 8080:8080 -v kofadata1:/home/kofa/waeup.kofa/var kofa:latest |
---|
114 | |
---|
115 | Instead of interactive (`-it`) we now use daemonized mode (`-d`). We also |
---|
116 | tunnel the containers port 8080 to our hosts port 8080 because otherwise we |
---|
117 | could not reach `kofa`. For security reasons it binds to containers localhost |
---|
118 | address by default. |
---|
119 | |
---|
120 | You can stop this instance with:: |
---|
121 | |
---|
122 | $ docker stop kofa:latest |
---|
123 | |
---|
124 | which will stop and destroy the running container. If you create a new |
---|
125 | container with the same volume data, all objects from the last run should be |
---|
126 | visible and usable. |
---|
127 | |
---|
128 | |
---|
129 | Enter the `kofa` filesystem inside container |
---|
130 | ******************************************** |
---|
131 | |
---|
132 | If an instance is running, you can enter the filesystem with for instance:: |
---|
133 | |
---|
134 | $ docker run --rm -it -v kofadata1:/home/kofa/waeup.kofa/var kofa:latest /bin/bash |
---|
135 | |
---|
136 | which will drop you into a shell inside the container. Your system credentials |
---|
137 | are by default `kofa` and `kofa`. |
---|
138 | |
---|
139 | |
---|
140 | Copy data in and out of the container |
---|
141 | ************************************* |
---|
142 | |
---|
143 | For backups etc. it is essential that you can copy data from or to the |
---|
144 | container. To do this, we mount a second local directory into the container and |
---|
145 | use that for transmitting data:: |
---|
146 | |
---|
147 | $ mkdir mybackup |
---|
148 | $ docker run --rm -it -v kofadata1:/home/kofa/waeup.kofa/var -v `pwd`/mybackup:/data kofa:latest cp -ar /home/kofa/waeup.kofa/var /data |
---|
149 | |
---|
150 | which will copy the whole container-internal `var/`-directory into our local |
---|
151 | `mybackup` dir. |
---|
152 | |
---|
153 | |
---|
154 | How to start/stop `kofa` when running the native setup |
---|
155 | ****************************************************** |
---|
156 | |
---|
157 | Startup Kofa in foreground:: |
---|
158 | |
---|
159 | $ bin/kofactl fg |
---|
160 | # press CTRL-D to stop the kofa server |
---|
161 | |
---|
162 | Startup Kofa in background:: |
---|
163 | |
---|
164 | $ bin/kofactl start |
---|
165 | $ bin/kofactl status # check status, running or not |
---|
166 | $ bin/kofactl stop # stop running instance (also 'restart' possible) |
---|
167 | |
---|
168 | That should start you. |
---|
169 | |
---|
170 | Have fun with Kofa! |
---|
171 | |
---|
172 | |
---|
173 | .. _Debian: https://www.debian.org/ |
---|
174 | .. _docker: https:// |
---|
175 | .. _Grok: http://grok.zope.org/ |
---|
176 | .. _Python: https://www.python.org/ |
---|
177 | .. _Subversion: https://subversion.apache.org/ |
---|
178 | .. _Ubuntu: https://www.ubuntu.com/ |
---|
179 | .. _virtualenv: https://www.virtualenv.org/en/latest/ |
---|
180 | .. _WAeUP: https://www.waeup.org/ |
---|
181 | .. _Zope: https://www.zope.org/ |
---|
182 | .. _zc.buildout: https://pypi.org/project/zc.buildout |
---|
183 | |
---|