Installieren eines ERPNext-Stacks unter Ubuntu 18.04

Der Autor hat Software in the Public Interest dazu ausgewählt, im Rahmen des Programms Write for DOnations eine Spende zu erhalten.

Einführung

ERPNext ist eine Suite für Enterprise Resource Planning (ERP), die die Leistung und Flexibilität von Open-Source-Technologien nutzt. Sie eignet sich bestens zur Verwaltung von wichtigen Geschäftsprozessen wie Finanzen, Vertrieb, Personalverwaltung, Herstellung, Einkauf, Dienstleistungen, Helpdesk und vielem mehr. Zu den Vorteilen der Implementierung eines Systems wie ERPNext gehören:

  • Höhere Produktivität durch Automatisieren wiederholter Geschäftsprozesse
  • Verbesserte IT-Effizienz durch Freigabe einer Datenbank für alle Abteilungen innerhalb des Unternehmens
  • Bessere Entscheidungsprozesse dank einer integrierten Übersicht darüber, wie Geschäftseinheiten miteinander verbunden sind

ERPNext basiert auf Frappe, einem Full-Stack-Webanwendungsframework, das in Python geschrieben wurde. Es nutzt umfassend die Node-/JavaScript-Laufzeitumgebung und verwendet MariaDB als Datenbank-Backend. Einer der vielen Vorteile von Frappe-basierten Anwendungen wie ERPNext ist das Befehlszeilentool bench. Die bench-CLI speichert Administratoren Zeit, indem sie Aufgaben wie Installation, Aktualisierung, Konfiguration und Verwaltung verschiedener Frappe-/ERPNext-Sites automatisiert.

In diesem Tutorial installieren und konfigurieren Sie einen ERPNext-Stack auf einem Server, auf dem Ubuntu 18.04 ausgeführt wird. Dadurch können Sie Ihren Stack je nach Bedarf für verschiedene Entwicklungs- oder Produktionsumgebungen konfigurieren. So erhalten Sie die Möglichkeit, eine komplexere und fehlertolerantere Architektur einzurichten.

Voraussetzungen

  • Ein Ubuntu 18.04-Server mit mindestens 4 GB RAM und einem Nicht-root-Benutzer mit sudo-Berechtigungen. Sie können Ihren Server und Benutzer einrichten, indem Sie unserem Leitfaden zur Ersteinrichtung des Servers unter Ubuntu 18.04 folgen.

Anmerkung: Bei der Auswahl der Spezifikationen Ihres Servers sollten Sie daran denken, dass ERP-Systeme ressourcenintensiv sind. Dieser Leitfaden erfordert einen Server mit 4 GB RAM, was für grundlegende Anwendungsfälle ausreicht. Die spezifischen Hardwareanforderungen können jedoch je nach Anzahl der Benutzer sowie der Unternehmensgröße variieren.

  • Ein vollständig registrierter Domänenname mit einem A-Eintrag, der auf Ihren Server verweist. Wenn Sie ein DigitalOcean-Droplet verwenden, können Sie diesem Leitfaden folgen, um Ihr DNS richtig einzurichten. In diesem Tutorial wird überall your_domain verwendet.

Schritt 1 — Konfigurieren der Firewall

Zwar ist die Konfiguration einer Firewall für Entwicklungsumgebungen optional, für die Produktion ist sie jedoch eine obligatorische Sicherheitsmaßnahme.

Sie müssen auf Ihrem ERPNext-Server die folgenden Ports öffnen:

  • 80/tcp und 443/tcp für HTTP bzw. HTTPS
  • 3306/tcp für die MariaDB-Verbindung (nur empfohlen, wenn Sie Remotezugriff auf die Datenbank benötigen)
  • 143/tcp und 25/tcp für IMAP bzw. STMP
  • 22/tcp für SSH (wenn Sie OpenSSH nicht bereits aktiviert haben)
  • 8000/tcp für Entwicklungstests, bevor Sie Ihre Site bereitstellen

Zum Öffnen verschiedener Ports auf einmal können Sie folgenden Befehl verwenden:

  • sudo ufw allow 22,25,143,80,443,3306,8000/tcp

Alternativ können Sie Verbindungen von bestimmten IP-Adressen zu bestimmten Ports mit diesem Befehl zulassen:

  • sudo ufw allow from server_IP to any port port_number

Nach dem Öffnen aller erforderlichen Ports aktivieren Sie die Firewall:

  • sudo ufw enable

Nach Aktivierung der Firewall prüfen Sie den Status Ihrer offenen Ports:

  • sudo ufw status

Weitere Informationen zum Firewall-Setup finden Sie in unserem Leitfaden Einrichten einer Firewall mit UFW unter Ubuntu 18.04.

Das Einrichten einer ordnungsgemäß funktionierenden Firewall ist der erste von zwei Vorbereitungsschritten. Jetzt konfigurieren Sie die Tastenbelegung und Zeichencodierung auf Ihrem Server.

Schritt 2 — Konfigurieren von Gebietsschemas

