[gelöst] Zweite Instanz auf Pi, kein Web Zugriff bzw Absturz der ersten Instanz

Begonnen von Amenophis86, 28 Februar 2016, 16:53:35

Vorheriges Thema - Nächstes Thema

Amenophis86

Ich habe auf mein RPI2 (Jessi) eine zweite Instanz angelegt, wie hier beschrieben: http://forum.fhem.de/index.php/topic,22469.msg163098.html#msg163098

Habe die neue cfg komplett leer gemacht, den Port vom User WEB auf 8093 gelegt und den Telnet Port auf 7073.

Dann habe ich die /etc/init.d/fhem kopiert, den Pfad auf /opt/fhem2 angepasst und die Datei fhem2 genannt.

Jetzt kann ich mit sudo /etc/init.d/fhem start die original Version starten und mit sudo /etc/init.d/fhem2 die neue Version starten. Allerdings blockiere ich immer die bereits laufenden Instanz, wenn ich die zweite Starten will und umgekehrt. Wo liegt der Fehler, welchen ich aktuell noch nicht sehe?
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

rudolfkoenig

In der default Konfig gibt es 4 Ports: 3x FHEMWEB + 1x telnet.
Diese muss man alle umstellen oder loeschen.

Amenophis86

was genau meinst du mit der default Konfig? Ist das eine weitere Datei, welche ich bearbeiten muss??

Die fhem.cfg vermutlich nicht, denn dort habe ich ja alles gelöscht, dass diese nur noch wie folgt aussieht:


attr global userattr DbLogExclude DbLogInclude cmdIcon devStateIcon devStateStyle icon sortby webCmd widgetOverride
attr global archivedir ./log-alt
attr global autoload_undefined_devices 1
attr global latitude 50.141
attr global logfile ./log/fhem-%Y-%m.log
attr global longitude 8.682
attr global modpath .
attr global motd none
attr global nrarchive 2
attr global restoreDirs 0
attr global sendStatistics onUpdate
attr global statefile ./log/fhem.save
attr global uniqueID ./FHEM/FhemUtils/uniqueID
attr global updateInBackground 1
attr global verbose 3

define telnetPort telnet 7073 global

define WEB FHEMWEB 8093 global
attr WEB JavaScripts codemirror/fhem_codemirror.js
attr WEB codemirrorParam { "lineWrapping":true }
attr WEB editConfig 1
attr WEB iconPath $styleSheetPrefix:eigene:default:fhemSVG:openautomation
attr WEB longpoll 1
attr WEB menuEntries restart,cmd=shutdown+restart,update,cmd=update,updatecheck,cmd=update+check,reloadMyUtils,cmd=reload+99_myUtils.pm
attr WEB nameDisplay $DEVICE
attr WEB sortRooms Bad GaesteWC Kueche Wohnzimmer Schlafzimmer Wohnung Kamera Unsorted S_Schlafzimmer S_Wohnraum S_Zentrale Everything
attr WEB stylesheetPrefix dark

# Fake FileLog entry, to access the fhem log from FHEMWEB
define Logfile FileLog ./log/fhem-%Y-%m.log fakelog

define autocreate autocreate
attr autocreate autosave 1
attr autocreate filelog ./log/%NAME-%Y.log

define eventTypes eventTypes ./log/eventTypes.txt
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

rudolfkoenig

Ich meinte die mit fhem.tar.gz/fhem.deb ausgelieferte Version der Konfiguration.
Ist bei dir wohl nicht der Fall.

Amenophis86

Habe festgestellt, dass ich, wenn ich mittels

sudo perl fhem.pl fhem.cfg

in den jeweiligen Ordnern starte, dass es funktioniert. Nur, wenn ich beide mittels "/etc/init.d/fhem start" bzw "/etc/init.d/fhem2 start" starte, es zu dem Problem kommt.


Edit: Ich installiere es ja nicht neu, habe quasi einfach die alte Instanz inkl. der Rechte kopiert und bereinigt. Aber vll ist es keine schlechte Idee, die tar zu installieren und vorher die Ports und das Verzeichnis zu ändern. Vll mache ich das nochmal.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Amenophis86

Kann es sein, dass ich irgendwo den zweiten Prozess für den PI umbenennen muss? Ich glaube, dass das Problem ist, dass er auf den laufenden Prozess zugreift und nicht versteht, dass es einen neuen geben soll, wenn ich es mittels /etc/init.d/fhem2 starte
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Lorenz

Das habe ich bei mir auch so gemacht. Allerdings muss in /etc/init.d/fhem2 der Port auch auf 7073 umgestellt werden.
Sieht dann bei mir so aus:#!/bin/sh
# description: Start or stop the fhem server
# Added by Alex Peuchert

