如何在Ubuntu18.04上安装ERPNext堆栈

来自菜鸟教程
跳转至:导航、​搜索

作为 Write for DOnations 计划的一部分,作者选择了 Software in the Public Interest 来接受捐赠。

介绍

ERPNext 是一个企业资源规划 (ERP) 套件,它利用了开源技术的强大功能和灵活性。 它擅长管理核心业务流程,例如财务、销售、人力资源、制造、采购、服务、帮助台需求等。 实施像 ERPNext 这样的系统的好处包括:

  • 通过自动化重复的业务流程提高生产力
  • 通过为公司内所有部门共享数据库来提高 IT 效率
  • 由于对业务部门之间如何相互关联的整体愿景,做出了更好的决策

ERPNext 基于 Frappe,一个用 Python 编写的全栈 Web 应用程序框架,充分利用 Node/JavaScript 运行环境 并使用 MariaDB 作为其数据库后端。 基于 Frappe 的应用程序(如 ERPNext)的众多优势之一是 bench 命令行实用程序。 bench CLI 通过自动化安装、更新、配置和管理多个 Frappe/ERPNext 站点等任务来节省管理员时间。

在本教程中,您将在一台运行 Ubuntu 18.04 的服务器上安装和配置 ERPNext 堆栈。 这将允许您根据需要为各种开发或生产环境配置堆栈,并为构建更复杂的容错架构做好准备。

先决条件

注意: 在选择服务器规格时,请记住 ERP 系统是资源密集型的。 本指南要求一台具有 4 GB RAM 的服务器,这足以满足基本用例的需求,但具体的硬件要求可能会因用户数量以及您的业务规模而异。


  • 带有 A 记录的完全注册的域名指向您的服务器。 如果您使用的是 DigitalOcean Droplet,那么您可以按照 本指南 正确设置您的 DNS。 本教程将自始至终使用 your_domain

第 1 步 — 配置防火墙

尽管为开发配置防火墙是可选的,但对于生产来说,这是强制性的安全实践。