Es wird dringend empfohlen, die Tastenbelegung für die Konsole sowie die Sprache und die Zeichencodierung auf Ihrem Host zu konfigurieren. Dies ist notwendig, um mögliche Probleme bei der ERPNext 12-Installation zu verhindern. Beachten Sie, dass diese Konfiguration nichts mit der UI-Sprache in Ihrer eigentlichen ERPNext-Plattform zu tun hat, sondern mit der Systemkonfiguration des Gebietsschemas.

Aktualisieren Sie zunächst Ihren Server:

  • sudo apt update

Konfigurieren Sie nun die Tastenbelegung, Sprache und Zeichencodierung:

  • sudo localectl set-keymap us && sudo localectl set-locale LANG=en_US.utf8

Das Dienstprogramm localectl wird von Ubuntu 18.04 und anderen Linux-Distributionen verwendet, um systemweite Einstellungen für das Gebietsschema und die Tastaturbelegung zu steuern und zu ändern, bevor der Benutzer sich anmeldet. Das ist genau das, was ERPNext 12 benötigt.

Sie müssen Ihrer Datei /etc/environment außerdem die folgenden Zeilen hinzufügen. Verwenden Sie nano oder Ihren bevorzugten Texteditor, um die Datei zu öffnen:

  • sudo nano /etc/environment

Fügen Sie jetzt den folgenden Inhalt hinzu.

/etc/environment

LC_ALL=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 LANG=en_US.UTF-8 

Speichern und schließen Sie die Datei.

Starten Sie Ihren Server neu, um alle Änderungen anzuwenden:

  • sudo reboot

Geben Sie Ihrem Server einige Minuten zum Neustart und stellen Sie dann erneut eine SSH-Verbindung her. Sie sind nun bereit, Ihre Datenbank zu installieren.

Schritt 3 — Installieren von MariaDB 10.04

Jetzt fügen Sie MariaDB Ihrem Server-Stack hinzu. ERPNext 12 erfordert MariaDB 10.2 oder höher; die im offiziellen Repository von Ubuntu 18.04 enthaltene Version lautet jedoch 10.1, was bedeutet, dass Sie eine höhere Version installieren müssen. Für die Zwecke dieses Leitfadens verwenden Sie die neueste stabile Version von MariaDB, zum Zeitpunkt der Verfassung dieses Textes Version 10.4.

Um MariaDB 10.4 unter Ubuntu 18.04 zu installieren, müssen Sie den entsprechenden Signaturschlüssel und das Repository hinzufügen. Diese Informationen finden Sie im Repository-Assistenten der MariaDB Foundation. Besuchen Sie diese URL in Ihrem Webbrowser. Klicken Sie nun unter 1. Choose a Distro (1. Distro wählen) auf Ubuntu. Eine zweite Spalte mit dem Titel 2. Choose a Release (2. Release wählen) wird angezeigt. Klicken Sie unter diesem Titel auf 18.04 LTS “bionic”. Dann wird eine dritte Spalte mit dem Titel 3. Choose a Version (3. Version wählen) angezeigt. Klicken Sie darunter auf 10.4 stable. Eine dritte Spalte mit dem Titel 4. Choose a Mirror (4. Spiegelung wählen) wird angezeigt. Wählen Sie eine auf Ihrem Standort basierende Spiegelung aus; dann wird MariaDB die entsprechenden Befehle für Ihre benutzerdefinierte Installation eingeben.

Repository-Assistent von MariaDB

Führen Sie die drei eingegebenen Befehle aus, wodurch das MariaDB-Repository und der Schlüssel ordnungsgemäß hinzugefügt werden. Ihre eigenen Befehle werden etwa wie folgt aussehen:

  • sudo apt-get install software-properties-common && sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc' && sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://mirror.klaus-uwe.me/mariadb/repo/10.4/ubuntu bionic main'

Sobald Sie das Repository hinzugefügt haben, installieren Sie MariaDB:

  • sudo apt install mariadb-server

Installieren Sie nach der Installation von mariadb-server die folgenden Pakete:

  • sudo apt install libmysqlclient-dev python3-mysqldb

ERPNext 12 ist eine Python-Anwendung und benötigt daher die Bibliothek python3-mysqldb für das Datenbankmanagement. Bezüglich libmysqlclient-dev, mariadb-client und libmariadbclient18: Über diese Pakete können Benutzer mit dem MariaDB-Dienst kommunizieren. ntpdate und libdate-manip-perl werden von ERPNext zur Synchronisierung der Serverzeit verwendet.

Fügen Sie dem MariaDB-Server als Nächstes eine grundlegende Sicherheitsschicht hinzu, indem Sie das Skript mysql_secure_installation ausführen:

  • sudo mysql_secure_installation

Das Skript mysql_secure_installation wird Ihnen mehrere Fragen stellen:

  • Die erste Eingabeaufforderung wird Sie nach dem root-Passwort fragen. Da jedoch noch kein Passwort konfiguriert ist, drücken Sie die Eingabetaste.
  • Als Nächstes müssen Sie entscheiden, ob Sie Unix-Authentifizierung verwenden möchten oder nicht. Antworten Sie mit Y (J), um diese Authentifizierungsmethode zu akzeptieren.
  • Antworten Sie mit N, wenn Sie dazu aufgefordert werden, dasroot-Passwort für MariaDB zu ändern. Eine Verwendung des Standardpassworts zusammen mit Unix-Authentifizierung ist das empfohlene Verfahren für Ubuntu-basierte Systeme, da das root-Konto eng mit automatisierten Systemwartungsaufgaben verbunden ist.
  • Die übrigen Fragen haben mit dem Entfernen des anonymen Datenbankbenutzers tun, wobei das root-Konto so beschränkt wird, dass es sich remote bei localhost anmeldet, die Testdatenbank entfernt wird und Berechtigungstabellen neu geladen werden. Sie können alle diese Fragen mit Y beantworten.

