Table of Contents
*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 spart 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 20.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 20.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 20.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 the cloud provider-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/tcpund443/tcpfür HTTP bzw. HTTPS
3306/tcpfür die MariaDB-Verbindung (nur empfohlen, wenn Sie Remotezugriff auf die Datenbank benötigen)
143/tcpund25/tcpfür IMAP bzw. STMP
22/tcpfür SSH (wenn SieOpenSSHin Ihren UFW-Einstellungen nicht bereits aktiviert haben)
8000/tcpzum Testen Ihrer Plattform vor Bereitstellung in der Produktion
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
Überprüfen Sie nun den Status Ihrer Firewall:
sudo ufw status
UFW gibt eine Liste Ihrer aktivierten Regeln aus. Stellen Sie sicher, dass die erforderlichen Ports von ERPNext geöffnet sind:
[secondary_label Output]
Status: active
To Action From
-- ------ ----
<^>22,25,80,143,443,3306,8000/tcp<^> ALLOW Anywhere
<^>22,25,80,143,443,3306,8000/tcp (v6)<^> ALLOW Anywhere (v6)
Weitere Informationen zur Konfiguration von UFW finden Sie in unserem Leitfaden zum Einrichten einer Firewall mit UFW unter Ubuntu 20.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 20.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.
[label /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 Neustarten und verwenden Sie dann ssh, um Ihre Instanz neu einzugeben. Sie sind nun bereit, Ihre Datenbank zu installieren.
Schritt 3 — Installieren von MariaDB
Jetzt fügen Sie MariaDB Ihrem Server-Stack hinzu. ERPNext 12 erfordert MariaDB 10.2 oder höher für einen ordnungsgemäßen Betrieb. Da Ubuntu 20.04 MariaDB 10.3 in seinen offiziellen Repositorys enthält, können Sie diese Version mit dem Befehl apt installieren:
sudo apt install mariadb-server
Wenn Sie alternativ eine neuere MariaDB-Version bevorzugen, können Sie Schritt 3 unseres Leitfadens zum Installieren eines ERPNext-Stacks unter Ubuntu 18.04 folgen. Dieser Schritt führt Sie durch den Online-Repository-Assistenten von MariaDB, der Ihnen beim Installieren der neuesten Version (MariaDB 10.5) hilft.
Installieren Sie nach der Installation von mariadb-server die folgenden Pakete:
sudo apt install python3-mysqldb libmysqlclient-dev
ERPNext 12 ist eine Python-Anwendung und erfordert daher die Bibliothek python3-mysqldb für das Datenbankmanagement. libmysqlclient-dev ist für den Zugriff auf bestimmte MariaDB-Entwicklerfunktionen erforderlich.
Fügen Sie als Nächstes dem MariaDB-Server eine zusätzliche 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
ENTER.
- Als Nächstes antworten Sie mit
N, wenn Sie dazu aufgefordert werden, das root-Passwort für Maria DB 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 zu 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
Ybeantworten.
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-Benutzer 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-Benutzer 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, erstellen Sie nun manuell eine Datenbank, 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 anderen Namen wählen:
CREATE DATABASE <^>sammy<^>;
Prüfen Sie mit dieser SQL-Anweisung, ob die Datenbank erstellt wurde:
SHOW DATABASES;
Sie sehen eine Ausgabe, die dieser ähnelt:
[secondary_label 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:
[secondary_label 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 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 mariadb.cnf zu erstellen:
sudo nano /etc/mysql/mariadb.conf.d/mariadb.cnf
Fügen Sie nun die offizielle Konfigurationsvorlage von ERPNext hinzu:
[label /etc/mysql/mariadb.conf.d/mariadb.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
# CONNECTIONS #
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
bind-address = 0.0.0.0
[mysql]
default-character-set = utf8mb4
[mysqldump]
max_allowed_packet=256M
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.
Die Konfigurationsdatei /etc/mysql/mariadb.conf.d/mariadb.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. Denken Sie daran, 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.
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 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:
[secondary_label Output]
mysql 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 nun bereit ist, können Sie 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 python3-testresources 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 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 20.04.
Aktualisieren Sie als Nächstes pip3, den standardmäßigen Paketmanager von Python, und installieren Sie dann die neuesten Versionen von drei zusätzlichen Python-Modulen:
sudo -H python3 -m pip install --upgrade setuptools cryptography psutil
setuptools erleichtert die Installation und Aktualisierung von Python-Paketen, cryptography fügt Ihrem Stack Verschlüsselungsfunktionen hinzu und psutil hilft Ihnen bei der Systemüberwachung. 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 erhält. Ubuntu 20.04 enthält zum Zeitpunkt der Verfassung dieses Dokuments Node.js-Version 10.19. Zwar wird diese Version weiterhin unterstützt, doch aus ähnlichen Gründen (EOL in weniger als einem Jahr) ist es sehr ratsam, deren Verwendung zu vermeiden. Für diesen Leitfaden wird Node.js-Version 12 LTS zusammen mit den entsprechenden npm– und yarn-Paketmanagern 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 mit den Inhalten des Skripts 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 npm-Paketmanager:
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 20.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 20.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. Wir haben alle wichtigen Komponenten installiert, die ERPNext 12 benötigt, darunter:
- 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 Befehlszeilentools 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
Der Befehl tee fügt den Inhalt Ihres Befehls echo der aufgerufenen Datei an; außerdem wird die Ausgabe in Ihrer Konsole gedruckt.
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:
[secondary_label 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 unterzubringen.
--frappe-pathverweist auf das Frappe-Repository, das in diesem Fall das offizielle Github-Repository ist.
--frappe-branchist die zu installierende Frappe-Version. Da Sie ERPNext 12 installieren möchten, ist die gewählte Version Frappe 12.
--pythonist 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<^>
Bevor Sie fortfahren, müssen Sie bestimmte Versionen von Python-Bibliotheken numpy und pandas in der virtuellen Frappe-Umgebung installieren. Installieren Sie diese Pakete mit dem folgenden Befehl:
./env/bin/pip install numpy==1.18.5 && ./env/bin/pip install pandas==0.24.2
An diesem Punkt stoppt die Installation möglicherweise etwa 10 bis 20 Minuten lang, während die folgende Nachricht angezeigt wird:
[secondary_label Output]
...
Building wheel for pandas (setup.py) ... -
Dies hat mit einem Fehler in Verbindung mit pandas und Ubuntu 20.04 zu tun, das zum Zeitpunkt der Verfassung dieses Dokuments noch relativ neu war. Dennoch werden die Pakete erstellt. Danach sehen Sie eine Ausgabe, die wie folgt aussieht:
[secondary_label Output]
...
Successfully built pandas
Installing collected packages: pandas
Successfully installed pandas-0.24.2
Sie können nun mit der Installation fortfahren. Laden Sie ERPNext 12 aus dem Repository mit der bench-CLI 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-siteerstellt 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 Ihre ERPNext 12-Anwendung fertig, doch ist das System insgesamt noch nicht bereit 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
8000zu Port80(HTTP) oder Port443(HTTPS) umleitet.
- Supervisor 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 einen 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 bench erstellt werden, sind:
- Zwei Nginx-Konfigurationsdateien, die sich unter
/etc/nginx/nginx.confund/etc/nginx/conf.d/<^>frappe-bench<^>.confbefinden
- Ein Fail2Ban-Proxy-Jail unter
/etc/fail2ban/jail.d/nginx-proxy.confund 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 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
Vergewissern Sie sich zunächst, dass wichtige Produktionsdienste ausgeführt werden. Verwenden Sie folgenden Befehl systemctl und übergeben Sie ihn dann an grep:
systemctl list-unit-files | grep 'fail2ban\|nginx\|supervisor'
Sie werden eine Ausgabe wie diese sehen:
[secondary_label Output]
fail2ban.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 <^>your_domain<^> oder dort hin, wo Sie Ihre ERPNext 12-Anwendung hosten.
Nach wenigen Sekunden sollten Sie den Anmeldebildschirm von ERPNext 12 sehen. Verwenden Sie Administrator als Benutzernamen (email) und das zuvor für das Passwort erstellte <^>erpnext_admin_password<^>.
Im nächsten Bildschirm sehen Sie ein Dropdownmenü, in dem Sie die Sprache der Benutzeroberfläche für die Anwendung auswählen können:
Nach der Sprachauswahl wird Sie ERPNext zur Eingabe Ihres Lands, Ihrer Zeitzone und der Währung auffordern:
Sobald Sie die Regionsinformationen festgelegt haben, können Sie Ihren ersten ERPNext-Benutzer erstellen. Die von Ihnen angegebenen Informationen werden als Anmeldedaten des Benutzers verwendet.
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.
Als Nächstes müssen Sie einen Firmennamen und eine Abkürzung angeben.
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).
Als Nächstes sehen Sie eine Fortschrittsleiste.
Nach Abschluss der Einrichtung wird das Haupt-Dashboard von ERPNext 12 angezeigt.
Sie haben nun eine ERPNext 12-Anwendung fertig 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.
Vielleicht möchten Sie auch die Geschwindigkeit von ERPNext erhöhen. In diesem Fall können Sie mehr über die Leistungsoptimierung bei ERPNext erfahren; hier erhalten Sie Informationen über bewährte Praktiken und die Behebung von Leistungsproblemen.