wiki:hosting/tutorial

Version 14 (modified by jw, 5 years ago) (diff)

--

Wie hoste ich meine NodeJS-Anwendung auf dem HostLab?

Du hostest deine Anwendung, indem du ein Repository in unserem GitLab erstellst, und diese zum hosten im HostLab auswählst.

Wie logge ich mich beim HostLab / GitLab ein?

Das GitLab erreichst du hier und das HostLab hier. Dort kannst du dich mit deinen Daten der Hochschule einloggen.

Dein Login: <deine Matrikelnummer>

Wie installiere ich Git?

Wenn Du unter Windows arbeitest, dann musst Du dir hier die aktuelle Version von Git herunterladen.

Unter Linux oder macOS solltest Du ohnehin das Terminal benutzen und Git vorfinden.

Wie installiere ich Node.js?

Lade dir hier die aktuelle Version von Node.js herunter, und installier es.

Wie erstelle ich ein Repository?

Wenn du im GitLab eingeloggt bist, kannst du hier ein neues Repository erstellen. Dort kannst du entweder ein komplett leeres Repository erstellen, oder ein bereits vorgefertigtes Template auswählen. Klicke auf "Create Project" um dein Repository zu erstellen.

Wie "verbinde" ich mich mit meinem Repository?

Öffne das Terminal und gib folgende Befehle ein:

git config --global user.name "<dein Nachname>, <dein Vorname>"
git config --global user.email "<Vorname>.<Nachname>@hsrw.org"

Bewege dich mit dem Befehl cd in ein Verzeichnis, in dem ein Ordner mit dem Namen deines Repository erstellt werden soll z.B.:

cd C:\GitRepositories\

Jetzt kannst du mit dem Befehl git clone dein Repository klonen, und es herunterladen. Es wird an dem Pfad wo du dich befindest ein Ordner erstellt, der den Namen deines Repositorys trägt. Die URL zu deinem Repository findest du auf der Seite des Repositories.

git clone https://git.hsrw.eu/tutorial.user/blank_tutorial.git 
bzw.
git clone https://git.hsrw.eu/<dein Username>/<Name des Repository>.git

Wenn du nach deinen Login-Daten gefragt wirst, gib diese ein.

Wie lade ich Dateien in mein Repository?

Zuerst solltest du eine .gitignore anlegen. Erstelle im Wurzelverzeichnis deines Repositorys eine Datei mit dem Namen .gitignore und schreibe mindestens folgendens hinein:

node_modules/

Es empfiehlt sich ebenfalls auf https://www.gitignore.io/ nachzuschlagen was hier eingetragen werden sollte, wenn man es selbst noch nicht weiß.

Um Dateien ins Repository einzureichen, kannst Du mit git status überprüfen was sich seit der letzten Einreichung geändert hat und mit git add <Datei/Ordner> für die nächste Einreichung vormerken. Dateien, die mit Mustern in deiner .gitignore übereinstimmen, werden ignoriert. Mit git commit -m <Kommentar zu deiner Einreichung> machst Du eine neue Einreichung der vorgemerkten Änderungen. Mit git push -u origin <Branch> kannst Du deine bisherigen Einreichungen auf den Git-Server laden.

Was ist ein Branch?

Ein Branch ist eine Verzweigung in deinem Repository. Du kannst es wie eine Kopie deines ursprünglichen Projektes sehen, an dem unabhängig von den anderen Branches gearbeitet werden kann.

Üblicherweise gibt es einen Master-Branch, einen Development-Branch und viele Feature-Branches. In einem Feature-Branch wird an einer neuen Funktion für das Projekt gearbeitet und wenn alle Änderungen ausgereift und getestet wurden, dann wird der Feature-Branch mit dem Development-Branch zusammengeführt. Daraufhin wird das Zusammenspiel aller Änderungen auf dem Development-Branch auf einer frischen Laufumgebung intensiv getestet. Sobald ein Bug entdeckt wird, wird ein entsprechend nummerierter Bug-Branch vom Development-Branch abgespalten und in diesem Branch korriegert, getestet und wieder mit dem Development-Branch zusammengeführt.

Dies erfolgt solange bis keine Fehler mehr bekannt sind und eine neue Veröffentlichung der Software erfolgen kann. Der Development-Branch wird auf den Master-Branch zusammengeführt und auf entsprechende Laufumgebungen verteilt.

Der Master-Branch soll also zu jeder Zeit eine lauffähige Version der Software beinhalten!

Anfang mit einem leeren Repository

Wenn du dich für das leere Repository entschieden hast, musst du zuerst mit npm init ein Node-Package anlegen, dass du dann in das Repository hochlädst. Als Beispiel schreiben wir eine simple NodeJS-Anwendung, die auf eingehende Requests mit "Hello World!" antwortet:

// tutorial.js 