您需要在 ERPNext 服务器上打开以下端口:

  • 80/tcp443/tcp 分别用于 HTTP 和 HTTPS
  • 3306/tcp 用于 MariaDB 连接(仅在需要远程访问数据库时推荐)
  • 143/tcp25/tcp 分别用于 IMAP 和 STMP
  • 用于 SSH 的 22/tcp(如果您尚未启用 OpenSSH
  • 8000/tcp 用于部署站点之前的开发测试

要一次打开多个端口,可以使用以下命令:

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

或者,您可以使用以下命令允许来自特定端口上特定 IP 地址的连接:

sudo ufw allow from server_IP to any port port_number

打开所有必要的端口后,启用防火墙:

sudo ufw enable

启用防火墙后,确认您打开的端口的状态:

sudo ufw status

有关防火墙设置的更多信息,请阅读我们的指南 如何在 Ubuntu 18.04 上使用 UFW 设置防火墙。

设置适当的防火墙是两个初步步骤中的第一步。 现在您将在服务器上配置键盘映射和字符编码。

第 2 步 — 配置语言环境

强烈建议您为控制台配置键盘映射以及主机上的语言和字符编码。 这对于避免在 ERPNext 12 安装过程中可能出现的问题是必要的。 请注意,此配置与您实际 ERPNext 平台上的 UI 语言无关,而是与系统语言环境配置有关。

首先,更新您的服务器:

sudo apt update

现在配置键盘映射、语言和字符编码:

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

Ubuntu 18.04 和其他 Linux 发行版使用 localectl 实用程序在用户登录之前控制和更改系统范围的区域设置和键盘布局设置,这正是 ERPNext 12 所需要的。

您还需要将以下行添加到您的 /etc/environment 文件中。 使用 nano 或您喜欢的文本编辑器打开文件:

sudo nano /etc/environment

现在添加以下内容:

/etc/环境

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

保存并关闭文件。

重新启动服务器以应用所有更改:

sudo reboot

给你的服务器几分钟重新启动,然后 ssh 回到里面。 您现在已准备好安装数据库。

第 3 步 — 安装 MariaDB 10.4

现在您将 MariaDB 添加到您的服务器堆栈。 ERPNext 12 需要 MariaDB 10.2+,但 Ubuntu 18.04 的官方存储库中包含的版本是 10.1,这意味着您需要安装更高版本。 就本指南而言,您将使用 MariaDB 的最新稳定版本,在撰写本文时为 10.4 版。

要在 Ubuntu 18.04 上安装 MariaDB 10.4,您需要添加适当的签名密钥和存储库。 您可以在 MariaDB Foundation 的存储库向导 上找到此信息。 在您的网络浏览器中访问此 URL。 现在,根据 1. 选择发行版 , 点击 Ubuntu . 第二列标题为 2. 选择一个版本会出现。 在此标题下方单击 18.04 LTS “bionic”。 然后将出现标题为 3.Choose a Version 的第三列。 在此下方单击 10.4 stable。 然后将出现标题为 4.Choose a Mirror 的第三列。 根据您的位置选择一个镜像,然后 MariaDB 将为您的自定义安装填充适当的命令。

运行三个填充的命令,这将正确添加 MariaDB 存储库和密钥。 您自己的命令将如下所示:

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'

添加完存储库后,安装 MariaDB:

sudo apt install mariadb-server

安装 mariadb-server 后,安装以下软件包:

sudo apt install libmysqlclient-dev python3-mysqldb

ERPNext 12 是一个 Python 应用程序,因此它需要 python3-mysqldb 库来进行数据库管理。 关于 libmysqlclient-devmariadb-clientlibmariadbclient18:这些包允许用户与 MariaDB 服务进行通信。 ERPNext 使用 ntpdatelibdate-manip-perl 进行服务器时间同步。

接下来,通过运行 mysql_secure_installation 脚本为 MariaDB 服务器添加一个基本的安全层:

sudo mysql_secure_installation

mysql_secure_installation 脚本会提示您几个问题:

  • 第一个提示会询问您root密码,但由于尚未配置密码,请按ENTER
  • 接下来,您必须决定是否使用 Unix 身份验证。 回答 Y 接受此认证方式。
  • 当被问及更改 MariaDB root 密码时,请回答 N。 对于基于 Ubuntu 的系统,建议使用默认密码和 Unix 身份验证设置,因为 root 帐户与自动化系统维护任务密切相关。
  • 剩下的问题与删除匿名数据库用户、限制 root 帐户在 localhost 上远程登录、删除测试数据库和重新加载权限表有关。 对所有这些问题回答 Y 是安全的。

完成 mysql_secure_installation 脚本后,MariaDB 将使用其默认配置开始运行。 标准 ERPNext 安装使用 MariaDB 的 root 用户进行所有数据库操作。 虽然这种方法在单个服务器设置上可能很方便,但它并不是一个好的安全实践。 因此,在下一节中,您将学习如何通过创建具有特殊权限的新用户来避免此问题。

创建 MariaDB 超级管理员用户

ERPNext 期望使用 MariaDB 的 root 用户来管理数据库连接,但这并不总是理想的。 要克服此限制并让非 root 用户管理 MariaDB,您必须手动创建一个以该用户命名的数据库。 然后,您将能够为新用户分配特殊权限以驱动 ERPNext 数据库操作。

打开 MariaDB 提示符:

sudo mysql

现在创建一个以您要为 MariaDB 连接分配的用户命名的新数据库。 本教程将使用 sammy 但您可以自由选择自己的名称:

CREATE DATABASE sammy;

确认数据库是使用以下 SQL 语句创建的:

SHOW DATABASES;

您将看到与此类似的输出:

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

现在创建具有与 root 类似权限的 MariaDB 用户 sammy,然后为用户提供您选择的强密码。 将密码保存在安全的地方; 稍后您将需要它:

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

现在确认用户创建和新用户的权限:

SELECT host, user, Super_priv FROM mysql.user;

你会看到这样的输出:

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

现在刷新权限以应用所有更改:

FLUSH PRIVILEGES;

完成后,退出会话:

exit

现在您已经创建了一个数据库用户,您只需要微调 MariaDB 以确保正确的 ERPNext 12 操作。 幸运的是,ERPNext 团队提供了一个出色的配置模板,您可以将其用作实施的起点。 在下一节中,您将学习如何使用该模板正确配置 MariaDB 数据库。

第 4 步 — 为 ERPNext 配置 MariaDB

安装并保护 MariaDB 后,是时候针对 ERPNext 连接对其进行微调了。

首先,停止mariadb.service

sudo systemctl stop mariadb

现在使用 nano 或您喜欢的文本编辑器创建一个名为 settings.cnf 的 MariaDB 配置文件:

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

现在添加 ERPNext 的配置模板:

/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/

保存并关闭文件。 有关这些配置的更多详细信息, 在 ERPNext 的 Github 存储库 上查看此模板文件。 这是探索这些选项的有用起点。

接下来,创建另一个名为 erpnext.cnf 的文件:

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

将以下内容添加到文件中:

/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

第一个文件 /etc/mysql/conf.d/settings.cnf 补充并覆盖了位于 /etc/mysql/my.cnf 的默认 MariaDB 配置中包含的一些值。 该文件为您提供了一个精心设计的模板,可大大提高 ERPNext 的数据库性能。 请记住,虽然这个模板是一个很好的起点,但没有什么能阻止您通过调整这些参数以满足您的需求来进一步提高 MariaDB 的性能。

第二个文件 /etc/mysql/mariadb.conf.d/erpnext.cnf 还通过引入有关数据库连接的特定信息来覆盖某些值。

测试 MariaDB 连接

由于 ERPNext 几乎所有内部操作都依赖于数据库连接,因此在继续之前测试连接是个好主意。

开始mariadb.service

sudo systemctl start mariadb

要测试连接,您可以使用以下命令。 请记住用您自己的凭据替换 sammymariadb_password

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

您将看到显示 MariaDB 基本帮助内容和几个参数的输出。 这意味着您的连接成功:

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

如果您需要对 MariaDB 的设置进行任何调整或修复任何错误,请记住使用以下命令重新加载服务:

sudo systemctl restart mariadb

完成后,启用 MariaDB:

sudo systemctl enable mariadb

现在您已经测试了数据库连接,您可以继续安装 ERPNext 应用程序。

第 5 步 — 设置 ERPNext 12

现在您的数据库后端已准备就绪,您可以继续设置您的 ERPNext Web 应用程序。 在本节中,您将学习如何安装和配置 ERPNext 12 所需的所有组件,然后安装应用程序本身。

首先为服务器准备 ERPNext 12 所需的所有系统包。 使用以下命令安装系统范围的依赖项:

 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

DEBIAN_FRONTEND=noninteractive 变量已传递给安装命令,以避免出现 Postfix 提示。 有关 Postfix 配置的详细信息,请阅读我们关于 如何在 Ubuntu 18.04 上安装和配置 Postfix 的指南

接下来,更新 pip3,然后安装 ERPNext 所需的三个额外 Python 模块的最新版本:

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

现在您已经安装了所有必要的全局依赖项,现在您将安装 ERPNext 12 所需的所有服务和库。

设置 Node.js 和 Yarn

ERPNext 12 可以与 8+ 版本的 Node.js 服务器环境一起使用。 事实上,在撰写本文时,官方的 ERPNext easy_install 脚本使用的是 Node 8。 但从安全角度来看,建议安装更新版本,因为 Node 8 已于 2020 年达到其生命周期 (EOL),因此不会再收到任何安全补丁。 就本指南而言,Node.js 版本 12 LTS 将与相应的 npmyarn 包管理器一起安装。 请注意,Frappe 框架使用 yarn 来安装依赖项。 如果您决定使用替代安装方法,请确保您最终在系统中运行 yarn 的 1.12+ 版本。

将 NodeSource 存储库添加到您的系统:

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

现在您可以检查下载脚本的内容:

sudo nano nodesurce_setup.sh

满意后,您可以运行脚本:

sudo bash nodesource_setup.sh

此脚本将自动更新 apt 列表。 现在您可以在您的服务器上安装 nodejs

sudo apt install nodejs

接下来,使用包含的 npm 包全局安装 yarn

sudo npm install -g yarn

现在您已经安装了 Node,您可以继续为您的平台配置 wkhtmltopdf

ERPNext 使用 wkhtmltopdf 开源工具,使用 Qt WebKit 渲染引擎将 HTML 内容转换为 PDF。 此功能主要用于打印发票、报价单和其他报告。 在 ERPNext 12 的情况下,需要特定版本的 wkhtmltopdf,带有修补 Qt 的 0.12.5

要安装 wkhtmltopdf,首先切换到合适的目录下载包,在本例中为 /tmp

cd /tmp

从项目页面下载适用于 Ubuntu 18.04 的 wkhtmltopdf 版本和软件包:

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

现在使用 dpkg 工具安装软件包:

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

接下来,将所有相关的可执行文件复制到您的 /usr/bin/ 目录:

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

文件到位后,更改其权限以使其可执行:

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

现在 wkhtmltopdf 已正确安装,我们将把 Redis 添加到我们的数据库堆栈中。

安装 Redis

ERPNext 12 使用 Redis 来增强 MariaDB 的性能。 具体来说,它协助缓存

首先,从官方 Ubuntu 18.04 存储库安装 Redis:

sudo apt install redis-server

然后在启动时启用 Redis:

sudo systemctl enable redis-server

现在您已将 Redis 添加到您的堆栈中,让我们花点时间总结一下您到目前为止所完成的工作。 至此,您已经安装了 ERPNext 12 所需的所有主要组件,其中包括:

  • MariaDB 数据库后端
  • Node.js JavaScript 服务器环境
  • Yarn 包管理器
  • Redis 数据库缓存
  • wkhtmltopdf PDF 文档生成器

无论您是为开发或生产安装 ERP 系统,您现在都已准备好进行下一步,即安装 Frappe 全栈框架和实际的 ERPNext 12 Web 应用程序。

第 6 步 — 安装 Frappe Bench CLI

现在您已经安装了 ERPNext 的所有堆栈要求,您可以释放 Frappe 的 bench 命令行实用程序的灵活性。 bench CLI 旨在帮助用户安装、设置和管理基于 Frappe 框架的 ERPNext 等应用程序。 在接下来的部分中,您将安装 bench CLI,然后使用它来完成设置 ERPNext 12 的过程。

确保 Frappe 用户(在本例中为 sammy)对其 home 目录具有适当的权限:

sudo chown sammy -R /home/sammy

现在将 frappe/bench 存储库克隆到您的主目录。 请记住将 sammy 替换为您的系统用户名:

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

安装 bench CLI:

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

本指南假设您正在为测试/生产场景安装 ERPNext 12,因此您正在使用 master 分支。 但是,如果您打算开发应用程序或自定义 ERPNext 模块,那么 develop 分支可能是更好的选择。 无论哪种情况,您现在都已准备好安装 Frappe 框架。 这将是安装 ERPNext 本身之前的最后一步。

设置 Frappe 框架环境

在本节中,您将使用 bench CLI 创建一个 Frappe 环境

在 Frappe 的安装过程中,您可能会超过 Ubuntu 的文件监视限制,默认设置为 8192。 为避免此问题,请使用以下命令设置更高的限制:

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

接下来,初始化 Frappe Framework 12。 将 Sammy 替换为您的系统用户名:

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

在执行期间,您可能会看到一个关于您的路径的错误,以及几个警告。 让这个过程一直持续到最后。 完成后,您将看到类似于以下的输出,表明您的环境已成功创建:

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

注意: 如果遇到 spawn ENOMEM 错误,bench init 进程可能会停止。 当您的系统内存不足时会导致此错误。 在继续之前,您必须通过安装更多物理内存或分配 SWAP 空间来解决此问题。


让我们仔细看看用于创建环境的命令:

  • /home/sammy/frappe-bench 是 Frappe 框架、网站和相关应用程序的安装路径。 将创建一个新目录,在此示例中称为 frappe-bench,以容纳所有必要的文件。
  • --frappe-path 指向 Frappe 存储库,在本例中是官方 Github 存储库。
  • --frappe-branch 是要安装的 Frappe 版本。 因为要安装 ERPNext 12,所以选择的版本是 Frappe 12。
  • --python 是要使用的 Python 版本。 ERPNext 12 需要 Python 3.6+。 然而,之前的版本仍然使用 Python 2.7。

有关 bench CLI 命令的更多信息,请参阅 Bench 命令备忘单

Frappe 框架提供的灵活性远远超出了使用隔离环境的范围。 您还可以创建不同的网站并将应用程序安装到其中。

第 7 步 — 安装 ERPNext 12 Web 应用程序

在本节中,您将建立一个基于 Frappe 的站点,然后在其上安装 ERPNext 12 应用程序。

切换到初始化 Frappe 的目录。

cd /home/sammy/frappe-bench

现在使用 bench CLI 从其存储库下载 ERPNext 12:

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

接下来,创建新站点,将 your_domain 替换为与此服务器 IP 关联的域:

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

让我们花点时间回顾一下上面命令中使用的选项:

  • bench new-site 基于 Frappe 框架创建一个新站点。
  • your_domain 是新站点的名称。 确保您的域的 DNS 具有指向您服务器 IP 的 A 记录。
  • erpnext_admin_password 是 ERPNext 的 Administrator 用户所需的密码。 将此密码保存在安全的地方——您很快就会需要它。
  • mariadb_password 是您在指南开头为 MariaDB 用户 sammy 创建的密码。

在此之后,将 ERPNext 应用程序安装到站点上:

bench --site your_domain install-app erpnext

安装完成后,您将拥有一个正常工作的 ERPNext 12 应用程序。 现在让我们使用 bench 命令对其进行测试:

bench start

以上将启动一个实时监控控制台,向您显示有关网络服务器和其他服务的各种消息。 打开 Web 浏览器并导航到 localhost:8000(用于本地安装)或 your_domain:8000(如果您使用远程服务器)。 您将看到 ERPNext 登录屏幕(我们将在后续步骤中继续登录和设置,一旦我们的网站准备好生产)。

访问您的测试部署后,返回您的终端并按 CTRL+C。 这将停止 ERPNext 并退出监控控制台。

如果您的主要目标是创建模块或修改 ERPNext 12,那么您可以在此停止。 开发目的不需要更多组件。 但是,如果您需要的是不需要手动初始化的生产就绪系统,那么您将需要安装和配置一些额外的组件。 这是你的下一步。

第 8 步 — 为生产设置 ERPNext 12

尽管 ERPNext 12 应用程序已准备就绪,但整个系统还没有完全准备好投入生产。 为确保 ERPNext 的可靠性和安全性,您需要启用一些附加服务:

  • Fail2ban 提供额外的保护层,防止来自恶意用户和机器人的蛮力尝试。
  • Nginx 将主要用作 Web 代理,将所有流量从端口 8000 重定向到端口 80 (HTTP) 或端口 443 (HTTPS)
  • Supervisor 此服务确保 ERPNext 关键进程不断启动并运行,并在必要时重新启动它们。

到目前为止,您已经手动安装和配置了 ERPNext 12,这允许您自定义流程以匹配任何特定的用例。 不过,对于其余的生产设置,您可以利用 bench CLI 的便利性,让它自动安装和配置这些剩余服务。

确保您位于 Frappe 工作目录中:

cd /home/sammy/frappe-bench

现在使用以下命令完成为生产设置 ERPNext 12:

sudo bench setup production sammy --yes

以上将安装和配置 Nginx、Supervisor 和 Fail2Ban 并将 sammy 设置为生产环境所有者。

bench命令创建的配置文件有:

  • 两个 Nginx 配置文件位于 /etc/nginx/nginx.conf/etc/nginx/conf.d/frappe-bench.conf
  • 一个位于 /etc/fail2ban/jail.d/nginx-proxy.conf 的 Fail2Ban 代理监狱和一个位于 /etc/fail2ban/filter.d/nginx-proxy.conf 的过滤器

这些默认配置足以满足本教程的需要,但您应该随意探索和调整这些文件以符合您自己的要求。 您可以通过运行停止所有服务:

sudo supervisorctl stop all

然后,一旦你准备好了,你可以重新启动你的服务:

sudo supervisorctl start all

现在您已准备好测试您的安装。

测试您的 ERPNext 12 安装

首先,使用以下 systemctl 命令验证关键生产服务是否正在运行,然后将其通过管道传输到 grep

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

你会看到这样的输出:

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

在确认一切都按预期工作后,您可以在您的服务器上实时测试 ERPNext 12。 打开您喜欢的浏览器并导航到您托管 ERPNext 12 应用程序的域。

几秒钟后,您应该会看到 ERPNext 12 登录屏幕。 使用 Administrator 作为用户名,使用您之前创建的 erpnext_admin_password 作为密码。

在下一个屏幕中,您将看到一个下拉菜单,您可以在其中选择应用程序的 UI 语言:

选择语言后,ERPNext 将提示您有关您的国家、时区和货币:

完成区域信息后,您将能够创建第一个 ERPNext 用户。 您提供的信息将用作用户的登录凭据。

在下一个屏幕中,将询问您 ERPNext 调用 Domains 的内容。 如果您不确定您的域是什么,请选择 Distribution 并单击 Next 按钮。

接下来,您需要提供公司名称和缩写。

在最后一个屏幕上,ERPNext 将询问您公司的业务、银行名称、会计科目表的类型以及会计年度期间。 稍后您将能够输入其他银行。 现在,根据需要填写所有字段,然后单击 完成设置 按钮。

接下来,您将看到一个进度条。

设置过程完成后,将出现 ERPNext 12 主仪表板。

您现在已经完全安装并配置了一个 ERPNext 12 应用程序。

结论

现在您已经正确安装了 ERPNext 12 应用程序,您可能希望开始实施该系统以满足您的业务需求。 一个好的起点是单击 ERPNext Dashboard 上的 Getting Started 按钮。 然后,ERPNext 将帮助您配置平台以满足您的所有业务和电子商务需求。

您可能还希望提高 ERPNext 的速度。 如果是这种情况,那么您可以阅读 ERPNext Performance Tuning,它将指导您完成最佳实践以及如何调试与性能相关的问题。