Nach Abschluss des Skripts mysql_secure_installation wird MariaDB mit ihrer Standardkonfiguration gestartet. Die standardmäßige ERPNext-Installation verwendet für alle Datenbankoperationen den root user von MariaDB. Zwar mag dieser Ansatz für einzelne Serverkonfigurationen praktisch sein, doch gilt er nicht als besonders sicher. Im nächsten Abschnitt erfahren Sie daher, wie Sie das Problem vermeiden können, indem Sie einen neuen Benutzer mit speziellen Berechtigungen erstellen.

Erstellen eines MariaDB Super Admin-Benutzers

ERPNext erwartet, dass zur Verwaltung von Datenbankverbindungen der root user von MariaDB verwendet wird. Dies ist jedoch nicht immer ideal. Um diese Einschränkung zu umgehen und MariaDB von einem Nicht-root-Benutzer verwalten zu lassen, müssen Sie nun manuell eine Datenbank erstellen, die nach diesem Benutzer benannt ist. Dann können Sie dem neuen Benutzer spezielle Berechtigungen zuweisen, um ihm ERPNext-Datenbankoperationen zu ermöglichen.

Öffnen Sie die Eingabeaufforderung von MariaDB:

  • sudo mysql

Erstellen Sie nun eine neue Datenbank, die nach dem Benutzer benannt ist, den Sie für MariaDB-Verbindungen zuweisen möchten. In diesem Tutorial wird sammy verwendet, Sie können jedoch einen Namen Ihrer Wahl nutzen:

  • CREATE DATABASE sammy;

Prüfen Sie mit dieser SQL-Anweisung, ob die Datenbank erstellt wurde:

  • SHOW DATABASES;

Sie sehen eine Ausgabe, die dieser ähnelt:

Output+--------------------+ | Database           | +--------------------+ | information_schema | | mysql              | | performance_schema | | sammy             | +--------------------+ 

Erstellen Sie nun den MariaDB-Benutzer sammy mit Berechtigungen, die denen von root ähneln, und weisen Sie dem Benutzer ein starkes Passwort Ihrer Wahl zu. Bewahren Sie das Passwort an einem sicheren Ort auf; Sie werden es später benötigen:

  • GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'%' IDENTIFIED BY 'mariadb_password' WITH GRANT OPTION;

Prüfen Sie nun sowohl die Erstellung des Benutzers als auch die Berechtigungen des neuen Benutzers:

  • SELECT host, user, Super_priv FROM mysql.user;

Sie werden eine Ausgabe wie diese sehen:

Output+-----------+-------+------------+ | Host      | User  | Super_priv | +-----------+-------+------------+ | localhost | root  | Y          | | localhost | mysql | Y          | | %         | sammy | Y          | +-----------+-------+------------+ 3 rows in set (0.001 sec) 

Bereinigen Sie nun Berechtigungen, um alle Änderungen anzuwenden:

  • FLUSH PRIVILEGES;

Abschließend beenden Sie die Sitzung:

  • exit

Nachdem Sie einen Datenbankbenutzer erstellt haben, müssen Sie nun nur noch MariaDB optimieren, um einen ordnungsgemäßen Betrieb von ERPNext 12 sicherzustellen. Das ERPNext-Team verfügt zum Glück über eine ausgezeichnete Konfigurationsvorlage, die Sie als Ausgangspunkt für Ihre Implementierung verwenden werden. Im nächsten Abschnitt erfahren Sie, wie Sie die MariaDB-Datenbank mit dieser Vorlage richtig konfigurieren.

Schritt 4 — Konfigurieren von MariaDB für ERPNext

Nach dem Installieren und Schützen von MariaDB ist es nun an der Zeit für die Optimierung der ERPNext-Verbindungen.

Halten Sie zunächst mariadb.service an:

  • sudo systemctl stop mariadb

Verwenden Sie nun nano oder Ihren bevorzugten Texteditor, um eine MariaDB-Konfigurationsdatei namens settings.cnf zu erstellen:

  • sudo nano /etc/mysql/conf.d/settings.cnf

Fügen Sie nun die Konfigurationsvorlage von ERPNext hinzu:

/etc/mysql/conf.d/settings.cnf

