Difference between revisions of "FREE - Framework for Remote Experiments in Education"
Line 20: | Line 20: | ||
$ git clone https://github.com/e-lab-tecnico-ulisboa-pt/RPi_Server-PG | $ git clone https://github.com/e-lab-tecnico-ulisboa-pt/RPi_Server-PG | ||
− | + | then edit the "main.py" file and change the following global variables: | |
− | |||
− | |||
− | |||
− | |||
+ | SERVER = "192.168.1.102" | ||
+ | MY_IP = "192.168.1.102" | ||
+ | SEGREDO = "estou bem" | ||
+ | PORT = 5050 | ||
+ | BINARY_DATA_PORT = 5051 | ||
== Main Server (Main_Server) == | == Main Server (Main_Server) == |
Revision as of 17:34, 12 August 2021
- TODO Ainda estou a escrever(Rossa)
Contents
Pre-requisites
Build environment
- Git (2.30.2+)
- Python (3.7.0+)
Install
Raspberry PI Server (RPI_Server)
Setup python3 environment variable pointing to run the version installed (in this exemple is for python3.7) by:
$ sudo nano ~/.bashrc
edit it adding to the end:
$ alias python3="python3.7"
First checkout the project from github:
$ git clone https://github.com/e-lab-tecnico-ulisboa-pt/RPi_Server-PG
then edit the "main.py" file and change the following global variables:
SERVER = "192.168.1.102" MY_IP = "192.168.1.102" SEGREDO = "estou bem" PORT = 5050 BINARY_DATA_PORT = 5051
Main Server (Main_Server)
This sowftware is the thispatcher of the information. By allowing the communications form the frontend and each RPi_Server responsable for a experience. To install this you need to install at least Python 3.7 and the lib Flask (https://pypi.org/project/Flask/).
Them go to the project from github:
$ git clone https://github.com/e-lab-tecnico-ulisboa-pt/Main_Server-RexC
Build
Configure the following properties based on your environment:
build_pendulum.properties:
- pendulum.experiment.list: Name of the experiment(s) to build, comma (,) delimited.
- pendulum.multicast.controller.host: Hostname where Multicast controller is going to be installed (default: elab-multicast)
- pendulum.multicast.controller.port: Listen CORBA port used to recieve connections from Hardware Server, rec.web and rec.client (default: 9001)
- pendulum.rec.multicastcontroller.jmxremote.port: Listen JMX port used to recieve connections from rec.web (default: 25001)
- install.dir: Base directory where Multicast Controller is going to be installed (default: /home/elab)
- deployment.subdir: Sub directory where Multicast Controller is going to be installed (default: /rec-deployment)
deployment/compose/src/main/docker/docker-compose-pendulum.yml:
- WEBSWING_PUBLIC_URL: URL where webswing is accessible (e.g. https://elab-dev.vps.tecnico.ulisboa.pt/)
experiments/{experiment}/etc/build.properties
- experiment.driver.device: Serial port device (e.g. /dev/ttyS0)
Package everything:
$ mvn clean package -Dmaven.test.skip=true -Djarsigner.alias="REC" -Dbuild.environment=pendulum -Dpack.docker.images -Dpublic.repo=docker.io
Copy resulting packages to destination servers:
- Multicast Server
$ scp deployment/images/target/reverse-proxy.tar multicast-server-name:/tmp/ $ scp deployment/images/target/multicast.tar multicast-server-name:/tmp/ $ scp deployment/images/target/webswing-admin.tar multicast-server-name:/tmp/ $ scp deployment/images/target/webswing.tar multicast-server-name:/tmp/ $ scp deployment/compose/target/docker-compose-runner.yml multicast-server-name:/tmp/docker-compose.yml
- Hardware Server
$ scp dist/java/*HardwareServer*.zip hardware-server-name:/tmp/
Install
ReC Client and Multicast Controller
- Create user elab
$ sudo useradd --create-home --shell /bin/false --expiredate 1 elab
- Add user to docker group
$ sudo usermod -a -G docker elab
- Load Docker images (only if building outside target deployment server)
$ sudo -u elab docker load --input /tmp/webswing.tar # ReC client image $ sudo -u elab docker load --input /tmp/multicast.tar # Multicast Controller image $ sudo -u elab docker load --input /tmp/webswing-admin.tar # ReC client admin console image $ sudo -u elab docker load --input /tmp/reverse-proxy.tar # Reverse Proxy image
- Copy docker-compose.yml file to elab user home
$ sudo -u elab cp /tmp/docker-compose.yml /home/elab/
- Start all services
$ sudo -u elab docker-compose -f /home/elab/docker-compose.yml up -d
Hardware Server
- Replace wpexperiment with your experiment name
$ export experiment=wpexperiment
- Create user elab
$ sudo useradd --create-home --shell /bin/false --expiredate 1 elab
- Create experiment directory
$ sudo -u elab mkdir /home/elab/rec-deployment/${experiment}
- Unpack experiment package to experiment directory
$ sudo -u elab unzip /tmp/${experiment}HardwareServer*.zip -d /home/elab/rec-deployment/${experiment}
- Start experiment
$ sudo -u elab /home/elab/rec-deployment/${experiment}/${experiment}Daemon.sh start
Test
- Direct access to experiment:
Access configured URL at WEBSWING_PUBLIC_URL property (e.g. https://elab.my.url.com) + experiment name (e.g. wpalentejo)
https://elab.my.url.com/wpalentejo
- Webswing and administration console
Access configured URL at WEBSWING_PUBLIC_URL property (e.g. https://elab.my.url.com)
User: admin Pass: pwd
Operations
Hardware Server
- Startup
$ sudo -u elab /home/elab/rec-deployment/${experiment}/${experiment}Daemon.sh start
- Shutdown
$ sudo -u elab /home/elab/rec-deployment/${experiment}/${experiment}Daemon.sh stop
- Logs
$ /home/elab/rec-deployment/${experiment}/*.log
ReC Client and Multicast Controller
- Startup
$ sudo -u elab docker-compose -f /home/elab/docker-compose.yml up -d
- Shutdown
$ sudo -u elab docker-compose -f /home/elab/docker-compose.yml down
- Logs:
$ docker logs rec.client # ReC client logs (webswing) $ docker logs rec.multicast # ReC Multicast Controller logs $ docker logs rec.proxy # ReC Proxy logs $ docker logs rec.client-admin # ReC client Administration Console logs (webswing)
Steps to connect to IST environment:
- TODO Steps