|
|
# Generell
|
|
|
|
|
|
Es muss sowohl das Backend als auch das Frontend installiert werden
|
|
|
|
|
|
1. Erstelle einen Ordner mit dem Namen **arsnova-click**, schreibe dafür in die Kommandozeile **`mkdir arsnova-click`** und navigiere in den Ordner mit **`cd arsnova-click`**
|
|
|
|
|
|
## Voraussetzungen
|
|
|
1. Ubuntu 14.04+
|
|
|
2. Docker
|
|
|
3. Docker-compose
|
|
|
4. Google Chrome
|
|
|
5. typescript version 3.7.5 (**`npm install -g typescript@3.7.5`**)
|
|
|
6. node version 12.x (**`nvm use --lts 12.16.3`**)
|
|
|
|
|
|
|
|
|
## Backend
|
|
|
|
|
|
1. Klone das Projekt von Git mittels **`git clone https://git.thm.de/arsnova/arsnova-click-v2-backend`**
|
|
|
|
|
|
2. Navigiere in das Project mit **`cd arsnova-click-v2-backend`**
|
|
|
|
|
|
3. Nun musst du 7 Dateien erstellen und mit **npm** alle Abhängigkeiten installieren, schreibe dafür **`touch arsnova-click.env mongo.env init-mongo.js rabbitmq.env arsnova-click-staging.env arsnova-click-beta.env arsnova-click-export.env && npm install`** in die Kommandozeile
|
|
|
|
|
|
4. Erstelle nun 2 Ordner **`mkdir rabbitmq mongodb`** und gebe dem RabbitMQ Ordner die Berechtigungen zum Lesen, Schreiben und Ausführen mit **`chmod 777 rabbitmq`**
|
|
|
|
|
|
5. Kopiere:
|
|
|
**`export MONGODB_SERVICE_NAME=localhost`**
|
|
|
**`export MONGODB_DATABASE=arsnova-click-v2`**
|
|
|
**`export MONGODB_USER=root`**
|
|
|
**`export MONGODB_PASSWORD=pass123`**
|
|
|
**`export MONGODB_AUTH_SOURCE=arsnova-click-v2`**
|
|
|
**`export LOG_LEVEL=debug`**
|
|
|
**`export NODE_ENV=development`**
|
|
|
**`export AMQP_HOSTNAME=localhost`**
|
|
|
**`export AMQP_USER=myUser`**
|
|
|
**`export AMQP_PASSWORD=myPassword`**
|
|
|
in die **arsnova-click-export.env** Datei
|
|
|
Deine **arsnova-click-export.env** Datei sollte so aussehen:
|
|
|
![image](uploads/e6b3ca512c4ef41f13567ca9fd9ed004/image.png)
|
|
|
|
|
|
6. Kopiere:
|
|
|
**`MONGO_INITDB_DATABASE=arsnova-click-v2`**
|
|
|
**`MONGO_INITDB_ROOT_USERNAME=user`**
|
|
|
**`MONGO_INITDB_ROOT_PASSWORD=pass123`**
|
|
|
in die **mongo.env** Datei
|
|
|
Deine **mongo.env** Datei sollte so aussehen:
|
|
|
![image](uploads/81e0fc421711b6aac510ed8f2eee3ac1/image.png)
|
|
|
|
|
|
7. Kopiere:
|
|
|
**`db.createUser(`**
|
|
|
**` {`**
|
|
|
**` user: "root",`**
|
|
|
**` pwd: "pass123",`**
|
|
|
**` roles: [`**
|
|
|
**` {`**
|
|
|
**` role: "readWrite",`**
|
|
|
**` db: "arsnova-click-v2"`**
|
|
|
**` }`**
|
|
|
**` ]`**
|
|
|
**` }`**
|
|
|
**`);`**
|
|
|
in die **init-mongo.js** Datei
|
|
|
Deine **init-mongo.js** Datei sollte so aussehen:
|
|
|
![image](uploads/402e6a09fd35ffa29e6f7512a307f77d/image.png)
|
|
|
|
|
|
8. Kopiere:
|
|
|
**`MONGODB_SERVICE_NAME=localhost`**
|
|
|
**`MONGODB_DATABASE=arsnova-click-v2`**
|
|
|
**`MONGODB_USER=root`**
|
|
|
**`MONGODB_PASSWORD=pass123`**
|
|
|
**`MONGODB_AUTH_SOURCE=arsnova-click-v2`**
|
|
|
**`LOG_LEVEL=debug`**
|
|
|
**`NODE_ENV=development`**
|
|
|
**`AMQP_HOSTNAME=localhost`**
|
|
|
**`AMQP_USER=myUser`**
|
|
|
**`AMQP_PASSWORD=myPassword`**
|
|
|
in die **arsnova-click.env** Datei
|
|
|
Deine **arsnova-click.env** Datei sollte so aussehen:
|
|
|
![image](uploads/43641996f484ea95a50340ba3c6087f4/image.png)
|
|
|
|
|
|
9. Gib **`source arsnova-click-export.env`** ein um die .env Datei zu übergeben
|
|
|
|
|
|
10. Starte nun die Docker-Container mit **`docker-compose up -d mongodb rabbitmq`**
|
|
|
|
|
|
11. Zur Überprüfung gib **`docker ps`** ein, du solltest nun deine Container sehen:
|
|
|
![image](uploads/60117282cc9505e55e14d1b9e0a54fec/image.png)
|
|
|
|
|
|
12. Nun müssen wir ein Nutzer für RabbitMQ erstellen. Öffne zuerst http://localhost:15674/ direkt danach http://localhost:15672/. Du solltest eine Einlogmaske auffinden:
|
|
|
![image](uploads/21d175efd33d560211249d568606d753/image.png)
|
|
|
|
|
|
13. Logge dich ein mit Username: **`user`** und Passwort: **`bitnami`**
|
|
|
|
|
|
14. Klicke dann auf den Tab: **Admin**
|
|
|
|
|
|
15. Gib unter dem Punkt **Add a user** ein: **`myUser`** und das Passwort: **`myPassword`**, klicke dann auf **`Admin`** bei **set**, schließe die Erstellung eines Nutzers mit **Add user** ab
|
|
|
![image](uploads/84e5cf52504998b779e254688774c2c5/image.png)
|
|
|
|
|
|
16. Klicke auf den neu erstellten Nutzer **myUser** in dem Menü, welches alle Nutzer listet:
|
|
|
![image](uploads/3f042bc8c551139e6aaa779d23130f4c/image.png)
|
|
|
|
|
|
17. Und drück **Set permission**:
|
|
|
![image](uploads/5d9d3830afce4642a76f1fba31d77a1d/image.png)
|
|
|
|
|
|
18. Transpilier den Typescript code zu Javascript indem du **`npm run build:DEV`** eingibst
|
|
|
|
|
|
19. Öffne eine neue Kommandozeile in dem gleichen Verzeichnis und gib **`cd dist`** ein um in den gerade erstellten Ordner zu navigieren, mit **`node main.js`** kannst du den Backend Server starten
|
|
|
|
|
|
20. Du solltest ein ähnliches Bild sehen wenn du http://localhost:3010/statistics in deinem Browser öffnest:
|
|
|
![image](uploads/eac43ed44eee5c5526e38e10f69159c0/image.png)
|
|
|
Super!
|
|
|
|
|
|
21. Bevor du nun anfängst den Code zu verändern, gib **`git checkout staging`** um auf dem **staging** branch zu arbeiten
|
|
|
|
|
|
22. Wenn du dennoch auf Probleme stößt, lese die Rückmeldungen beim ausführen von **`node main.js`** und **`npm run test`**, einige der häufigsten Fehler habe ich unten bei **Fehlerbehebung** gelistet
|
|
|
|
|
|
## Frontend
|
|
|
|
|
|
1. Navigiere zurück in den **arsnova-click** Ordner, den wir zu Beginn erstellt haben
|
|
|
|
|
|
2. Klone das Projekt von Git indem du **`git clone https://git.thm.de/arsnova/arsnova-click-v2-frontend`** eingibst
|
|
|
|
|
|
3. Navigiere in das Project mit **`cd arsnova-click-v2-frontend`**
|
|
|
|
|
|
4. Öffne die **environment.ts** Datei im Ordner **src/environments** und füge bei user: **`myUser`** ein und bei password: **`myPassword`**:
|
|
|
![image](uploads/194c7dd19ac44fd48b3fe534a1ef64ee/image.png)
|
|
|
|
|
|
5. Installiere nun alle Abhängigkeiten mit **npm*, schreibe dafür **`npm install`** in die Kommandozeile und ruhe dich ein wenig aus, während dein PC arbeitet :)
|
|
|
|
|
|
6. Führe das Programm mittels **`npm run dev:ssr`** aus
|
|
|
|
|
|
7. Öffne http://localhost:4200/ im Browser um es dir anzugucken
|
|
|
|
|
|
8. Teste das Frontend indem du **`npm test`** in die Kommandozeile eingibst
|
|
|
|
|
|
## Fehlerbehebung
|
|
|
|
|
|
1. Wenn du auf den **`MongooseServerSelectionError: Authentication failed`** Error stößt, gehe sicher das du alle Container runter gefahren hast, überprüfe dies mit **`docker ps`**
|
|
|
|
|
|
2. Um die Docker-Container vollständig zu stoppen, verwende **`docker rm -f arsnova-click-backend-rabbitmq arsnova-click-backend-mongodb`**
|
|
|
|
|
|
3. Um Protokolle von den Docker-Containern zu erhalten, verwende entweder **`docker logs -f arsnova-click-backend-rabbitmq`** oder **`docker logs -f arsnova-click-backend-mongodb`**
|
|
|
|
|
|
4. Um Fehler in der Mongodb-Datenbank im Docker zu beheben, verwende **`docker exec -it docker logs -f arsnova-click-backend-mongodb`** und gebe dann **`mongo`** ein. Jetzt bist du in der Mongo-Shell innerhalb des Docker-Containers. Tippe **`use arsnova-click-v2`** ein und authentifiziere den root Benutzer mit **`db.auth ("root", "pass123")`**
|
|
|
|
|
|
5. Wenn du den Error **`403: (ACCESS-REFUSED)`** bekommst, wiederhole die Schritte 16. und 17. vom Backend.
|
|
|
|
|
|
6. Wen du während **`npm install`** auf ein Fehler stößt, lösche dein **node_modules** Ordner und deine **package-lock.json** Datei
|
|
|
|
|
|
7. Falls bei **npm run dev:ssr** ein **linting** Fehler kommt:
|
|
|
![image](uploads/4b01fdb3cb3696c122ba287be48f6e0f/image.png)
|
|
|
editiere deine **translation.factory.ts** Datei im **src/app/lib** Ordner und füge **`as unknown`** hinzu:
|
|
|
![image](uploads/11b2cf23c07a7e23feb94ad1c969d03a/image.png)
|
|
|
|
|
|
|
|
|
# Bei Anmerkungen oder Bugs sendet mir eine Email: **philipp.sautner@mni.thm.de** |
|
|
\ No newline at end of file |
|
|
[Frontend](https://github.com/thm-projects/arsnova.click-v2/blob/master/documentation/Frontend-Installationguide.md)
|
|
|
[Backend](https://github.com/thm-projects/arsnova.click-v2/blob/master/documentation/Backend-Installationguide.md) |
|
|
\ No newline at end of file |