User Tools

Site Tools


server:openeats

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
server:openeats [2017/11/29 20:47] – history Modul Problem ergänzt saschaserver:openeats [2019/02/16 19:48] (current) – Probleme bei größeren MariaDB-Updates, nicht gefundene library ergänzt sascha
Line 163: Line 163:
 Der Befehl ''npm install'' dauert eine Weile; dabei ist es wichtig, ihn als root und nicht mit sudo auszuführen, da die Installation der Pakete sonst aufgrund fehlender Schreibrechte fehlschlägt, bzw. in eine Endlosschleife laufen kann! Der Befehl ''npm install'' dauert eine Weile; dabei ist es wichtig, ihn als root und nicht mit sudo auszuführen, da die Installation der Pakete sonst aufgrund fehlender Schreibrechte fehlschlägt, bzw. in eine Endlosschleife laufen kann!
  
-Ist die Installation abgeschlossen, können wir den Node-Server starten. Dabei ist das Setzen der Umgebungsvariablen wichtig, da ''webpack'' (js Kram...) sonst Fehler liefert:+Ist die Installation abgeschlossen, muss in der Konfiguration von ''webpack'' noch ein Problem behoben werden. Es wird für die Ausgabe ein absoluter Pfad erwartet, allerdings stimmt dieser nicht, somit wird die erzeugte Datei ''bundle.js'' nicht in ein Verzeichnis geschrieben. Dazu in der Datei ''webpack.config.js'' im aktuellen Verzeichnis ganz oben bei den ''const'' Ausdrücken die Zeile 
 +  const path = require('path'
 +anfügen sowie weiter unten im Teil ''module-exports = {'' unter dem Punkt ''output: {'' die Zeile 
 +  path: '/code/public', 
 +abändern zu 
 +  path: path.resolve(__dirname, 'public'), 
 + 
 +Damit können wir nun den Node-Server starten. Dabei ist das Setzen der Umgebungsvariablen wichtig, da ''webpack'' (js Kram...) sonst Fehler liefert:
   # NODE_ENV=production NODE_LOCALE=de NODE_API_URL=https://food.domain.tld npm start   # NODE_ENV=production NODE_LOCALE=de NODE_API_URL=https://food.domain.tld npm start
 Nun sollte alles funktionieren und mit dem Aufruf der URL https://food.domain.tld im Browser sollte die eigentliche Oberfläche zur Anzeige der Rezepte erscheinen. Nun sollte alles funktionieren und mit dem Aufruf der URL https://food.domain.tld im Browser sollte die eigentliche Oberfläche zur Anzeige der Rezepte erscheinen.
 +
 +__Hinweis__: Sollte es beim Starten zu einem Fehler kommen,
 +>ERROR in ./modules/common/history.js
 +>Module not found: Error: Can't resolve 'history' in '/usr/share/webapps/openeats/frontend/modules/common'
 +muss das ''history''-Modul explizit installiert werden:
 +  # npm install --save history
 +siehe [[server:openeats#history-modul_nicht_gefunden|Troubleshooting]].
  
  
Line 311: Line 325:
   # npm install --save history   # npm install --save history
 der Installation hinzugefügt werden. der Installation hinzugefügt werden.
 +
 +==== Update Python, Upgrade der virtuellen Umgebung ====
 +
 +Die angelegte virtuelle Umgebung unter ''virt_env'' muss unter Umständen aktualisiert werden, beispielsweise nach einem Upgrade von Python selbst auf ein neues Release. Dies kann dazu führen, dass beim Versuch, den Server innerhalb der virtuellen Umgebung mit ''./api/manage.py runserver'' manuell zu starten, zu Fehlern wie
 +> python: error while loading shared libraries: libpython3.6m.so.1.0: cannot open shared object file: No such file or directory
 +erscheint. Grund ist hier das Upgrade von Python 3.6 auf 3.7.
 +
 +Um ein Update durchführen zu können, ermitteln wir der Einfachheit halber alle installierten Module, um sie nachher einfach wieder zu installieren. Dazu muss die Python-Version mittels Downgrade auf die letzte funktionierende Version gesetzt werden. Am besten wurde der Cache der ''pacman''-Pakete nicht geleert, so kann in ''/var/cache/pacman/pkg'' nach den vorhandenen alten Python-Paketen gesucht werden, in meinem Fall die Version 3.6.6. Diese installieren wir:
 +  # pacman -U /var/cache/pacman/pkg/python-3.6.6-1-armv7h.pkg.tar.xz
 +
 +Nun kann die virtuelle Umgebung aktiviert werden, um die verwendeten Module zu ermitteln:
 +  # source virt_env/bin/activate
 +  # pip freeze > requirements.txt
 +  # deactivate
 +  # mv virt_env virt_env_bak
 +Bei dem letzten Schritt wird die Umgebung als Backup in einen neuen Ordner verschoben.
 +
 +Anschließend kann Python wieder aktualisiert werden:
 +  # pacman -S python
 +
 +Bei mir ist in der Liste der Module in ''requirements.txt'' das Modul ''openeats-recipe-scraper'' aufgetaucht. Dies gehört zu OpenEats und kann entsprechend nicht mit ''pip'' installiert werden. Die Zeile mit diesem Modul muss noch aus der Textdatei gelöscht werden.
 +
 +Die neue Umgebung kann nun eingerichtet werden:
 +  # mkdir virt_env
 +  # virtualenv virt_env/
 +  # source virt_env/bin/activate
 +  # pip install --upgrade -r requirements.txt
 +
 +Wird nun versucht, den Server manuell mit ''./api/manage.py runserver'' zu starten, sollte es keine Fehlermeldung mehr geben. Wir können die virtuelle Umgebung mit ''deactivate'' wieder verlassen und das Backup ''virt_env_bak'' kann entsprechend gelöscht werden, wenn alles funktioniert hat.
 +
 +==== Update MariaDB, Django-Server startet nicht ====
 +
 +Es kann passieren, dass es nach einem größeren Update von MariaDB, welches MySQL zur Verfügung stellt, Probleme beim Start des Django-Servers gibt. Dies zeigt sich darin, dass keine Bilder oder Rezepte geladen/gefunden werden. Wird wie weiter oben beschrieben versucht, den Server manuell mittels ''./api/manage.py runserver'' zu starten, tauchen in diesem Fall sehr viele Probleme auf sowie ganz am Ende etwas wie
 +> django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: libmysqlclient.so.18: cannot open shared object file: No such file or directory
 +
 +In diesem Fall reicht es, das Python-Paket ''mysqlclient'' neu zu installieren, damit die neue Version die im System vorhandene Bibliothek wieder findet. Zur Sicherheit kann analog zum vorherigen Punkt ein Backup angelegt werden. Für das Update selber wechseln wir ins passende OpenEats-Verzeichnis, wechseln in die angelegte virtuelle Umgebung und führen das Paket-Update mittels ''pip'' durch:
 +    # source virt_env/bin/activate
 +    # pip uninstall mysqlclient
 +    # pip install mysqlclient
 +    # deactivate
 +
 +Mit dem letzten Befehl wird die virtuelle Umgebung wieder verlassen. Hat alles geklappt, sollte der Aufruf von ''./api/manage.py runserver'' nun zum gewünschten Resultat führen.
 +
 +
server/openeats.1511988444.txt.gz · Last modified: by sascha