Sviluppo

Benvenuto nella Guida per sviluppatori di BigBlueButton per BigBlueButton 2.2.

Questo documento offre una panoramica su come configurare un ambiente di sviluppo per BigBlueButton 2.2.

Prima di iniziare

Devi prima configurare un server BigBlueButton 2.2. Vedere le istruzioni in Installa BigBlueButton 2.2 .

Panoramica

Un server BigBlueButton è costruito da una serie di componenti che corrispondono ai pacchetti Ubuntu. Alcuni di questi componenti lo sono

  • bbb-web - Implementa l'API BigBlueButton e la conversione dei documenti per la presentazione
  • akka-bbb-apps: applicazione lato server che gestisce lo stato delle riunioni sul server
  • bbb-html5: client HTML5 che viene caricato nel browser. L'applicazione meteor lato server client che utilizza MongoDB e React.js
  • bbb-fsesl-akka - Componente per inviare comandi a FreeSWITCH
  • bbb-playback-presentation - Registra e riproduci script per creare layout di presentazione
  • bbb-webrtc-sfu - Server che collega le richieste in arrivo dal client a Kurento
  • kurento-media-server - Server multimediale WebRTC per l'invio / ricezione / registrazione di video (webcam e condivisione dello schermo)
  • bbb-freeswitch-core - Server multimediale WebRTC per inviare / ricevere / registrare audio

Questo documento descrive come configurare un ambiente di sviluppo utilizzando un server BigBlueButton 2.2 esistente. Una volta configurato l'ambiente, sarai in grado di apportare modifiche personalizzate alla sorgente BigBlueButton, compilare la sorgente e sostituire i componenti corrispondenti sul server (come l'aggiornamento del client BigBlueButton).

Le istruzioni in questa guida sono dettagliate in modo da poter comprendere ogni passaggio necessario per modificare un componente. Se riscontri problemi o errori in qualsiasi sezione, non ignorare gli errori. Fermati e ricontrolla di aver eseguito correttamente il passaggio. Se non sei in grado di determinare la causa dell'errore, procedi come segue

  • Innanzitutto, utilizza Google per cercare l'errore. C'è una grande quantità di informazioni in bigbluebutton-dev che sono state indicizzate da Google.
  • Prova a eseguire gli stessi passaggi su un altro server BigBlueButton.
  • Pubblica una domanda su bigbluebutton-dev con una descrizione del problema e i passaggi da riprodurre. Pubblica log e messaggi di errore su Pastebin collegali nel tuo post.

Prima di iniziare

Questa sezione si assicura che tu sia pronto per configurare un ambiente di sviluppo BigBlueButton.

Hai un server BigBlueButton funzionante

Prima di poter iniziare a sviluppare su BigBlueButton, è necessario installare BigBlueButton 2.2 (vedere i passaggi di installazione ) e assicurarsi che funzioni correttamente. Assicurati che non ci siano stati errori durante l'installazione e di poter partecipare a una sessione con successo.

Sottolineiamo che il tuo server BigBlueButton deve funzionare prima di iniziare a configurare l'ambiente di sviluppo. Assicurati di poter accedere, avviare sessioni, unirti al bridge audio, condividere la tua webcam e registrare e riprodurre sessioni, il tutto utilizzando le demo API integrate.

Iniziando con un server BigBlueButton funzionante, hai la possibilità di passare avanti e indietro tra i componenti del pacchetto predefinito e le eventuali modifiche apportate.

Ad esempio, supponi di modificare il client BigBlueButton e qualcosa non funziona (come il client non si sta caricando completamente), puoi facilmente tornare al client con pacchetto predefinito e verificare che funzioni correttamente (escludendo così eventuali problemi di ambiente ciò potrebbe anche impedire il caricamento del client modificato).

Un'altra nota: queste istruzioni presumono che tu abbia il bbb-demopacchetto installato in modo da poter eseguire una qualsiasi delle demo API per testare la tua configurazione.

Sviluppo su Windows

Per sviluppare BigBlueButton da Windows, hai due opzioni:

  • usa Windows Subsystem per Linux
  • usa VMWare Player o VirtualBox per creare una macchina virtuale (VM).