### BEGIN INIT INFO
# Provides:             fhem2
# Required-Start:       $local_fs $remote_fs
# Required-Stop:        $local_fs $remote_fs
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    FHEM server 2.Instanz
### END INIT INFO

set -e
cd /opt/fhem2
port=7073

case "$1" in
'start')
        sleep 1
        echo "Starting fhem2..."
        perl fhem.pl fhem.cfg
        RETVAL=$?
        ;;
'stop')
        echo "Stopping fhem2..."
        perl fhem.pl $port "shutdown"
        RETVAL=$?
        ;;
'status')
        cnt=`ps -ef | grep "fhem.pl" | grep -v grep | wc -l`
        if [ "$cnt" -eq "0" ] ; then
                echo "fhem2 is not running"
        else
                echo "fhem2 is running"
        fi
        ;;
*)
        echo "Usage: $0 { start | stop | status }"
        RETVAL=1
        ;;
esac
exit $RETVAL


Das läuft seit langem stabil und gut.

LG
. . . . . .
Fhem auf NUC7i3BNH, Raspberry Pi B und B+, Raspberry Pi 2 B, Peripherie: FB7490, 1-Wire, Homematic, FS20, Lampen, Briefkasten, Klingel, Sonos, GardenaSmart, Unifi, Gaszähler an GPIO, Stromzähler EFR SGM-C4, Heizung Buderus GBH 172, Alarmanlage EMA und BMA von Bosch

Lorenz

Noch etwas: Ich habe gerade gesehen, dass ich aus irgendeinem Grund noch ein sleep 1 beim Start der 2. Instanz eingebaut hatte. Aber da das schon so lange her ist, bekomme ich den Hintergrund nicht mehr auf die Reihe.

LG
. . . . . .
Fhem auf NUC7i3BNH, Raspberry Pi B und B+, Raspberry Pi 2 B, Peripherie: FB7490, 1-Wire, Homematic, FS20, Lampen, Briefkasten, Klingel, Sonos, GardenaSmart, Unifi, Gaszähler an GPIO, Stromzähler EFR SGM-C4, Heizung Buderus GBH 172, Alarmanlage EMA und BMA von Bosch

Amenophis86

Das habe ich auch gemacht.

Ich habe jetzt folgendes festgestellt:

Wenn ich mit der Kommandozeile in den Ordner gehe und mittels "sudo perl fhem.pl fhem.cfg" in beiden Ordnern starte, dann klappt alles. Aber, wenn ich mittels "sudo /etc/init.d/fhem start" oder "sudo etc/init.d/fhem2 start" starte, dann greift er immer auf den gleichen Prozess zu. Er erkennt nicht, dass hier zwei verschiedene Prozesse gestartet werden sollen. Deswegen ergibt die Abfrage nach dem Status auch immer, dass beide laufen, weil auch die Status Abfrage zum gleichen Prozess führt.

Erkannt habe ich es, weil ich mir mittels top die Prozesse anzeigen lasse und sehe, dass nur ein fhem läuft im Gegensatz dazu, wenn ich mittels "sudo perl ..." starte, zwei Prozesse starten.

Ich wüßte allerdings nicht, wo ich noch einstellen soll, dass er zwei verschiedene Prozesse starten soll. Hier mal meine Dateien:

/etc/init.d/fhem:

#!/bin/sh
# description: Start or stop the fhem server
# Added by Alex Peuchert

### BEGIN INIT INFO
# Provides:             fhem.pl
# Required-Start:       $local_fs $remote_fs
# Required-Stop:        $local_fs $remote_fs
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    FHEM server
### END INIT INFO

set -e
cd /opt/fhem
port=7072

if test "$2" != "noaptmark"; then
  apt-mark hold fhem > /dev/null
fi

case "$1" in
'start')

        echo "Starting fhem..."

# if you need to start hmland for use with
# Homematic, please start the hmland daemon
# like this (please use correct path and port,
# depending on your installation!)
#
#       /opt/hmcfgusb/hmland -d -p 1234 -r 0
#

        perl fhem.pl fhem.cfg

# if you want to use configDB for configuration,
# use this command to start fhem:
#
#       perl fhem.pl configDB
#
# and remove/comment the above line including fhem.cfg

        RETVAL=$?
        ;;
'stop')
        echo "Stopping fhem..."

# if you want to stop hmland during fhem stop:
#       pkill hmland

        pkill -U fhem perl
        RETVAL=$?
        ;;
'status')
        cnt=`ps -ef | grep "fhem.pl" | grep -v grep | wc -l`
        if [ "$cnt" -eq "0" ] ; then
                echo "fhem is not running"
        else
                echo "fhem is running"
        fi
        ;;
*)
        echo "Usage: $0 { start | stop | status }"
        RETVAL=1
        ;;
esac
exit $RETVAL



Zweite Instanz (Hatte zum Testen alles mal in fhem-zwei umbenannt):

#!/bin/sh
# description: Start or stop the fhem server
# Added by Alex Peuchert

### BEGIN INIT INFO
# Provides:             fhem.pl
# Required-Start:       $local_fs $remote_fs
# Required-Stop:        $local_fs $remote_fs
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    FHEM server
### END INIT INFO

set -e
cd /opt/fhem-zwei
port=7073

if test "$2" != "noaptmark"; then
  apt-mark hold fhem > /dev/null
fi

case "$1" in
'start')

        echo "Starting fhem..."

# if you need to start hmland for use with
# Homematic, please start the hmland daemon
# like this (please use correct path and port,
# depending on your installation!)
#
#       /opt/hmcfgusb/hmland -d -p 1234 -r 0
#

        perl fhem.pl fhem.cfg

# if you want to use configDB for configuration,
# use this command to start fhem:
#
#       perl fhem.pl configDB
#
# and remove/comment the above line including fhem.cfg

        RETVAL=$?
        ;;
'stop')
        echo "Stopping fhem..."

# if you want to stop hmland during fhem stop:
#       pkill hmland

        pkill -U fhem perl
        RETVAL=$?
        ;;
'status')
        cnt=`ps -ef | grep "fhem.pl" | grep -v grep | wc -l`
        if [ "$cnt" -eq "0" ] ; then
                echo "fhem is not running"
        else
                echo "fhem is running"
        fi
        ;;
*)
        echo "Usage: $0 { start | stop | status }"
        RETVAL=1
        ;;
esac
exit $RETVAL


Ich hatte zum Testen auch mal die Zeile
pkill -U fhem perl
auf fhem-zwei geändert, aber es bleibt beim gleichen.


@Lorenz: Hattest du die zweite Instanz einfach aus einer Kopie erstellt, oder komplett neu installiert? Vielleicht muss ich das machen, aber ich habe noch nicht herausgefunden, wie ich die deb Datei bearbeiten kann, dass er ein anderes Verzeichnis nimmt.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Lorenz

Als fauler Mensch hatte ich einfach eine Kopie gemacht :-) Das ist sicher.

LG
. . . . . .
Fhem auf NUC7i3BNH, Raspberry Pi B und B+, Raspberry Pi 2 B, Peripherie: FB7490, 1-Wire, Homematic, FS20, Lampen, Briefkasten, Klingel, Sonos, GardenaSmart, Unifi, Gaszähler an GPIO, Stromzähler EFR SGM-C4, Heizung Buderus GBH 172, Alarmanlage EMA und BMA von Bosch

Amenophis86

Ich auch :D Hatte sogar FHEM extra dafür gestoppt, dass es keine Probleme gibt.

Ich checke einfach nicht, warum sie auf die gleiche PID beim Starten über /etc/... zugreifen. Kenne mich aber auch zuwenig mit der Materie aus um zu wissen, wo ich suchen müsste.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Lorenz

Setze in deinem 2 Start-Script in Zeile 6 mal fhem2, oder probier es mal mit meinem Script. Mehr fällt mir dazu im Moment auch nicht ein, da ich auch sonst keinen Unterschied sehe. Bis auf Sleep 1 ...

LG
. . . . . .
Fhem auf NUC7i3BNH, Raspberry Pi B und B+, Raspberry Pi 2 B, Peripherie: FB7490, 1-Wire, Homematic, FS20, Lampen, Briefkasten, Klingel, Sonos, GardenaSmart, Unifi, Gaszähler an GPIO, Stromzähler EFR SGM-C4, Heizung Buderus GBH 172, Alarmanlage EMA und BMA von Bosch

Amenophis86

Ich weiß nicht, welche der Zeilen, die es mehr gab als bei dir schuld war, aber ich habe es. Ich habe jetzt alles raus geworfen und mein Script deinem angepasst. Ich kann nun mittels /etc/... beide starten und beim Start des Pi werden nun auch beide automatisch gestartet.

Danke für die Hilfe :)
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Lorenz

. . . . . .
Fhem auf NUC7i3BNH, Raspberry Pi B und B+, Raspberry Pi 2 B, Peripherie: FB7490, 1-Wire, Homematic, FS20, Lampen, Briefkasten, Klingel, Sonos, GardenaSmart, Unifi, Gaszähler an GPIO, Stromzähler EFR SGM-C4, Heizung Buderus GBH 172, Alarmanlage EMA und BMA von Bosch