[mysqld]  # GENERAL # user                           = mysql default-storage-engine         = InnoDB socket                         = /var/lib/mysql/mysql.sock pid-file                       = /var/lib/mysql/mysql.pid  # MyISAM # key-buffer-size                = 32M myisam-recover                 = FORCE,BACKUP  # SAFETY # max-allowed-packet             = 256M max-connect-errors             = 1000000 innodb                         = FORCE  # DATA STORAGE # datadir                        = /var/lib/mysql/  # BINARY LOGGING # log-bin                        = /var/lib/mysql/mysql-bin expire-logs-days               = 14 sync-binlog                    = 1  # REPLICATION # server-id                      = 1  # CACHES AND LIMITS # tmp-table-size                 = 32M max-heap-table-size            = 32M query-cache-type               = 0 query-cache-size               = 0 max-connections                = 500 thread-cache-size              = 50 open-files-limit               = 65535 table-definition-cache         = 4096 table-open-cache               = 10240  # INNODB # innodb-flush-method            = O_DIRECT innodb-log-files-in-group      = 2 innodb-log-file-size           = 512M innodb-flush-log-at-trx-commit = 1 innodb-file-per-table          = 1 innodb-buffer-pool-size        = 5462M innodb-file-format             = barracuda innodb-large-prefix            = 1 collation-server               = utf8mb4_unicode_ci character-set-server           = utf8mb4 character-set-client-handshake = FALSE max_allowed_packet             = 256M  # LOGGING # log-error                      = /var/lib/mysql/mysql-error.log log-queries-not-using-indexes  = 0 slow-query-log                 = 1 slow-query-log-file            = /var/lib/mysql/mysql-slow.log  [mysql] default-character-set = utf8mb4  [mysqldump] max_allowed_packet=256M  !includedir /etc/mysql/mariadb.conf.d/ 

Speichern und schließen Sie die Datei. Weitere Informationen zu diesen Konfigurationen finden Sie in dieser Vorlagendatei im Github-Repository von ERPNext. Dies ist ein nützlicher Ausgangspunkt für die Erkundung der Optionen.

Erstellen Sie als Nächstes eine weitere Datei namens erpnext.cnf:

  • sudo nano /etc/mysql/mariadb.conf.d/erpnext.cnf

Fügen Sie der Datei folgenden Inhalt hinzu:

/etc/mysql/mariadb.conf.d/erpnext.cnf

[mysqld] pid-file        = /var/run/mysqld/mysqld.pid socket          = /var/run/mysqld/mysqld.sock bind-address    = 0.0.0.0 

Die erste Datei /etc/mysql/conf.d/settings.cnf ergänzt und überschreibt auch einige Werte, die in der Standardkonfiguration von MariaDB unter /etc/mysql/my.cnf enthalten sind. Diese Datei dient Ihnen als kuratierte Vorlage, die die Datenbankleistung für ERPNext erheblich verbessert. Beachten Sie, dass diese Vorlage zwar ein guter Ausgangspunkt ist, Sie die Leistung von MariaDB jedoch noch weiter verbessern können, indem Sie die Parameter an Ihre Bedürfnisse anpassen.

Die zweite Datei /etc/mysql/mariadb.conf.d/erpnext.cnf überschreibt ebenfalls einige Werte, indem bestimmte Informationen zu Ihrer Datenbankverbindung hinzugefügt werden.

Testen der MariaDB-Verbindung

Da ERPNext bei fast allen internen Operationen auf die Datenbankverbindung angewiesen ist, ist es sinnvoll, die Verbindung vor dem Fortfahren zu testen.

Starten Sie mariadb.service:

  • sudo systemctl start mariadb

Zum Testen der Verbindung können Sie folgenden Befehl verwenden. Denken Sie daran, sammy und mariadb_password durch Ihre eigenen Anmeldedaten zu ersetzen:

  • mysql --user sammy --password mariadb_password --host=localhost --protocol=tcp --port=3306 test

Sie erhalten eine Ausgabe mit dem grundlegenden Hilfeinhalt von MariaDB und mehreren Parametern. Das bedeutet, dass Ihre Verbindung erfolgreich hergestellt wurde:

Outputmysql  Ver 15.1 Distrib 10.4.13-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.  Usage: mysql [OPTIONS] [database]  Default options are read from the following files in the given order: /etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf  ...    --ssl-verify-server-cert                       Verify server's "Common Name" in its cert against                       hostname used when connecting. This option is disabled by                       default.   -t, --table         Output in table format.   --tee=name          Append everything into outfile. See interactive help (h)                       also. Does not work in batch mode. Disable with                       --disable-tee. This option is disabled by default.   -u, --user=name     User for login if not current user.   -U, --safe-updates  Only allow UPDATE and DELETE that uses keys.   -U, --i-am-a-dummy  Synonym for option --safe-updates, -U.   -v, --verbose       Write more. (-v -v -v gives the table output format).  ...  max-join-size                     1000000 secure-auth                       FALSE show-warnings                     FALSE plugin-dir                        (No default value) default-auth                      (No default value) binary-mode                       FALSE connect-expired-password          FALSE 

Wenn Sie Änderungen an den Einstellungen von MariaDB vornehmen oder Fehler beheben müssen, können Sie den Dienst mit dem folgenden Befehl neu laden:

  • sudo systemctl restart mariadb

Aktivieren Sie anschließend MariaDB:

  • sudo systemctl enable mariadb

Nachdem Sie die Datenbankverbindung getestet haben, können Sie nun mit der Installation Ihrer ERPNext-Anwendung fortfahren.

Schritt 5 — Einrichten von ERPNext 12

Nachdem Ihr Datenbank-Backend bereit ist, können Sie nun mit der Einrichtung Ihrer ERPNext-Webanwendung fortfahren. In diesem Abschnitt erfahren Sie, wie Sie alle von ERPNext 12 benötigten Komponenten installieren und konfigurieren und dann die Anwendung selbst installieren.

Bereiten Sie zunächst mit allen Systempaketen, die ERPNext 12 benötigt, den Server vor. Installieren Sie systemweite Abhängigkeiten mit dem folgenden Befehl:

  • sudo DEBIAN_FRONTEND=noninteractive apt install -y curl build-essential mariadb-client python3-setuptools python3-dev libffi-dev python3-pip libcurl4 dnsmasq fontconfig git htop libcrypto++-dev libfreetype6-dev liblcms2-dev libwebp-dev libxext6 libxrender1 libxslt1-dev libxslt1.1 libffi-dev ntpdate postfix python3-dev python-tk screen vim xfonts-75dpi xfonts-base zlib1g-dev apt-transport-https libsasl2-dev libldap2-dev libcups2-dev pv libjpeg8-dev libtiff5-dev tcl8.6-dev tk8.6-dev libssl1.0-dev python3-mysqldb libdate-manip-perl logwatch

Die Variable DEBIAN_FRONTEND=noninteractive wurde an den Installationsbefehl übergeben, um Postfix-Eingabeaufforderungen zu vermeiden. Detaillierte Informationen zur Postfix-Konfiguration finden Sie in unserem Leitfaden zum Installieren und Konfigurieren von Postfix unter Ubuntu 18.04.

Aktualisieren Sie nun pip3 und installieren Sie dann die neuesten Versionen von drei zusätzlichen Python-Modulen, die ERPNext benötigt:

  • sudo -H python3 -m pip install --upgrade setuptools cryptography psutil

Nachdem Sie alle erforderlichen globalen Abhängigkeiten installiert haben, installieren Sie nun sämtliche Dienste und Bibliotheken, die ERPNext 12 benötigt.

Einrichten von Node.js und Yarn

ERPNext 12 kann mit Version 8 der Node.js-Serverumgebung und höher zusammenarbeiten. Zum Zeitpunkt der Verfassung dieses Dokuments verwendet das offizielle ERPNext easy_install-Skript Node 8. Aus Sicherheitsgründen ist es jedoch ratsam, eine neuere Version zu installieren, da Node 8 2020 sein Lebensende (End of Life, EOL) erreicht hat und somit keine Sicherheitspatches mehr erhalten wird. Für die Zwecke dieses Leitfadens wird Node.js-Version 12 LTS zusammen mit den entsprechenden Paketmanagern npm und yarn installiert. Bitte beachten Sie, dass das Frappe-Framework yarn zum Installieren von Abhängigkeiten verwendet. Wenn Sie sich dazu entscheiden, eine alternative Installationsmethode zu nutzen, stellen Sie sicher, dass am Ende Version 1.12 von yarn oder höher in Ihrem System ausgeführt wird.

Fügen Sie das NodeSource-Repository zu Ihrem System hinzu:

  • curl -sL https://deb.nodesource.com/setup_12.x -o nodesource_setup.sh

Sie können nun den Inhalt des heruntergeladenen Skripts überprüfen:

  • sudo nano nodesurce_setup.sh

Sobald Sie zufrieden sind, können Sie das Skript ausführen:

  • sudo bash nodesource_setup.sh

Dieses Skript aktualisiert automatisch die Liste apt. Sie können nodejs nun auf Ihrem Server installieren:

  • sudo apt install nodejs

Installieren Sie als Nächstes yarn global mit dem enthaltenen npm-Paket:

  • sudo npm install -g yarn

Nachdem Sie Node installiert haben, können Sie nun mit der Konfiguration von wkhtmltopdf für Ihre Plattform fortfahren.

ERPNext verwendet das Open-Source-Tool wkhtmltopdf, um HTML-Inhalte mit der Qt WebKit-Rendering-Engine in PDF zu konvertieren. Diese Funktion dient hauptsächlich zum Drucken von Rechnungen, Angeboten und anderen Berichten. Für ERPNext 12 wird eine spezifische Version von wkhtmltopdf (0.12.5) mit gepatchtem Qt benötigt.

Wechseln Sie zum Installieren von wkhtmltopdf zunächst in ein geeignetes Verzeichnis, in das Sie das Paket herunterladen möchten, in diesem Fall /tmp:

  • cd /tmp

Laden Sie die entsprechende wkhtmltopdf-Version und das Paket für Ubuntu 18.04 von der Projektseite herunter:

  • wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.bionic_amd64.deb

Installieren Sie das Paket nun mit dem Tool dpkg:

  • sudo dpkg -i wkhtmltox_0.12.5-1.bionic_amd64.deb

Kopieren Sie als Nächstes alle relevanten ausführbaren Dateien in Ihr Verzeichnis /usr/bin:

  • sudo cp /usr/local/bin/wkhtmlto* /usr/bin/

