updated installation guide authored by Louis Dümler's avatar Louis Dümler
## Prerequirements
A running installation needs Python3, Nginx (also Apache or other webservers which works as a proxy are possible), Postgresql and Redis. Other databases have not been tested, so their usage is on your own risk. Furthermore, a Python and Java runtime are required for automatic and programming task evaluation. Also, the sandbox [isolate](https://github.com/ioi/isolate) is required for executing untrusted code. Due isolate you can only use a modern Linux distribution (tested on Debian, Ubuntu and Manjaro) as operating system.
## Prerequisites
A running instance of ChiefExam requires **Python3**, **Postgresql**, and **Redis**. Other databases have not been tested, so their usage is at your own risk. Furthermore, a **Python & Java runtime** are required for automatic programming task evaluation. The code execution sandbox **[isolate](https://github.com/ioi/isolate)** is required for executing this untrusted code. Due to isolate, you can only use a modern Linux distribution (tested on Debian, Ubuntu, and Manjaro) as operating system.
It is recommended to use **Nginx** in production to serve static content. Other webservers such as **Apache** which work as a proxy are also feasable.
The commands below are simply an example of how you might install these dependencies. Please consult with your operating system's package manager to determine the correct packages to install.
```
# Add additional repositories for Redis
add-apt-repository -y ppa:chris-lea/redis-server
# Update repositories list
apt update
# Install Dependencies
apt -y install git build-essential libssl-dev libffi-dev libcap-dev python3-pip python3-dev python3-venv redis-server postgresql postgresql-contrib openjdk-11-jdk
```
## Setting up [isolate](https://github.com/ioi/isolate)
For isolate, you can follow the instruction guides on the website. In short, you have to execute the following commands in your bash:
```bash
cd /tmp
git clone https://github.com/ioi/isolate.git
cd isolate
make isolate
......@@ -11,10 +27,8 @@ sudo make install
```
The building needs a modern version `gcc`. Instead of `make isolate` you can also consider to user `make`, which also creates a documentation using `a2x` (this software has then to be installed on your operating system, too).
## Setting up flask
After downloading the application, you should create a virtual environment and install the packets needed for ChiefExam:
After downloading the application, you need to create a Python virtual environment and install the packages needed for ChiefExam:
```bash
git clone https://gitlab.cs.fau.de/it62ajow/chiefexam.git
cd chiefexam
......@@ -22,14 +36,50 @@ python3 -m venv env
source env/bin/activate
pip install -r requirements.txt
```
Now you should create a `.env` file in the root directory of ChiefExam and define the following variables like that:
Now create a `.env` file in the root directory of ChiefExam and define the following variables:
```
DATABASE_URL=...
REDIS_URL=...
REDIS_URL=... (optional)
JAVA_HOME=... (optional)
PYTHON_HOME... (optional)
SECRET_KEY...
[...]
```
An example `.env` file:
```
DATABASE_URL=postgresql+psycopg2://<user>:<password>@<host>/<database>
JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/
PYTHON_HOME=/home/<user>/chiefexam/env/
SECRET_KEY=<some strong key>
DEBUG=True
```
- `DATABASE_URL`: Defines the url for the database
## Running ChiefExam
To start ChiefExam you will need two open bash terminals.
Starting the ChiefExam server is done by using the following commands:
```
cd chiefexam
source env/bin/activate
python server.py
```
`deactivate` can be used to leave the Python virtual environment.
Starting the celery service worker is achieved by using:
```
cd chiefexam
source env/bin/activate
celery -A app:celery worker
```
`--loglevel=INFO` can be added to the start of celery for debugging.
## Defining systemd workers
## Setting up proxy
......
......