// HTTP Modul einbinden
var http = require('http');

// HTTP Server erzeugen
var server = http.createServer(serve);

// Port aus der Umgebung des HostLabs holen.
const port = process.env.PORT;

// Server an Port binden
server.listen(port);

// Funktion des HTTP-Servers
// req: Anfrage vom Client (Request)
// res: Antwort des Servers (Response)
function serve(req, res) {
    res.writeHead(200, {"Content-Type": "text/plain"});
    res.write("Hello World!");
    res.end();
}

Jetzt musst du noch dein Script als Einstiegspunkt in der package.json angeben. Das machst du, indem du im "scripts"-Block die Zeile "start": "node <Pfad zu deinem Einstiegs-Script>" hinzufügst. Die fertige package.json könnte dann so aussehen:

{
  "name": "tutorial-project",
  "version": "0.0.1",
  "description": "Some tutorial project in development",
  "main": "tutorial.js",
  "scripts": {
    "start": "node tutorial.js"
  },
  "repository": {
    "type": "git",
    "url": "https://git.hsrw.eu/test.user/tutorial-project.git"
  },
  "author": "Test User <test.user@example.org>",
  "license": "ISC"
}

Commite und Pushe den Code in dein Repository.

git add .
git commit -m "Add tutorial.js and package.json"
git push -u origin master

Wie Hoste ich meine Anwendung im HostLab?

Logge dich im HostLab ein, und klicke in der Sidebar auf Node.js. Hier siehst du deine laufenden Anwendungen, falls du welche hast. Um eine neue Anwendung zu hosten, klicke auf den New-Button. Nun kannst du das Repository auswählen, welches du hosten möchtest. Bei "Select a Run-Script" sollte dein Start-Script ausgewählt sein. Bei "Mount Path" kannst du angeben wie deine URL aussehen soll. Wenn du jetzt auf "Create Application" klickst, wird deine Anwendung gehostet. Du kannst sie unter cloudhost.hsrw.eu/hsrw.org/<Vorname>.<Nachname>/<dein vergebener Mount-Path> erreichen.

Anbindung einer MongoDB

Installiere das MongoDB-Paket mit npm install mongodb. Als Beispiel verändern wir tutorial.js so, dass bei eingehenden Requests eine Verbindung mit einer MongoDB aufgebaut wird:

// HTTP Modul einbinden
var http = require('http');

// MongoDB Modul einbinden
var mongoClient = require('mongodb').MongoClient;

// Datenbank Connection-String mithilfe der Umgebungsvariable zusammenbauen.
var conString = `mongodb://${process.env.MONGO_HOST}/database-name`;

// URL Modul einbinden
var url = require('url');

// HTTP Server erzeugen
var server = http.createServer(serve);

// Port aus der Umgebung des HostLabs holen.
const port = process.env.PORT;

// Server an Port binden
server.listen(port);

// Funktion des HTTP-Servers
// req: Anfrage vom Client (Request)
// res: Antwort des Servers (Response)
function serve(req, res) {
    mongoClient.connect(conString, function(error, db) {
        res.writeHead(200, {"Content-Type": "text/plain"});
        if (error){
            console.log("Error while connecting to mongodb:\n" + error);
            res.write("Connection failed. :(");
        }
        else{
            res.write("Connected to mongodb!");
            db.close();
        }
        res.end();
    });
}

Wenn du deine Anwendung jetzt zum Hosten im HostLab auswählst, setze das Häkchen bei "Attach MongoDB". Nun kannst du unter dem Punkt "MongoDB" in der Sidebar deine Datenbanken verwalten.

Wie installiere ich Pakete?

Navigiere mit deinem Terminal in dein Projektverzeichnis. Pakete kannst du mit dem befehl npm install <Paketname> --save installieren, und zu den Dependencies hinzufügen. Beispielsweise kannst du express.js mit dem Befehl npm install express --save installieren. Pakete kannst du in deinem Code mit require('<Paketname>') einbinden:

// Express einbinden
var express = require('express');
var app = express();

// Port aus der Umgebung holen
var port = process.env.PORT;

app.get('/', function (req, res) {
  res.send('Hello World!');
});

app.listen(port, function () {
  console.log('Example app listening on port ' + port + '!');
});

Wie lösche ich eine gehostete Anwendung?

Gehe im HostLab auf den Reiter Node.js, wähle die App aus die du löschen willst, und klicke unten bei "Danger Zone" auf den "Delete Application"-Button.

Wie lösche ich ein Repository?

Öffne die Seite deines Repositorys im GitLab. Wähle in der Sidebar "Settings". Klappe "Advanced Settings" aus. Dort befindet sich die Option "Remove Project".

Irgendwie funktioniert bei mir nichts, wo bekomme ich Hilfe?

Hier sind ein paar hilfreiche Links, die dir eventuell helfen könnten: