wiki:hosting/tutorial

Version 4 (modified by mariuszander, 6 years ago) (diff)

Abschnitt zum hinzufügen von Paketen hinzugefügt.

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>@students.hsrw

Wie installiere ich Git?

Lade dir hier die aktuelle Version von Git runter, und installier es. Der Installer sollte alle nötigen Libraries mit installieren. In diesem Tutorial werden wir die Konsole benutzen, bei Bedarf gibt es auch GUI's für Git.

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. Setze dein Repository auf Public und 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 folgendes hinein:

node_modules/
jspm_packages/
.idea/

Um Dateien zum Hochladen zu markieren, musst du dich in dem Ordner des Repositorys befinden und git add <Datei> eingeben. Mit git add . gibst du das gesammte Verzeichnis in dem du dich befindest zum Hochladen frei. Dateien die auf die Patterns in deiner .gitignore zutreffen werden ignoriert. Mit git commit -m <Kommentar zu deinem Commit> legst du einen Commit an, und mit git push -u origin <Branch> lädst du alle deine Commits in das angegebene Branch deines Repositorys hoch.

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 und Development-Branches. In den Development-Branches wird an dem Projekt gearbeitet, und wenn alle Änderungen ausgereift, und zur Veröffentlichung bereit sind, werden die Development-Branches mit dem Master-Branch zusammengeführt, und der Master-Branch auf den Entwicklungsstand der Development-Branches gebracht. Du versuchst deinen Master-Branch so sauber wie möglich zu halten.

Anfang mit einem leeren Repository

Wenn du dich für das leere Repository entschieden hast, musst du zuerst mit npm initein 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": "1.0.0",
  "description": "",
  "main": "tutorial.js",
  "scripts": {
    "start": "node ./tutorial.js"
  },
  "repository": {
    "type": "git",
    "url": "https://git.hsrw.eu/test.user/tutorial_project.git"
  },
  "author": "",
  "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 aus der Umgebung des HostLabs holen.
var conString = 'mongodb://' + process.env.MONGO + '/tutorialdb'
// 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: \r\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.

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: