Skip to content

NodeBB - Zwei Instanzen

Angeheftet NodeBB
  • Um Redis mit zwei unabhängigen Instanzen laufen zu lassen, habe ich diesen Beitrag erstellt. Damit haben wir jetzt zwei unabhängige Datenbanken und nicht eine Datenbank mit zwei Foren. Ich persönlich finde das angenehmer.

    Ok, nun wollen wir die Datenbanken ja auch mit NodeBB benutzen und brauchen zwei eigenständige Instanzen.

    Forum 1

    [Unit]
    Description=NodeBB
    Documentation=https://docs.nodebb.org
    After=system.slice multi-user.target mongod.service
    
    [Service]
    Type=forking
    User=user_forum1
    
    StandardOutput=syslog
    StandardError=syslog
    SyslogIdentifier=nodebb
    
    WorkingDirectory=/home/forum1/nodebb
    PIDFile=/home/forum1/nodebb/pidfile
    ExecStart=/usr/bin/node loader.js
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    

    Forum 2

    [Unit]
    Description=NodeBB
    Documentation=https://docs.nodebb.org
    After=system.slice multi-user.target mongod.service
    
    [Service]
    Type=forking
    User=user_forum2
    
    StandardOutput=syslog
    StandardError=syslog
    SyslogIdentifier=nodebb
    
    WorkingDirectory=/home/forum2/nodebb
    PIDFile=/home/forum2/nodebb/pidfile
    ExecStart=/usr/bin/node loader.js
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    

    Ich denke, das sollten verständlich sein. Die beiden Files nach /etc/systemd/system und ausführbar machen

    chmod +x .....
    

    Ok, und die Datenbanken??

    In der config.json der NodeBB-Installation, kommt einmal das hier ein

        "redis": {
            "host": "127.0.0.1",
            "port": "6379",
    

    und einmal das hier

        "redis": {
            "host": "127.0.0.1",
            "port": "6380",
    

    Somit startet jede Instanz autark und benutzt seine eigene Redis-Datenbank.

  • FrankMF FrankM hat dieses Thema am angepinnt

  • Redis ändert das Lizenz Modell

    Redis
    2
    0 Stimmen
    2 Beiträge
    125 Aufrufe
    FrankMF

    Ein Artikel von Heise zum Thema

    Link Preview Image Datenbankanbieter Redis ändert sein Lizenzmodell – erneut

    Die No-SQL-Datenbank wird künftig nach einem dualen Modell lizenziert: Redis Source Available License Version 2 oder Server-Side Public License Version 1.​

    favicon

    Developer (www.heise.de)

  • Redis Insight - Desktop UI

    Redis
    1
    0 Stimmen
    1 Beiträge
    104 Aufrufe
    Niemand hat geantwortet
  • Python & Redis-Datenbank

    Verschoben Linux
    3
    0 Stimmen
    3 Beiträge
    115 Aufrufe
    FrankMF

    Heute dann die nächste Herausforderung. Mein JSON soll so aussehen, damit ich das entsprechend erweitern kann.

    Stocks {0: {'stockname': 'Deutsche Telekom Aktie', 'wkn1': '4534543534', 'wkn2': 'sfsdfsdfsfdfd', 'quantity': 100}, 1: {'stockname': 'Henkel', 'wkn1': '4534543534', 'wkn2': 'sfsdfsdfsfdfd', 'quantity': 50}}

    Die Daten sollen wie oben schon ausprobiert, in einer Redis Datenbank liegen. So weit auch kein großes Problem. ABER, der Zugriff auf diese Daten war dann meine nächste Hürde 🙂

    Ok, ich habe also mehrere Einträge im JSON File bzw. in der Datenbank. Wie komme ich da nun wieder dran. Ein paar ☕ später dann die Lösung.

    Wie komme ich an den einzelnen Eintrag, also über den Index??

    r1.json().get('stocks', 1)

    Gibt als Ergebnis

    {'stockname': 'Henkel', 'wkn1': '4534543534', 'wkn2': 'sfsdfsdfsfdfd', 'quantity': 50}

    Ok, das passt schon mal. Somit kann man dann gewohnt auf die einzelnen Elemente zugreifen.

    print("TESTING", testing['stockname'])

    Ausgabe

    TESTING Henkel

    Ok, Teil 1 erledigt. Jetzt habe ich ja irgendwann mehrere Elemente in der Liste und brauch dann den letzten Index , um damit was machen zu können. Also, z.B. durch die Daten zu loopen.

    objkeys = r1.json().objkeys('stocks') print("Objkeys", objkeys)

    Ausgabe

    Objkeys ['0', '1']

    Ok, kommt eine Liste des Index zurück. Damit kann man arbeiten 😉

    Ich hatte dann zum Testen mittels einer while Schleife die Daten geladen, aber jetzt beim Tippen klingelt es und wir machen das schön mit enumerate 😉

    @staticmethod def load(): data = {} for count, value in enumerate(objkeys): testing = r1.json().get('stocks', count) data[count] = { "stockname": testing['stockname'], "wkn1": testing['wkn1'], "wkn2": testing['wkn2'], "quantity": testing['quantity']} return data

    Somit habe ich die Daten aus der Redis Datenbank in einem Objekt und kann damit arbeiten.

  • Redis - Datenbank extern

    Redis
    2
    0 Stimmen
    2 Beiträge
    861 Aufrufe
    FrankMF

    Das habe ich doch oben vergessen reinzuschreiben, also wenn man das mal von extern testen muss um zu schauen ob die Verbindung geht. Keine Firewall blockt usw. dann kann man das ganz einfach so machen.

    root@webserver:~# redis-cli -h 10.10.1.10 -p 6379 10.10.1.10:6379> quit
  • Portainer - NodeBB Container erstellen

    Linux
    1
    0 Stimmen
    1 Beiträge
    319 Aufrufe
    Niemand hat geantwortet
  • RedisInsight

    Redis
    1
    0 Stimmen
    1 Beiträge
    181 Aufrufe
    Niemand hat geantwortet
  • Nextcloud - Redis Cache

    Nextcloud
    1
    0 Stimmen
    1 Beiträge
    415 Aufrufe
    Niemand hat geantwortet
  • Redis startet nicht!?

    Verschoben Redis
    1
    0 Stimmen
    1 Beiträge
    360 Aufrufe
    Niemand hat geantwortet