Scegli il sistema operativo come Ubuntu 16.04 a 64 bit. La documentazione associata per VMWare Player e VirtualBox o WSL ti guiderà nella configurazione di una nuova VM 16.04 a 64 bit.

Nota: quando si configura la VM, non importa a BigBlueButton se si configura il server o il desktop Ubuntu 16.04. Se installi il desktop, avrai la possibilità di utilizzare un'interfaccia grafica per modificare i file. Quando si esegue la VM, sarà necessario un sistema operativo host in grado di eseguire una macchina virtuale a 64 bit .

Privilegi di root

Importante: assicurati di creare un altro utente come "ubuntu" per evitare di incappare in errori di autorizzazione come Nginx 403 Forbidden error o error-null-while-compiling-resource-bundles-under-linux-with-hudson .

Non eseguire comandi come utente root e utilizzare sudo solo quando richiesto.

Queste istruzioni sono scritte per un account chiamato "ubuntu", ma si applicheranno a qualsiasi account che abbia i permessi per eseguire comandi come root, come

sudo ls

wget

Dovrai scaricare alcuni file in queste istruzioni usando wget. Se non è installato sul tuo server, puoi installare il pacchetto utilizzando il seguente comando

sudo apt-get install wget

Avere un account GitHub

La sorgente BigBlueButton è ospitata su GitHub . Hai bisogno di un account GitHub. Inoltre, devi avere molta familiarità con il funzionamento di git. Nello specifico, devi sapere come farlo

  • clonare un repository
  • creare un ramo
  • rimanda le modifiche a un repository

Se non hai mai usato git prima, o se i termini clone , branch e commit non ti sono familiari, fermati ora. Questi sono concetti fondamentali per git con cui devi acquisire familiarità prima di provare a sviluppare su BigBlueButton. Per diventare competenti, un buon punto di partenza è questo libro gratuito e le pagine della Guida di GitHub .

L'utilizzo di GitHub ti consente di lavorare facilmente sulla tua copia della fonte BigBlueButton, di archiviare gli aggiornamenti nella fonte sul tuo account GitHub e di contribuire facilmente a BigBlueButton .

Iscriviti a bigbluebutton-dev

Ti consigliamo di iscriverti alla mailing list bigbluebutton-dev per seguire gli aggiornamenti allo sviluppo di BigBlueButton e per collaborare con altri sviluppatori.

Imposta un ambiente di sviluppo

Innanzitutto, è necessario installare gli strumenti di sviluppo principali.

sudo apt-get install git-core ant ant-contrib openjdk-8-jdk-headless

Con JDK installato, è necessario impostare la variabile JAVA_HOME. Modifica ~/.profile (qui stiamo usando vim per modificare il file)

vi ~/.profile

Aggiungi la seguente riga alla fine del file

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

Ricarica il tuo profilo (questo avverrà automaticamente al prossimo accesso, ma lo faremo esplicitamente qui per caricare la nuova variabile d'ambiente).

source ~/.profile

Fai un rapido test per assicurarti che JAVA_HOME sia impostato.

$ echo $JAVA_HOME
/usr/lib/jvm/java-8-openjdk-amd64

Nel passaggio successivo, è necessario installare una serie di strumenti utilizzando sdkman.

curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"

sdk install gradle 5.5.1
sdk install grails 3.3.9
sdk install sbt 1.2.8
sdk install maven 3.5.0

Strumenti legacy

Le istruzioni per scaricare l'SDK Flash sono disponibili qui .

Verificando la fonte

Dopo aver installato gli strumenti di sviluppo, cloneremo il sorgente nella seguente directory:

/home/ubuntu/dev

Utilizzando il tuo account GitHub, procedi come segue

  1. Fork il repository BigBlueButton sul tuo conto GitHub
  2. Clona il tuo repository nella tua ~/devcartella

Dopo la clonazione, avrai la seguente directory (assicurati che la directory bigbluebutton sia all'interno della tua dev).

/home/ubuntu/dev/bigbluebutton

Conferma che stai lavorando sul ramo  v2.2.x-release.

cd /home/ubuntu/dev/bigbluebutton
git status

Tu dovresti vedere

On branch v2.2.x-release
Your branch is up-to-date with 'origin/v2.2.x-release'.
nothing to commit, working directory clean

Quando cloni per la prima volta il repository git di BigBlueButton, git ti posizionerà, per impostazione predefinita, sul ramo master , che è l'ultimo codice di BigBlueButton. In precedenza, il master andava bene per lo sviluppo BBB 2.2, ma lo sviluppo per 2.2 ora avviene sul ramo di rilascio denominato v2.2.x-release.

La prima cosa che dobbiamo fare è aggiungere il repository remoto al nostro clone locale.

git remote add upstream https://github.com/bigbluebutton/bigbluebutton.git

Ora puoi controllare il tuo elenco locale di repository tracciati per verificare che l'aggiunta abbia funzionato. Dovresti vedere almeno due risultati (origin e upstream). Quello chiamato "origine" dovrebbe collegarsi al tuo fork personale ed è il repository che hai clonato. Il secondo risultato "a monte" dovrebbe collegarsi al repository principale di BigBlueButton.

git remote -v

Successivamente, dobbiamo recuperare la versione più aggiornata del repository remoto.

git fetch upstream

Ora sei pronto per creare un nuovo ramo per iniziare il tuo lavoro e basare il v2.2.x-releaseramo di rilascio

git checkout -b my-changes-branch upstream/v2.2.x-release

"Checkout" cambia i rami

"-B" è un'opzione per creare un nuovo ramo prima di cambiare

"My-changes-branch" sarà il nome del nuovo ramo

"Upstream / v2.2.x-release" è dove vuoi avviare il tuo nuovo ramo

Ora dovresti confermare di essere nel ramo corretto.

git status

# On branch my-changes-branch
nothing to commit (working directory clean)

Ambiente di produzione

Va bene. Fermiamoci un minuto.

Hai impostato gli strumenti necessari e clonato il codice sorgente, ma se intendi iniziare ad apportare modifiche al codice BigBlueButton devi capire come interagiscono le parti.

Di seguito è riportata una panoramica dei diversi componenti in una configurazione di produzione. Durante lo sviluppo si desidera modificare le impostazioni di configurazione per caricare nuove modifiche invece di quelle distribuite per la produzione.

produzione

Come puoi vedere, nginx è configurato per caricare il client da /var/www/bigbluebutton/client  e inoltrare le chiamate a web-api su tomcat7 (nota: in BigBlueButton 2.2 l'API web ora viene eseguita come processo separato e non utilizza più tomcat7). Durante lo sviluppo, devi dire a nginx di caricare dalla tua directory di sviluppo ( /home/ubuntu/dev/bigbluebutton)

Dopo aver eseguito i passaggi seguenti, ti ritroverai con la seguente configurazione.

sviluppo

I componenti che vengono eseguiti in Red5 non cambiano quando distribuisci i file di sviluppo per bbb-apps, bbb-voice, bbb-video e bbb-deskshare in /usr/share/red5. Tuttavia, si noti che il client e l'API Web vengono serviti da luoghi diversi.

Sviluppo del client HTML5

$ cd ~/dev/bigbluebutton/bigbluebutton-html5

Installa Meteor.js.

$ curl https://install.meteor.com/ | sh

Il client HTML5 in BigBlueButton 2.2 dipende dalla versione 1.8.x di Meteor. Individua bigbluebutton-html5/e imposta la versione appropriata di Meteor

meteor update --allow-superuser --release 1.8

È necessaria una modifica a settings.yml per far funzionare la webcam e la condivisione dello schermo nel client (supponendo che tu stia già utilizzando HTTPS). Il primo passo è trovare il valore per il file kurento.wsUrlsettings.yml.

grep "wsUrl" /usr/share/meteor/bundle/programs/server/assets/app/config/settings.yml

Successivamente, modifica il file development settings.yml e cambia wsUrl in modo che corrisponda a ciò che è stato recuperato prima.

$ vi private/config/settings.yml

Ora sei pronto per eseguire il codice HTML5. Per prima cosa, spegni la versione in pacchetto del client HTML5 in modo da non eseguire due copie in parallelo.

$ sudo systemctl stop bbb-html5

Installa le dipendenze npm.

$ meteor npm install

Infine, esegui il codice HTML5.

$ npm start

Per impostazione predefinita, il client verrà eseguito in modalità development. Il caricamento nell'ambiente di produzione può essere eseguito passando il valore di NODE_ENV:

$ NODE_ENV=production npm start

Produzione

L'uso di NODE_ENV = production non è inteso per essere effettivamente utilizzato in produzione, vedere qui per ulteriori informazioni. Invece, dovresti creare l'app meteor in modo che il servizio bbb-html5 possa funzionare con essa.

Innanzitutto, assicurati di essere nella directory  bigbluebutton-html5. Se segui le istruzioni sopra e hai ubuntu come utente, puoi eseguire quanto segue:

meteor build --server-only /home/ubuntu/dev/bigbluebutton/bigbluebutton-html5/meteorbundle

Meteor costruirà la tua versione personalizzata in un .tar.gz quindi dobbiamo decomprimerlo e metterlo nella directory giusta per usarlo  bbb-html5. Esegui:

sudo tar -xzvf /home/ubuntu/dev/bigbluebutton/bigbluebutton-html5/meteorbundle/*.tar.gz -C /usr/share/meteor

Infine, avvia il client HTML5 con sudo systemctl start bbb-html5.

Ci siamo! Ricorda che questo verrà sovrascritto ogni volta che esegui l'aggiornamento, quindi potresti voler mettere in atto un meccanismo per sostituirlo, o se le tue modifiche aggiungono nuove funzionalità / risolvono un bug, considera l'upstream. Per evitare di dover disinstallare e reinstallare il pacchetto bbb-html5 per ripristinare una versione funzionante, potresti voler fare una copia della cartella originale bundle .

Pratiche di codifica HTML5

Per le convenzioni di codifica relative al codice HTML5 fare riferimento a questo documento .

/private/config

Tutte le configurazioni si trovano in /private/config/settings.yml . Se apporti modifiche alla configurazione YAML dovrai riavviare il processo meteor.

Durante Meteor.startup () il file di configurazione viene caricato ed è possibile accedervi tramite l'oggetto Meteor.settings.public.

Crea bbb-common-message

Il messaggio bbb-common è richiesto da alcuni componenti di BigBlueButton. Quindi è necessario costruirlo prima. Altrimenti, incorrerai in errori di compilazione.

cd ~/dev/bigbluebutton/bbb-common-message
./deploy.sh

Sviluppo di BBB-Web

Innanzitutto, dobbiamo aggiornare l'ultimo file bigbluebutton.properties in base alla tua configurazione. Fondamentalmente, dovrai cambiare l'URL e il valore di sicurezza. Se non conosci il tuo valore, esegui sudo bbb-conf --salt

cd ~/dev/bigbluebutton/

# Edit the file and change the values of bigbluebutton.web.serverURL and securitySalt. 
vi bigbluebutton-web/grails-app/conf/bigbluebutton.properties

Ora devi concedere al tuo account utente l'accesso per caricare le diapositive nella directory della presentazione e anche l'accesso per scrivere i file di registro.

sudo chmod -R ugo+rwx /var/bigbluebutton
sudo chmod -R ugo+rwx /var/log/bigbluebutton

Apri il file ~/.sbt/1.0/global.sbt utilizzando il tuo editor

mkdir -p ~/.sbt/1.0
vi ~/.sbt/1.0/global.sbt

Aggiungi quanto segue

resolvers += "Artima Maven Repository" at "http://repo.artima.com/releases"
updateOptions := updateOptions.value.withCachedResolution(true)

Crea bbb-common-web

cd ~/dev/bigbluebutton/bbb-common-web
./deploy.sh

Ora iniziamo a creare bbb-web

cd ~/dev/bigbluebutton/bigbluebutton-web/

Dobbiamo interrompere il servizio bbb-web

sudo service bbb-web stop

Scarica le librerie necessarie.

./build.sh

Avvia Graal e poniti in ascolto sulla porta 8090

./run.sh

o

grails -reloading -Dserver.port=8090 run-app

Se ricevi un errore Could not resolve placeholder 'apiVersion', esegui nuovamente  grails -Dserver.port=8090 run-war. L'errore è che Grails non raccoglie "bigbluebutton.properties" la prima volta.

Ora prova di nuovo se puoi partecipare alla riunione demo.

Il comando sopra eseguirà una versione di sviluppo di bbb-web, ma se vuoi distribuire il tuo bbb-web personalizzato devi creare un pacchetto di un file war.

Istruzioni per la distribuzione di bbb-web

Per prima cosa dobbiamo compilare tutto il progetto in un unico file war.

grails assemble

L' applicazione war viene generata in build/libs/bigbluebutton-0.10.0.war.

Crea una nuova directory e aprila.

mkdir exploded && cd exploded

Estrai il contenuto di war nella directory appena creata

jar -xvf ../build/libs/bigbluebutton-0.10.0.war

Quindi copia il run-prod.sh dopo aver verificato che tutte le dipendenze jar sono elencate in

cp ../run-prod.sh .

Nel passaggio successivo creeremo una copia della directory di produzione corrente per bbb-web

sudo cp -R /usr/share/bbb-web /usr/share/bbb-web-old

Quindi elimineremo tutti i file di cui abbiamo bisogno per essere copiati per la produzione

sudo rm -rf /usr/share/bbb-web/assets/ /usr/share/bbb-web/META-INF/ /usr/share/bbb-web/org/ /usr/share/bbb-web/run-prod.sh  /usr/share/bbb-web/WEB-INF/

Successivamente, copiamo i file conformi nella directory di produzione

sudo cp -R . /usr/share/bbb-web/

Assicurati che i file copiati abbiano la proprietà utente corretta.

$ sudo chown bigbluebutton:bigbluebutton /usr/share/bbb-web
$ sudo chown -R bigbluebutton:bigbluebutton /usr/share/bbb-web/assets/ /usr/share/bbb-web/META-INF/ /usr/share/bbb-web/org/ /usr/share/bbb-web/run-prod.sh /usr/share/bbb-web/WEB-INF/

E finalmente eseguiamo il servizio.

sudo service bbb-web start

Se è necessario ripristinare la produzione originale, bbb-web eseguire il comando seguente. (Non dimenticare di interrompere il servizio bbb-web prima di farlo)

sudo mv /usr/share/bbb-web /usr/share/bbb-web-dev && /usr/share/bbb-web-old /usr/share/bbb-web

Il tuo codice compilato si troverà nella /usr/share/bbb-web-devdirectory e potrai eseguire in sicurezza la produzione originale "bbb-web".

Sviluppo di Akka-Apps

È possibile eseguire manualmente l'applicazione.

cd ~/dev/bigbluebutton/akka-bbb-apps
./run.sh

Sviluppo di Akka-FSESL

È necessario creare la libreria ESL di FS

cd ~/dev/bigbluebutton/bbb-fsesl-client
./deploy.sh

Quindi puoi eseguire l'applicazione.

cd ~/dev/bigbluebutton/akka-bbb-fsesl
./run.sh

Applicazioni Flash legacy

Per istruzioni sulla creazione delle applicazioni legacy relative al client Flash e red5, vedere questo documento . Nota: il team di sviluppo principale di BigBlueButton consiglia di utilizzare il client HTML5 invece del client Flash legacy.

Localizzazione con Transifex

Usiamo Transifex per il crowdsourcing per BigBlueButton Internationalization (i18n). I passaggi seguenti non fanno parte dell'installazione tipica e sono necessari solo per aggiornare le stringhe della lingua in GitHub. Esistono due modi per estrarre i file di traduzione; utilizzando lo script transifex.sh o il client transifex.

Utilizzando transifex.sh

Lo script transifex.sh mira a rendere il recupero dei file di traduzione sui server Transifex il più semplice possibile. Per poter utilizzare lo script, è necessario fornire le proprie credenziali Transifex che dispongono dell'autorizzazione appropriata. Lo script può essere utilizzato nei seguenti modi.

$ ./transifex.sh all

L'utilizzo dell'argomento all dirà allo script di scaricare tutti i file di traduzione disponibili.

$ ./transifex.sh fr de pt-BR

Se hai bisogno solo di un insieme specifico di traduzioni, lo script può essere eseguito con le lingue richieste come argomento.

Configurazione e configurazione del client Transifex

Questo è un metodo alternativo all'utilizzo di transifex.sh ed è essenzialmente il processo manuale per il recupero dei file di traduzione dai server Transifex.

1. Installa Transifex Client

Per installare il client Transifex utilizziamo pip, un sistema di gestione dei pacchetti progettato per gestire e installare i pacchetti Python.

$ sudo apt-get install python-pip

Successivamente usiamo Pip per installare il client Transifex.

$ sudo pip install transifex-client

Il seguente comando viene utilizzato per aggiornare il client alla versione più recente.

$ pip install --upgrade transifex-client

2. Inizializzazione del progetto Transifex

Il comando tx init viene utilizzato per inizializzare un progetto. Esegui dalla directory principale dell'applicazione.

$ tx init
Creating .tx folder. . .
Transifex instance [https://www.transifex.com]:

Premi Invio (ti verranno richiesti il ​​nome utente e la password Transifex)

Creating skeleton...
Creating config file...
​Done.

Questo creerà un file di progetto Transifex nella directory corrente contenente il file di configurazione del progetto.

3. Configurazione del client Transifex

.tx / config

Il client Transifex utilizza un file di configurazione per progetto. Si trova in .tx / config della directory principale del progetto e viene generato eseguendo il comando tx init. Dovrebbe essere aggiornato con la seguente configurazione:

[main]
host = https://www.transifex.com

[bigbluebutton-html5.enjson]
file_filter = private/locales/<lang>.json
source_file = private/locales/en_US.json
source_lang = en_US
type = KEYVALUEJSON

4. Impostare un Project Remote

tx set ti permette di configurare e modificare i file di progetto Transifex sul tuo computer locale.

Il comando seguente viene utilizzato per inizializzare un progetto locale per il progetto remoto specificato dall'URL.

$ tx set --auto-remote https://www.transifex.com/projects/p/bigbluebutton-html5/resources/enjson/

Successivamente possiamo estrarre i file di lingua situati sul server Transifex.

5. Pull: scarica Transifex Translations

Per estrarre tutti i file di traduzione dal server Transifex, viene utilizzato il seguente comando.

$ tx pull -a bigbluebutton-html5.enjson

Nel caso in cui ci siano molte traduzioni, invece di estrarre tutte, possiamo specificare quali traduzioni vogliamo acquisire.

$ tx pull -r bigbluebutton-html5.enjson -l pt_BR

In alternativa, scarica semplicemente un archivio ZIP di tutte le lingue nel progetto dalla pagina del progetto Transifex e rimuovilo dall'archivio nella private/locales/directory.

Risoluzione dei problemi

Benvenuto nella pagina di Nginx

Se ottieni la pagina "Benvenuto in Nginx". Controlla se bigbluebutton è abilitato in nginx. Dovresti vedere bigbluebutton in /etc/nginx/sites-enabled.

In caso contrario, abilitalo.

sudo ln -s /etc/nginx/sites-available/bigbluebutton /etc/nginx/sites-enabled/bigbluebutton

sudo /etc/init.d/nginx restart

La pausa / riavvio della VM fornisce una data errata nel commit

Se si sta sviluppando utilizzando una VM e la si è messa in pausa e successivamente la si riavvia, l'ora sulla VM sarà errata. L'ora errata influenzerà qualsiasi commit che esegui in GitHub.

Per assicurarti che la tua VM abbia l'ora corretta, puoi installare ntp con

sudo apt-get install ntp
sudo /etc/init.d/ntp restart

e quindi eseguire le operazioni seguenti dopo aver avviato la VM da uno stato di pausa

sudo /etc/init.d/ntp restart

Quanto sopra risincronizzerà il tuo orologio.

Imposta Samba

Per configurare Samba

sudo apt-get install -y --force-yes samba

Quindi configura la tua directory condivisa modificando /etc/samba/smb.conf

; BigBlueButton: Share the development directory
[ubuntu]
   comment = BigBlueButton Development share
   path = /home/ubuntu
   browseable = yes
   read only = no
   create mask = 0755
   directory mask = 0775
   guest ok = yes
   force user = ubuntu

Vedi install-samba-server-ubuntu-16-04 per maggiori informazioni.