Difference between revisions of "FREE - Framework for Remote Experiments in Education"

From wwwelab
Jump to navigation Jump to search
Line 34: Line 34:
  
 
     $ git clone https://github.com/e-lab-tecnico-ulisboa-pt/Main_Server-RexC
 
     $ 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)
 
 
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
 

Revision as of 17:36, 12 August 2021

  1. TODO Ainda estou a escrever(Rossa)

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 = "main_server_IP"
   MY_IP = "RPi_IP"
   SEGREDO = "password"
   PORT = Port_to_comunication
   BINARY_DATA_PORT = Port_to_transfer_Binary_data

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