Ändern Sie anschließend ihre Berechtigungen, um sie ausführbar zu machen:

  • sudo chmod a+x /usr/bin/wk*

Nachdem wkhtmltopdf richtig installiert ist, fügen wir nun Redis unserem Datenbank-Stack hinzu.

Installieren von Redis

ERPNext 12 verwendet Redis, um die Leistung von MariaDB zu verbessern. Insbesondere hilft Redis beim Caching.

Installieren Sie zunächst Redis aus dem offiziellen Ubuntu 18.04-Repository:

  • sudo apt install redis-server

Aktivieren Sie anschließend Redis beim Start:

  • sudo systemctl enable redis-server

Nachdem Sie Redis Ihrem Stack hinzugefügt haben, können wir uns nun einen Moment Zeit nehmen, um zusammenzufassen, was Sie bisher erreicht haben. Bisher haben Sie alle wichtigen Komponenten installiert, die ERPNext 12 benötigt, darunter folgende Komponenten:

  • Ein MariaDB-Datenbank-Backend
  • Die Node.js-JavaScript-Serverumgebung
  • Den Yarn-Paketmanager
  • Einen Redis-Datenbankcache
  • Den wkhtmltopdf-Generator für PDF-Dokumente

Egal, ob Sie das ERP-System für die Entwicklung oder Produktion installieren, sind Sie nun bereit für den nächsten Schritt, bei dem das Frappe-Full-Stack-Framework und die eigentliche ERPNext-12-Webanwendung installiert werden.

Schritt 6 — Installieren der Frappe Bench-CLI

Nachdem Sie alle Stack-Voraussetzungen für ERPNext installiert haben, können Sie nun die Flexibilität des Befehlzeilentools bench von Frappe nutzen. Die bench-CLI wurde mit dem Ziel entwickelt, Benutzer beim Installieren, Einrichten und Verwalten von Anwendungen wie ERPNext, die auf dem Frappe-Framework basieren, zu unterstützen. In den kommenden Abschnitten installieren Sie die bench-CLI und verwenden diese dann zum Abschließen der Einrichtung von ERPNext 12.

Stellen Sie sicher, dass der Frappe-Benutzer (in diesem Fall sammy) über die richtigen Berechtigungen für das Verzeichnis home verfügt:

  • sudo chown sammy -R /home/sammy

Klonen Sie nun das frappe/bench-Repository in Ihr Stammverzeichnis. Denken Sie daran, sammy durch Ihren Systembenutzernamen zu ersetzen:

  • git clone https://github.com/frappe/bench /home/sammy/.bench --depth 1 --branch master

Installieren Sie die bench-CLI:

  • sudo pip3 install -e /home/sammy/.bench

Dieser Leitfaden geht davon aus, dass Sie ERPNext 12 für Test- bzw. Produktionsszenarien installieren und daher die Verzweigung master verwenden. Wenn Sie jedoch Anwendungen oder benutzerdefinierte ERPNext-Module entwickeln möchten, kann die Verzweigung develop eine bessere Option sein. In jedem Fall sind Sie nun bereit, das Frappe-Framework zu installieren. Dies ist der letzte Schritt vor der Installation von ERPNext selbst.

Einrichten der Frappe-Framework-Umgebung

In diesem Abschnitt erstellen Sie eine Frappe-Umgebung mithilfe der bench-CLI.

Bei der Installation von Frappe überschreiten Sie ggf. das File-Watch-Limit von Ubuntu, das standardmäßig auf 8192 festgelegt ist. Legen Sie mit dem folgenden Befehl ein höheres Limit fest, um das zu verhindern:

  • echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

Initialisieren Sie als Nächstes Frappe Framework 12. Ersetzen Sie Sammy durch Ihren Systembenutzernamen:

  • bench init /home/sammy/frappe-bench --frappe-path https://github.com/frappe/frappe --frappe-branch version-12 --python python3

Bei der Ausführung werden möglicherweise ein Fehler zu Ihrem Pfad sowie mehrere Warnungen angezeigt. Lassen Sie den Prozess bis zum Ende fortlaufen. Nach seinem Abschluss sehen Sie eine Ausgabe, die der folgenden ähnelt; das bedeutet, dass Ihre Umgebung erfolgreich erstellt wurde:

Output... Done in 82.23s. INFO:bench.utils:setting up backups no crontab for sammy SUCCESS: Bench /home/sammy/frappe-bench initialized 

Anmerkung: Der Prozess bench init kann angehalten werden, wenn ein Fehler vom Typ spawn ENOMEM auftritt. Dieser Fehler wird ausgelöst, wenn Ihr System nicht mehr genügend Arbeitsspeicher hat. Sie müssen das Problem vor dem Fortfahren beheben, entweder durch Installieren von mehr physischem Arbeitsspeicher oder durch Zuweisen eines Auslagerungsbereichs.

Sehen wir uns den Befehl genauer an, mit dem die Umgebung erstellt wird:

  • /home/sammy/frappe-bench ist der Pfad, in dem das Frappe-Framework, die Websites und zugehörige Anwendungen installiert werden. Es wird ein neues Verzeichnis (in diesem Beispiel namens frappe-bench) erstellt, um alle erforderlichen Dateien zu unterbringen.
  • --frappe-path verweist auf das Frappe-Repository, das in diesem Fall das offizielle Github-Repository ist.
  • --frappe-branch ist die zu installierende Frappe-Version. Da Sie ERPNext 12 installieren möchten, ist die gewählte Version Frappe 12.
  • --python ist die zu verwendende Python-Version. ERPNext 12 erfordert Python 3.6 oder höher. Frühere Versionen nutzen jedoch immer noch Python 2.7.

Weitere Informationen zu bench-CLI-Befehlen finden Sie im Spickzettel mit Bench-Befehlen.

Die Flexibilität, die das Frappe-Framework bietet, geht weit über die Verwendung isolierter Umgebungen hinaus. Sie können auch verschiedene Websites erstellen und Anwendungen in ihnen installieren.

Schritt 7 — Installieren der ERPNext 12-Webanwendung

In diesem Abschnitt richten Sie eine auf Frappe basierende Site ein und installieren dann darin die ERPNext 12-Anwendung.

Wechseln Sie zu dem Verzeichnis, in dem Frappe initialisiert wurde.

  • cd /home/sammy/frappe-bench

Laden Sie nun mit der bench-CLI ERPNext 12 aus dem Repository herunter:

  • bench get-app erpnext https://github.com/frappe/erpnext --branch version-12

Erstellen Sie als Nächstes die neue Site und ersetzen Sie your_domain durch die Domäne, die Sie mit der IP-Adresse dieses Servers verknüpft haben:

  • bench new-site your_domain --admin-password 'erpnext_admin_password' --mariadb-root-username sammy --mariadb-root-password 'mariadb_password'

Nehmen wir uns einen Moment Zeit, um die im obigen Befehl verwendeten Optionen zu betrachten:

  • bench new-site erstellt eine neue Site basierend auf dem Frappe-Framework.
  • your_domain ist der Name für die neue Site. Stellen Sie sicher, dass das DNS Ihrer Domäne über einen A-Eintrag verfügt, der auf die IP-Adresse Ihres Servers verweist.
  • erpnext_admin_password ist das gewünschte Passwort für den ERPNext-Benutzer Administrator. Bewahren Sie dieses Passwort an einem sicheren Ort auf; Sie werden es in Kürze benötigen.
  • mariadb_password ist das Passwort, das Sie am Anfang des Leitfadens für den MariaDB-Benutzer sammy erstellt haben.

Installieren Sie anschließend die ERPNext-Anwendung in der Site:

  • bench --site your_domain install-app erpnext

Nach Abschluss der Installation verfügen Sie über eine funktionierende ERPNext 12-Anwendung. Testen wir dies nun mit einem bench-Befehl:

  • bench start

Mit dem oben genannten Schritt wird eine Konsole zur Echtzeitüberwachung gestartet, die Ihnen verschiedene Nachrichten zum Webserver und anderen Diensten anzeigt. Öffnen Sie einen Webbrowser und navigieren Sie zu localhost:8000 (bei lokalen Installationen) oder your_domain:8000 (wenn Sie einen Remoteserver verwenden). Sie sehen den ERPNext-Anmeldebildschirm (wir werden in einem späteren Schritt mit der Anmeldung und Einrichtung fortfahren, wenn unsere Site produktionsfertig ist).

Kehren Sie nach dem Besuch Ihrer Testbereitstellung zu Ihrem Terminal zurück und drücken Sie Strg+C. Dadurch wird ERPNext angehalten und die Überwachungskonsole beendet.

Wenn Ihr Hauptziel darin besteht, Module zu erstellen oder ERPNext 12 zu modifizieren, können Sie an diesem Punkt aufhören. Für Entwicklungszwecke sind keine Komponenten mehr erforderlich. Wenn Sie jedoch ein produktionsfähiges System benötigen, das keine manuelle Initialisierung voraussetzt, müssen Sie noch einige zusätzliche Komponenten installieren und konfigurieren. Dies ist Ihr nächster Schritt.

Schritt 8 — Einrichten von ERPNext 12 für die Produktion

Zwar ist die ERPNext 12-Anwendung bereit, doch ist das System insgesamt noch nicht ganz fertig für die Produktion. Um die Zuverlässigkeit und Sicherheit von ERPNext zu gewährleisten, müssen Sie einige zusätzliche Dienste aktivieren:

  • Fail2ban bietet eine zusätzliche Schutzschicht vor Brute-Force-Angriffen durch bösartige Benutzer und Bots.
  • Nginx dient hauptsächlich als Webproxy, der den gesamten Datenverkehr von Port 8000 an Port 80 (HTTP) oder Port 443 (HTTPS) weiterleitet.
  • Supervisor: Dieser Dienst sorgt dafür, dass die wichtigsten Prozesse von ERPNext kontinuierlich ausgeführt und bei Bedarf neu gestartet werden.

Bisher haben Sie ERPNext 12 manuell installiert und konfiguriert, sodass Sie den Prozess an einem bestimmten Anwendungsfall anpassen konnten. Für den Rest der Produktionseinrichtung können Sie jedoch aus Gründen der Einfachheit die bench-CLI nutzen und die Installation und Konfiguration der verbleibenden Dienste automatisch erledigen lassen.

