Maintaining RAP3

Once RAP3 is running, there are maintenance tasks you might want to do. The most frequently used tasks are described here for RAP-3 maintainers to refer to.

The purpose of maintaining software is to guarantee continuous operation for all users. In this chapter we use the RAP3 server at OUNL as an example, trusting that you will figure out what to do for servers of your own.

Tasks

Here is an overview of all tasks described on this page. Refer to the related section below for details on each specific task

  1. Connect Before doing any maintenance, you need credentials to gain access to your server. Then you can connect to the server. We assume you gain access to a command-line interface (CLI) of your server. In this text that CLI is /bin/bash on a linux machine.

  2. Check the configuration When you start a maintenance session, you may want to check on the system. RAP3 runs in containers on a docker-platform, so you can check whether the containers are running and you can check the configuration in which they should be running.

  3. Upgrade to a new version

  4. Refresh the configuration Refreshing the RAP3 configuration is something you need to do only when developers tell you to do that.

Connecting to the RAP3 server

The RAP-server has been configured to communicate via ssh. The Open Universiteit allows ssh-connections only through VPN. So I made sure my VPN-connection is active.

I entered the server using command ssh rap.cs.ou.nl and the right user/password combination, upon which I gained access to the CLI.

The RAP3-instance is installed from directory ~\RAP3, which is the working directory from which maintenance is done.

This is what you can expect to see:

stefjoosten$ ssh sjo@rap.cs.ou.nl
sjo@rap.cs.ou.nl's password:
Permission denied, please try again.
sjo@rap.cs.ou.nl's password:
Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.4.0-124-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
170 packages can be updated.
12 updates are security updates.
New release '18.04.2 LTS' available.
Run 'do-release-upgrade' to upgrade to it.
Last login: Wed May 29 12:03:17 2019 from 145.20.142.195
sjo@lnx-hrl-202v:~$cd RAP3
sjo@lnx-hrl-202v:~/RAP3$

Checking which containers are running

The server should show at least two containers, a database container called rap3_db_1 and a RAP-container called dockerampersand_rap3_1. There may be a third container called rap3_phptools_1, which is there to gain access to the database (for maintainers only). To verify, give the command docker ps. This is what you may expect to see:

sjo@lnx-hrl-202v:~/RAP3$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
40e5e97c1b26 phpmyadmin/phpmyadmin "/run.sh superviso..." 4 months ago Up 36 seconds 9000/tcp, 0.0.0.0:8080->80/tcp rap3_phptools_1
bff782b2da89 ampersandtarski/rap3-db "docker-entrypoint..." 4 months ago Up 2 weeks 3306/tcp rap3_db_1
773f7ad86527 dockerampersand_rap3 "docker-php-entryp..." 18 months ago Up 2 weeks 0.0.0.0:80->80/tcp dockerampersand_rap3_1
7525eb7ea95f dockerampersand_db "docker-entrypoint..." 18 months ago Up 2 weeks 3306/tcp dockerampersand_db_1
sjo@lnx-hrl-202v:~/RAP3$

In this case it appears that a fourth container is running. This poses no problem, because other processes may run concurrently without interfering with RAP3.

The configuration file that specifies this configuration is the only file in the working directory:

sjo@lnx-hrl-202v:~/RAP3$ ls -al
total 20
drwxrwxr-x 3 sjo sjo 4096 Oct 25 2018 .
drwxr-xr-x 18 sjo sjo 4096 Jan 9 2018 ..
-rw-rw-r-- 1 sjo sjo 472 Oct 25 2018 docker-compose.yml
drwxr-xr-x 5 root root 4096 Dec 15 2017 volumes
sjo@lnx-hrl-202v:~/RAP3$

By inspecting the contents you can see whether the configuration matches what you see in docker. This is what you can expect in docker-compose.yml:

sjo@lnx-hrl-202v:~/RAP3$ cat docker-compose.yml
version: '3'
services:
rap3:
restart: always
image: ampersandtarski/ampersand-rap:latest
ports:
- "80:80"
links:
- db
volumes:
- ./volumes/log:/var/www/html/RAP3/log
- ./volumes/scripts:/var/www/html/RAP3/scripts
db:
restart: always
image: ampersandtarski/rap3-db
volumes:
- ./volumes/mysql:/var/lib/mysql
phptools:
image: phpmyadmin/phpmyadmin
ports:
- "8080:80"
links:
- db
sjo@lnx-hrl-202v:~/RAP3$

The directory volumes contains the Ampersand data, which is kept outside the containers so the data persists if containers get killed or if you restart the software.

sjo@lnx-hrl-202v:~/RAP3$ ls -al volumes/
total 40
drwxr-xr-x 5 root root 4096 Dec 15 2017 .
drwxrwxr-x 3 sjo sjo 4096 Oct 25 2018 ..
drwxr-xr-x 2 www-data www-data 4096 Dec 28 11:16 log
drwxr-xr-x 229 999 999 20480 May 13 07:48 mysql
drwxr-xr-x 75 www-data www-data 4096 Oct 25 2018 scripts
sjo@lnx-hrl-202v:~/RAP3$

There are three data sets. The directory log contains logging information of the RAP3-server. The directory mysql contains the data from MariaDB. The directory scripts contains the student scripts and the files they generated when working in RAP3.

Upgrade to a new version

If you need to upgrade RAP3 to the latest release run this command:

sjo@lnx-hrl-202v:~/RAP3$ docker-compose up -d

As you can see in the configuration (docker-compose.yml)

Refreshing the code

In the rare event that the configuration of RAP3 has changed (to be announced by the developers), you must update the file docker-compose.ymlby hand, using the command:

wget https://raw.githubusercontent.com/AmpersandTarski/RAP/master/docker-compose.yml