本教程适用于以下操作系统版本

  • Debian 12 (Bookworm)
  • Debian 11 (Bullseye)
  • Debian 9 (Stretch)

本页内容

  • 先决条件
  • 安装依赖项
  • 配置 MariaDB 服务器
  • 安装 Bench 命令行工具
  • 通过 Bench 安装 ERPNext
  • 为生产环境准备 ERPNext
  • 通过 Web 安装向导安装 ERPNext
  • 结束语

ERPNext 是一套开源的企业资源规划(ERP)解决方案。ERPNext 可应用于制造、分销、零售、贸易、服务、教育、非营利和医疗等多个行业。它还提供会计、CRM、销售、采购、网站、电子商务、销售点、制造、仓库、项目管理、库存及服务等模块。

ERPNext 是一个基于 GNU 通用公共许可证 v3 授权的企业级 ERP 平台。它主要使用 Python 和 JavaScript 编写,由 Frappe Technologies Pvt. Ltd. 开发。ERPNext 是构建于 frappe 框架之上的应用,该框架是一个采用 Python 和 JavaScript 的开源 Web 框架。

ERPNext 是作为 Oracle 的 NetSuite、QAD、Tython、OpenBrave 和 Odoo 等服务的替代方案而开发的。在功能方面,ERPNext 与 Odoo(前身为 OpenERP)相似。

在本教程中,我们将指导你在 Debian 12 服务器上安装 ERPNext。你将安装 ERPNext,并使用 MariaDB 数据库服务器、作为反向代理的 Nginx 以及 supervisor 进程管理器。

先决条件

开始之前,请确保你具备以下条件:

  • 一台 Debian 12 服务器。
  • 一个具有 sudo 管理员权限的非 root 用户。
  • 一个指向服务器 IP 地址的域名。

安装依赖项

ERPNext 是一款用 Python 编写的开源 ERP 和 CRM 软件。要安装 ERPNext,你必须在 Debian 服务器上安装 Python 3、MariaDB 服务器、Node.js、Yarn 包管理器、Nginx、Supervisor 进程管理器以及 Redis 等依赖项。

在第一步中,你将通过 Debian 仓库安装 ERPNext 的依赖项。随后,你还将逐一验证各项依赖,确保所有组件均已安装。

在安装依赖项之前,请执行以下 apt update 命令以刷新你的 Debian 软件包索引。

sudo apt update

现在运行以下命令来安装 ERPNext 的依赖项,包括 Python 3.11、Node.js、NPM、MariaDB 服务器、Nginx Web 服务器、Supervisor 进程管理器以及 Redis 服务器。

sudo apt install python3-dev python3-venv nodejs yarnpkg npm redis-server mariadb-server nginx supervisor fail2ban libffi-dev git python3-pip python3-testresources libssl-dev wkhtmltopdf gcc g++ make

输入 y 以继续安装。

在 Debian 12 上安装 ERPNext 开源 ERP 系统

依赖项安装完成后,请执行以下命令逐一验证各项依赖。你将通过 systemctl 命令验证部分服务,确保各服务均已运行并启用。

使用以下命令验证 MariaDB 服务器。

sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

在 Debian 12 上安装 ERPNext 开源 ERP 系统

验证 Nginx 服务,确保该服务正在运行并已启用。

sudo systemctl is-enabled nginx
sudo systemctl status nginx

在 Debian 12 上安装 ERPNext 开源 ERP 系统

现在使用以下命令验证 supervisor 进程管理器服务。

sudo systemctl is-enabled supervisor
sudo systemctl status supervisor

在 Debian 12 上安装 ERPNext 开源 ERP 系统

接着,验证 Redis,确保它可用于 ERPNext 生产环境并准备就绪。

sudo systemctl is-enabled redis-server
sudo systemctl status redis-server

在 Debian 12 上安装 ERPNext 开源 ERP 系统

接下来,使用以下命令验证 Node.js 和 NPM 的版本。

node --version
npm --version

以下输出确认已安装 Node.js v18.x 和 NPM 1.22。

在 Debian 12 上安装 ERPNext 开源 ERP 系统

最后,使用以下命令验证 wkhtmltopdf 版本。你应该可以看到已安装 wkhtmltopdf 0.12 版本。

wkhtmltopdf --version
wkhtmltoimage --version