Stellen Sie sicher, dass Sie sich im Arbeitsverzeichnis Frappe befinden:

  • cd /home/sammy/frappe-bench

Verwenden Sie nun folgenden Befehl, um die Einrichtung von ERPNext 12 für die Produktion abzuschließen:

  • sudo bench setup production sammy --yes

Dadurch werden Nginx, Supervisor und Fail2Ban installiert und konfiguriert und wird sammy als Eigentümer der Produktionsumgebung festgelegt.

Die Konfigurationsdateien, die mit dem Befehl created werden, sind:

  • Zwei Nginx-Konfigurationsdateien, die sich unter /etc/nginx/nginx.conf und /etc/nginx/conf.d/frappe-bench.conf befinden
  • Ein Fail2Ban-Proxy-Jail unter /etc/fail2ban/jail.d/nginx-proxy.conf und ein Filter unter /etc/fail2ban/filter.d/nginx-proxy.conf

Diese Standardkonfigurationen reichen für dieses Tutorial aus; Sie sollten diese Dateien jedoch erkunden und an Ihre eigenen Anforderungen anpassen. Sie können alle Dienste anhalten, indem Sie Folgendes ausführen:

  • sudo supervisorctl stop all

Und wenn Sie bereit dazu sind, können Sie Ihre Dienste neu starten:

  • sudo supervisorctl start all

Sie sind nun in der Lage, Ihre Installation zu testen.

Testen Ihrer ERPNext 12-Installation

Überprüfen Sie zunächst mit dem folgenden Befehl systemctl, ob die wichtigsten Produktionsdienste ausgeführt werden, und leiten Sie dann an grep weiter:

  • systemctl list-unit-files | grep 'fail2ban|nginx|supervisor'

Sie werden eine Ausgabe wie diese sehen:

Outputfail2ban.service                       enabled nginx.service                          enabled supervisor.service                     enabled 

Nachdem Sie sich vergewissert haben, dass alles wie erwartet funktioniert, können Sie ERPNext 12 auf Ihrem Server live testen. Öffnen Sie Ihren bevorzugten Browser und navigieren Sie zu der Domäne, wo Sie Ihre ERPNext 12-Anwendung hosten.

Nach wenigen Sekunden sollten Sie den Anmeldebildschirm von ERPNext 12 sehen. Verwenden Sie Administrator als Benutzernamen und das zuvor für das Passwort erstellte erpnext_admin_password.

Anmeldefenster von ERPNext

Im nächsten Bildschirm sehen Sie ein Dropdownmenü, in dem Sie die Sprache der Benutzeroberfläche für die Anwendung auswählen können:

Sprachauswahl

Nach der Sprachauswahl wird Sie ERPNext zur Eingabe Ihres Lands, Ihrer Zeitzone und der Währung auffordern:

Wählen Sie Ihre Region aus

Nachdem Sie die Regionsinformationen festgelegt haben, können Sie den ersten ERPNext-Benutzer erstellen. Die von Ihnen angegebenen Informationen werden als Anmeldedaten des Benutzers verwendet.

Erster ERPNext-Benutzer

Im nächsten Bildschirm werden Sie nach etwas gefragt, das ERPNext Domänen nennt. Wenn Sie sich nicht sicher sind, wie Ihre Domäne lautet, wählen Sie als Nächstes Distribution und klicken Sie auf die Schaltfläche Weiter.

Wählen Sie Ihre Domänen aus

Als Nächstes müssen Sie einen Firmennamen und eine Abkürzung angeben.

Firmenname

Im letzten Bildschirm fragt Sie ERPNext nach dem, was Ihre Firma tut, nach dem Namen ihrer Bank, nach der Art der Kontenpläne und nach der Geschäftsjahresperiode. Sie können später weitere Banken eingeben. Füllen Sie vorerst alle Felder wie gewünscht aus und klicken Sie dann auf die Schaltfläche Complete Setup (Einrichtung abschließen).

Finanzdaten

Als Nächstes sehen Sie eine Fortschrittsleiste.

Einrichten von ERPNext

Nach Abschluss der Einrichtung wird das Haupt-Dashboard von ERPNext 12 angezeigt.

ERPNext 12-Dashboard

Sie haben nun eine ERPNext 12-Anwendung vollständig installiert und konfiguriert.

Zusammenfassung

Nachdem Sie Ihre ERPNext 12-Anwendung richtig installiert haben, können Sie nun mit der Anpassung des Systems an Ihre geschäftlichen Bedürfnisse beginnen. Ein guter Ausgangspunkt ist ein Klick auf die Schaltfläche Getting Started (Erste Schritte) im ERPNext-Dashboard. ERPNext hilft Ihnen dann bei der Konfiguration der Plattform für alle Ihre geschäftlichen und E-Commerce-Anforderungen.

Erste Schritte

Vielleicht möchten Sie auch die Geschwindigkeit von ERPNext erhöhen. In diesem Fall können Sie Leistungsoptimierung bei ERPNext lesen; hier erhalten Sie Informationen über bewährte Praktiken und die Behebung von Leistungsproblemen.