Anmelden

node.js

Darunter wird eine JS Laufzeitumgebeung außerhalb von Web-Browsern verstanden, welche für Linux und Windows verfügbar ist (node.exe). Mit node.js lassen sich Serveranwendungen im RT-Umfeld realisieren. Klassischer Anwendungsfall ist ein Chat. Maßgebend für node.js ist die ausschließliche Umsetzung mit Javascript (Client und Server) und die Möglichkeit der asynchronen und transparenten Kommunikation zwischen Client und Server bzw. zwischen Clients einschließlich der Übertragung und Generierung von HTML-Elementen.

node.js wird oftmals für RT-Anwendungen eingesetzt (Chat, Etherpad) oder als Signalisierungssytem für Kommunikationsanwendungen. Mit der Entsteheung von WebRTC hat sich node.js als Technologiestandard für Signalisierung etabliert. node.js und WebRTC enthalten aber keine Signalisierungsstandards.

Folgende node.js-Applikationen sind in unserer campus21 - Anwendungsplattform enthalten:

Installation von node, npm

Installation Ubuntu 14.04

sudo apt-get update
sudo apt-get install nodejs
sudo apt-get install npm

https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-an-ubuntu-14-04-server

Node wird aufgrund eines Namenskonfliktes nicht mit node sondern mit nodejs gestartet.

node.js kompilieren und installieren

https://gist.github.com/x-Code-x/2562576

sudo apt-get update && apt-get install git-core curl build-essential openssl libssl-dev
git clone https://github.com/joyent/node.git
cd node
git checkout v0.12.1
./configure --openssl-libpath=/usr/lib/ssl
make
make test # Fehler FS-Access
sudo make install
node -v
npm -v

??? curl https://npmjs.org/install.sh | sudo sh

node.js-Applikation über Kommandozeile ausführen

Ausführen eines Tutorials oder Applikation

cd /var/kms6/kurento-tutorial-node/kurento-hello-world
npm start

node.js-Applikation als Service installieren

Node.js muss zuvor installiert werden, siehe node.js und die Applikation sollte über die Kommandozeile ausführbar sein.

Service-Script erstellen

Das Service-Script /etc/init.d/psitsmike ist erforderlich, wenn psitsmike als Service ausgeführt werden soll (erfolgt damit auch automatischer Start bei Systemstart?)

Das Service-Script enthält lokale Pfade (im folgenden unterstrichen), da node.js-Applikationen keinen Standard-Installationspfad haben. Ebenfalls kann der Pfad und Name des Node.js-Runtime (in dem Fall /usr/bin/node) abweichen.

Zum Erstellen kopieren Sie folgenden Code in den VI und ändern die lokalen Pfade:

vi /etc/init.d/psitsmike

#!/bin/sh
### BEGIN INIT INFO
# Provides: psitsmike
# Required-Start: $local_fs $remote_fs $network $syslog
# Required-Stop: $local_fs $remote_fs $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts psitsmike
# Description: starts psitsmike using start-stop-daemon
### END INIT INFO
PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/node/bin"
LOGFILE="/home/node.js/psitsmike_example_2/app.log"
EXEC="/usr/bin/node /home/node.js/psitsmike_example_2/app.js"
USER="www-data"
GROUP="www-data"
DESC="psitsmike"
NAME="psitsmike"
set -e
. /lib/lsb/init-functions
start() {
echo "Starting $DESC ... "
start-stop-daemon --start --chuid "$USER:$GROUP" --background --make-pidfile --pidfile /var/run/$NAME.pid --exec $EXEC -- $LOGFILE || true
echo "done"
}
#We need this function to ensure the whole process tree will be killed
killtree() {
local _pid=$1
local _sig=${2-TERM}
for _child in $(ps -o pid --no-headers --ppid ${_pid}); do
killtree ${_child} ${_sig}
done
kill -${_sig} ${_pid}
}
stop() {
echo "Stopping $DESC ... "
while test -d /proc/$(cat /var/run/$NAME.pid); do
killtree $(cat /var/run/$NAME.pid) 15
sleep 0.5
done
rm /var/run/$NAME.pid
echo "done"
}
status() {
status_of_proc -p /var/run/$NAME.pid $NAME $NAME && exit 0 || exit $?
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status
;;
*)
echo "Usage: $NAME {start|stop|restart|status}" >&2
exit 1
;;
esac
exit 0

Das stdout-Logging funktioniert in dem obigen Beispiel unter Ubuntu offenbar nicht. Die Ausgabeumleitung funktioniert mittels eines zusätzlichen bash-Parents:

https://stackoverflow.com/questions/8251933/how-can-i-log-the-stdout-of-a-process-started-by-start-stop-daemon 

EXEC="/usr/bin/node /home/node.js/kurento/rtc-groupcall/server.js 1>>/home/node.js/kurento/rtc-groupcall/server.log"
start-stop-daemon --start --chuid "$USER:$GROUP" --background --make-pidfile --pidfile /var/run/$NAME.pid --startas /bin/bash -- -c "$EXEC" || true

Service einrichten

sudo /etc/init.d/psitsmike start
ps -elf | grep "node"
cat /var/run/psitsmike.pid
sudo /etc/init.d/psitsmike stop
sudo /etc/init.d/psitsmike restart
sudo /etc/init.d/psitsmike status

SSL aktivieren

Innerhalb einer SSL-Website muss auch der node.js-Server über SSL kontaktiert werden. Dazu müssen eine Schlüssel- und Zertifikatdatei auf dem Server vorliegen, welche durch Selbstzertifizierung erstellt werden oder es können die Dateien der SSL-Website vom externen Zertifizierer verwendet werden.

Außerdem muss die node.js-Applikation nach dem Checkout geändert werden, was in der Regel kein Problem ist.

http://stackoverflow.com/questions/5998694/how-to-create-an-https-server-in-node-js

Werden zudem Ressourcen vom node-Webserver geladen muss das Zwischenzertifikat bereitgestellt werden. Ohne Zwischenzertifikat wird das Serverzertifikat bei einigen Browsern nicht anerkannt. Eine Lösung ist, das Zwischenzertifikat in die Zertifikatdatei des einzufügen (hat bei Firefox funktioniert):

http://stackoverflow.com/questions/32777760/how-to-fix-missing-an-intermediate-chain-certificate-in-nodejs

Werden dennoch Zertifikatprobleme sichtbar:

   
Top

Wir arbeiten mit Software von http://www.campus21.de.

Verantwortlich für angezeigte Daten ist der Webdomain-Eigentümer laut Impressum.

Suche