|
|
## 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
|
|
|
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).
|
|
|
|
|
|
|
|
|
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
|
... | ... | |