在 Debian 12 上安装 ERPNext 开源 ERP 系统

配置 MariaDB 服务器

安装依赖项后,你需要配置 MariaDB 服务器,以确保它已为安装 ERPNext 做好准备。ERPNext 要求启用 barracuda 格式,并将默认字符集配置为 utf8mb4。你还将通过 mariadb-secure-installation 工具来加固你的 MariaDB 服务器。

执行以下 mariadb-secure-installation 命令以加固你的 MariaDB 服务器安装。

sudo mariadb-secure-installation

当被问及以下配置时,输入 Y 以应用:

  • 将本地认证切换为 unix_socket?输入 n 表示否。
  • 设置 MariaDB root 密码?输入 y,然后输入新的 MariaDB root 密码并重复确认。
  • 删除默认的匿名用户?输入 y 确认。
  • 禁止 root 用户远程登录?输入 y 确认。
  • 删除默认的 test 数据库?输入 y 确认。
  • 重新加载权限表并应用更改?输入 y 确认。

现在使用以下 nano 编辑器打开 MariaDB 服务器配置文件 /etc/mysql/mariadb.conf.d/50-server.cnf。

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

在 [mysqld] 段落中插入以下配置,以启用 barracuda 格式并将默认字符集设置为 utf8mb4。

[mysqld]
innodb-file-format=barracuda
innodb-file-per-table=1
innodb-large-prefix=1
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

完成后保存文件并退出编辑器。

接下来,使用 nano 编辑器打开文件 /etc/mysql/mariadb.conf.d/50-mysql-clients.cnf,以配置 MariaDB 客户端连接。

sudo nano /etc/mysql/mariadb.conf.d/50-mysql-clients.cnf

将以下配置添加到 [mysql] 段落中。

[mysql]
default-character-set = utf8mb4

保存并退出文件。

最后,运行以下命令以重启 MariaDB 服务器并应用新配置。

sudo systemctl restart mariadb

安装 Bench 命令行工具

Bench 是一个用于管理 Frappe 框架(包括应用和站点)的命令行工具。ERPNext 是一个基于 Frappe 框架编写的 Web 应用,你必须通过 Bench 来安装它。

完成下面的步骤,创建一个供 ERPNext 使用的新用户,然后将 Bench 工具安装到你的 Debian 系统中。

首先,执行以下命令添加新用户 frappe,输入新密码并重复确认。

sudo useradd -m -s /bin/bash frappe
sudo passwd frappe

将用户 frappe 添加到 sudo 组,使其可以执行 sudo 命令。

sudo usermod -aG sudo frappe

在 Debian 12 上安装 ERPNext 开源 ERP 系统

接下来,以新用户 frappe 身份登录,并通过 pip Python 包管理器安装 frappe-bench(即 bench)包。

su - frappe
sudo pip3 install frappe-bench --break-system-packages

在 Debian 12 上安装 ERPNext 开源 ERP 系统

安装完成 frappe-bench 后,使用以下命令进行验证。在本例中,bench 5.17 已安装到 /usr/local/bin/bench。

which bench
bench --version

在 Debian 12 上安装 ERPNext 开源 ERP 系统

通过 Bench 安装 ERPNext

在本节中,你将通过 Bench 命令行安装 ERPNext。你将初始化 Frappe 框架项目、创建一个新站点,然后下载并将 ERPNext 应用安装到 Frapper 项目。

首先,执行以下 bench 命令,将 Frappe 框架 14 初始化到 frappe-bench 目录。

bench init --python python3.11 --frappe-branch version-14 frappe-bench

你应该在下方看到 Frappe 框架开始安装。

在 Debian 12 上安装 ERPNext 开源 ERP 系统

初始化完成后,你应该会看到以下输出:

在 Debian 12 上安装 ERPNext 开源 ERP 系统

现在运行以下命令,以允许用户执行 Frappe 框架。这将允许 www-data 等用户组执行 Frappe 框架。

sudo chmod -R o+rx /home/frappe/frappe-bench

接下来,进入 Frappe 框架安装目录 ~/frappe-bench,并创建一个新站点 erp.howtoforge.local。

cd ~/frappe-bench
bench new-site erp.howtoforge.local --admin-password 'erpadmin' --mariadb-root-username root --mariadb-root-password 'password'

以下是创建新站点后你将看到的输出。

在 Debian 12 上安装 ERPNext 开源 ERP 系统

通过执行以下 bench 命令切换到新站点 erp.howtoforge.local。

bench use erp.howtoforge.local

切换后,你应该会看到输出 Current Site set to erp.howtoforge.local。

现在运行以下 bench 命令,下载 payments 和 next 应用。

bench get-app payments
bench get-app --branch version-14 erpnext

在 Debian 12 上安装 ERPNext 开源 ERP 系统

在 Debian 12 上安装 ERPNext 开源 ERP 系统

下载完成 erpnext 后,运行以下命令将其安装到站点 erp.howtoforge.local。这还会自动安装 payments 应用。

bench --site erp.howtoforge.local install-app erpnext

在 Debian 12 上安装 ERPNext 开源 ERP 系统

安装完成后,执行以下命令,在站点 erp.howtoforge.local 上启用调度器并禁用维护模式。

bench --site erp.howtoforge.local enable-scheduler
bench --site erp.howtoforge.local set-maintenance-mode off

在 Debian 12 上安装 ERPNext 开源 ERP 系统

至此,ERPNext 已安装完成,你接下来将通过添加 Nginx 作为反向代理、Supervisor 作为进程管理器来配置 ERPNext。

为生产环境准备 ERPNext

在此步骤中,你将通过配置 Nginx 作为反向代理、Supervisor 作为进程管理器,将 ERPNext 设置为生产环境,这些操作可以通过 Bench 自动完成。

执行以下命令以配置 ERPNext 安装。这将下载并安装 Ansible,然后自动将 Nginx 配置为反向代理、将 Supervisor 配置为进程管理器。

sudo pip3 install ansible --break-system-packages
sudo bench setup production frappe

以下是为你的 ERPNext 安装自动配置 Nginx 和 Supervisor 的过程。

在 Debian 12 上安装 ERPNext 开源 ERP 系统

如果出现错误,你也可以使用以下命令来配置 Nginx 和 Supervisor。

sudo bench setup supervisor
sudo bench setup nginx
sudo bench setup production frappe

接下来,重启 Nginx 和 Supervisor 服务,以确保应用了新的更改。

sudo systemctl restart nginx supervisor

现在运行以下命令验证 Nginx 服务,确保其正在运行。

sudo systemctl status nginx

以下输出表明 Nginx 正在运行。

在 Debian 12 上安装 ERPNext 开源 ERP 系统

最后,执行以下 supervisorctl 命令,以通过 Supervisor 验证 ERPNext 进程列表。

sudo supervisorctl status

如果一切顺利,你应该会看到每个进程的状态均为 RUNNING。

在 Debian 12 上安装 ERPNext 开源 ERP 系统

配置好 Nginx 和 Supervisor 后,你就可以从 Web 浏览器启动你的 ERPNext 安装。

通过 Web 安装向导安装 ERPNext

打开你的 Web 浏览器,访问你的 ERPNext 安装域名,例如 http://erp.howtoforge.local/。如果你的 ERPNext 安装成功,你应该会看到 ERPNext 登录页面。

输入默认用户 Administrator 以及你设置的密码,然后点击 Login(登录)。

在 Debian 12 上安装 ERPNext 开源 ERP 系统

选择默认语言、时区、国家和货币。然后点击 Next(下一步)继续。

在 Debian 12 上安装 ERPNext 开源 ERP 系统

现在输入你的第一个 ERPNext 用户的详细信息,并点击 Next(下一步)。

在 Debian 12 上安装 ERPNext 开源 ERP 系统

最后,输入你的组织详细信息,并点击 Complete Setup(完成设置)按钮,以完成 ERPNext 安装。

在 Debian 12 上安装 ERPNext 开源 ERP 系统

如果你的安装成功,你应该会看到类似如下的 ERPNext 仪表盘:

在 Debian 12 上安装 ERPNext 开源 ERP 系统

至此,ERPNext 安装已完成。

结束语

恭喜!你已在 Debian 12 上配合 MariaDB 服务器和 Nginx Web 服务器完成了 ERPNext 的安装。你已通过 Bench 命令行在你的 Debian 服务器上安装了 ERPNext,现在你可以将 ERPNext 用作你组织的企业资源规划系统。