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.
## 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).
## Setting up flask
After downloading the application, you need to create a Python virtual environment and install the packages needed for 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
Things will be added here.
## 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.
Note that the ChiefExam was solely tested on Python 3.8 with the exact packages as denoted in `requirements.txt`. Unfortunately, the APIs of many packages change regularly, so simply changing the versions can cause a lot of mess. As newer Ubuntu versions are usually shipped with newer Python versions, I recommend to install Python 3.8 using `https://launchpad.net/%7Edeadsnakes/+archive/ubuntu/ppa` (see https://askubuntu.com/questions/682869/how-do-i-install-a-different-python-version-using-apt-get):
```bash
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python3.8
```
## 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).
## Setting up flask
After downloading the application, you need to create a Python virtual environment and install the packages needed for ChiefExam: