作者选择了公共利益软件来接受捐赠,作为Write for DOnations计划的一部分。
介绍
ERPNext是一个企业资源规划 (ERP) 套件,它利用了开源技术的强大功能和灵活性。它擅长管理核心业务流程,例如财务、销售、人力资源、制造、采购、服务、服务台需求等。实施像 ERPNext 这样的系统的好处包括:
- 通过自动化重复的业务流程提高生产力
- 通过为公司内的所有部门共享数据库来提高 IT 效率
- 凭借对业务单位如何相互关联的整体愿景,做出更好的决策
ERPNext 基于Frappe,这是一个用Python编写的全栈 Web 应用程序框架,它充分利用了Node/JavaScript 运行时环境,并使用MariaDB作为其数据库后端。基于 Frappe 的应用程序(如 ERPNext)的众多优势之一是工作台命令行实用程序。bench CLI 通过自动执行安装、更新、配置和管理多个 Frappe/ERPNext 站点等任务,为管理员节省了时间。
在本教程中,您将在一台运行 Ubuntu 20.04 的服务器上安装和配置 ERPNext 堆栈。这将允许您根据需要为各种开发或生产环境配置堆栈,并为构建更复杂的容错架构做好准备。
先决条件
- 一台 Ubuntu 20.04 服务器,至少有 4 GB 的 RAM 和一个非 root
sudo
用户。您可以按照我们的 Ubuntu 20.04 初始服务器设置指南来设置您的服务器和用户。
注意:选择服务器规格时,请记住 ERP 系统是资源密集型的。本指南要求一台具有 4 GB RAM 的服务器,这对于基本用例来说已经足够了,但具体的硬件要求可能会因用户数量和您的业务规模而异。
- 带有 A 记录的完全注册的域名指向您的服务器。如果您使用的是 DigitalOcean Droplet,那么您可以按照本指南正确设置您的 DNS。本教程将
your_domain
贯穿始终。
步骤 1 — 配置防火墙
尽管为开发配置防火墙是可选的,但对于生产来说,这是一项强制性的安全实践。
您需要在 ERPNext 服务器上打开以下端口:
80/tcp
和443/tcp
HTTP和HTTPS分别3306/tcp
用于 MariaDB 连接(仅在需要远程访问数据库时推荐)143/tcp
和25/tcp
IMAP和STMP分别22/tcp
对于 SSH(如果您尚未OpenSSH
在 UFW 设置中启用)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
UFW 将输出您启用的规则的列表。确保 ERPNext 的必要端口已打开:
OutputStatus: 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)
有关 UFW 配置的更多信息,请参阅我们的指南,了解如何在 Ubuntu 20.04 上使用 UFW 设置防火墙。
设置适当的防火墙是两个初步步骤中的第一步。现在您将在服务器上配置键盘映射和字符编码。
第 2 步 – 配置语言环境
强烈建议您为控制台配置键盘映射以及主机上的语言和字符编码。这是避免 ERPNext 12 安装过程中可能出现的问题所必需的。请注意,此配置与您实际 ERPNext 平台上的 UI 语言无关,而与系统区域设置有关。
首先,更新您的服务器:
- sudo apt update
现在配置键盘映射、语言和字符编码:
- sudo localectl set-keymap us && sudo localectl set-locale LANG=en_US.utf8
localectl
Ubuntu 20.04 和其他 Linux 发行版使用该实用程序在用户登录之前控制和更改系统范围的区域设置和键盘布局设置,这正是 ERPNext 12 所要求的。
您还需要将以下行添加到您的/etc/environment
文件中。使用nano
或您喜欢的文本编辑器打开文件:
- sudo nano /etc/environment
现在添加以下内容:
LC_ALL=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LANG=en_US.UTF-8
保存并关闭文件。
重新启动服务器以应用所有更改:
- sudo reboot
给您的服务器几分钟重启时间,然后使用ssh
它重新进入您的实例。您现在已准备好安装数据库。
第 3 步 – 安装 MariaDB
现在您要将 MariaDB 添加到您的服务器堆栈中。ERPNext 12 需要 MariaDB 10.2+ 才能正常运行。由于 Ubuntu 20.04 在其官方存储库中包含 MariaDB 10.3,您可以使用以下apt
命令安装此版本:
- sudo apt install mariadb-server
或者,如果更喜欢较新的 MariaDB 版本,您可以按照我们指南的第 3 步,了解如何在 Ubuntu 18.04 上安装 ERPNext Stack。这将引导您完成 MariaDB 的在线存储库向导,该向导将帮助您安装最新版本——MariaDB 10.5。
安装后mariadb-server
,安装以下软件包:
- sudo apt install python3-mysqldb libmysqlclient-dev
ERPNext 12 是一个 Python 应用程序,因此它需要python3-mysqldb
用于数据库管理的库。libmysqlclient-dev
需要访问某些 MariaDB 开发人员功能。
接下来,通过运行mysql_secure_installation
脚本为 MariaDB 服务器添加额外的安全层:
- sudo mysql_secure_installation
该mysql_secure_installation
脚本将提示您几个问题:
- 第一个提示会询问您root密码,但由于尚未配置密码,请按
ENTER
。 - 接下来,当被问及更改 MariaDB根密码时,请回答
N
。使用默认密码和 Unix 身份验证是基于 Ubuntu 的系统的推荐设置,因为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 |
+--------------------+
现在创建sammy
具有类似于root 的权限的 MariaDB 用户,然后为该用户提供您选择的强密码。将密码保存在安全的地方;稍后您将需要它:
- 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
或您最喜欢的文本编辑器创建一个名为的 MariaDB 配置文件mariadb.cnf
:
- sudo nano /etc/mysql/mariadb.conf.d/mariadb.cnf
现在添加ERPNext的官方配置模板:
[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
保存并关闭文件。有关这些配置的更多详细信息,请查看 ERPNext 的 Github 存储库上的此模板文件。这是探索这些选项的有用起点。
配置文件 ,/etc/mysql/mariadb.conf.d/mariadb.cnf
补充并覆盖了位于 的默认 MariaDB 配置中包含的一些值/etc/mysql/my.cnf
。该文件为您提供了一个精心设计的模板,可大大提高 ERPNext 的数据库性能。但是请记住,虽然这个模板是一个很好的起点,但没有什么能阻止您通过调整这些参数以满足您的需求来进一步提高 MariaDB 的性能。
测试 MariaDB 连接
由于 ERPNext 几乎所有内部操作都依赖于数据库连接,因此在继续之前测试连接是一个好主意。
开始mariadb.service
:
- sudo systemctl start mariadb
要测试连接,您可以使用以下命令。请记住用您的凭据替换sammy
和mariadb_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 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
该DEBIAN_FRONTEND=noninteractive
变量已传递给安装命令,以避免出现 Postfix 提示。有关 Postfix 配置的详细信息,请阅读我们关于如何在 Ubuntu 20.04 上安装和配置 Postfix 的指南
接下来,更新pip3
,这是 Python 的标准包管理器,然后安装三个附加 Python 模块的最新版本:
- sudo -H python3 -m pip install --upgrade setuptools cryptography psutil
setuptools
有利于Python包的安装和升级,cryptography
增加了加密功能,你的筹码,并psutil
与系统监控设备。现在您已经安装了所有必要的全局依赖项,现在您将安装 ERPNext 12 所需的所有服务和库。
设置 Node.js 和 Yarn
ERPNext 12 可以与 Node.js 服务器环境的 8+ 版本一起使用。事实上,在撰写本文时,官方 ERPNexteasy_install
脚本使用的是 Node 8。但从安全角度来看,建议安装更新的版本,因为 Node 8 将在 2020 年达到其生命周期 (EOL),因此将不会收到任何更多安全补丁。在撰写本文时,Ubuntu 20.04 包含 Node.js 版本 10.19。尽管此版本仍在维护,但出于类似原因(不到一年内 EOL),强烈建议避免使用它。对于本指南,Node.js的版本12 LTS将安装沿与相应的npm
和yarn
包管理器。请注意,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
接下来,yarn
使用npm
包管理器全局安装:
- sudo npm install -g yarn
现在您已经安装了 Node,您可以继续wkhtmltopdf
为您的平台进行配置。
ERPNext 使用wkhtmltopdf
开源工具使用 Qt WebKit 渲染引擎将 HTML 内容转换为 PDF。此功能主要用于打印发票、报价单和其他报告。在ERPNext 12的情况下,一个特定版本wkhtmltopdf
是必需的,0.12.5
以修补的Qt。
要安装wkhtmltopdf
,首先切换到合适的目录下载包,在这种情况下/tmp
:
- cd /tmp
wkhtmltopdf
从项目页面下载适用于 Ubuntu 20.04的相应版本和软件包:
- 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 的性能。具体来说,Redis 协助缓存。
首先,从官方 Ubuntu 20.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 的所有堆栈要求,您可以释放 Frappebench
命令行实用程序的灵活性。该bench
CLI的目的是协助用户在安装的过程中,建立和管理是基于该框架冰沙一样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 框架环境
在本节中,您将使用CLI创建Frappe 环境bench
。
在 Frappe 安装期间,您可能会超出 Ubuntu 的文件监视限制,默认设置为 8192。为避免此问题,请使用以下命令设置更高的限制:
- echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
该tee
命令会将您的echo
命令内容附加到被调用的文件中,同时还将输出打印到您的控制台。
接下来,初始化 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
注意:bench init
如果spawn ENOMEM
遇到错误,该过程可能会停止。当您的系统内存不足时会导致此错误。您必须在继续之前解决问题,方法是安装更多物理内存或分配 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
在继续之前,您需要安装特定版本的 Python 库numpy
并安装pandas
到 Frappe 虚拟环境中。使用以下命令安装这些软件包:
- ./env/bin/pip install numpy==1.18.5 && ./env/bin/pip install pandas==0.24.2
此时,安装可能会暂停约 10 到 20 分钟,同时显示以下消息:
Output...
Building wheel for pandas (setup.py) ... -
这与 Ubuntu 20.04相关的错误有关pandas
,在撰写本文时,该错误仍然相当新。尽管如此,这些包还是会构建,一旦它们完成,您将看到如下输出:
Output...
Successfully built pandas
Installing collected packages: pandas
Successfully installed pandas-0.24.2
现在,您可以继续安装。使用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 的管理员用户所需的密码。将此密码保存在安全的地方——您很快就会用到它。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
- 一个 Fail2Ban 代理监狱位于 ,
/etc/fail2ban/jail.d/nginx-proxy.conf
一个过滤器位于/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。打开您最喜欢的浏览器并导航your_domain或您托管 ERPNext 12 应用程序的任何位置。
几秒钟后,您应该会看到 ERPNext 12 登录屏幕。使用管理员作为用户名(电子邮件)和erpnext_admin_password
您之前创建的密码。
在下一个屏幕中,您将看到一个下拉菜单,您可以在其中选择应用程序的 UI 语言:
选择语言后,ERPNext 将提示您有关您的国家、时区和货币:
完成区域信息后,您将能够创建您的第一个 ERPNext 用户。您提供的信息将用作用户的登录凭据。
在下一个屏幕中,您将被询问 ERPNext 将什么称为Domains。如果您不确定您的域是什么,请选择分发并单击下一步按钮。
接下来,您需要提供公司名称和缩写。
在最后一个屏幕上,ERPNext 会询问您公司的业务、银行名称、会计科目表类型和会计年度期间。稍后您将能够输入其他银行。现在,根据需要填写所有字段,然后单击“完成设置”按钮。
接下来,您将看到一个进度条。
设置过程完成后,将出现 ERPNext 12 主仪表板。
您现在已经完全安装并配置了 ERPNext 12 应用程序。
结论
现在您已经正确安装了 ERPNext 12 应用程序,您可能想要开始实施该系统以满足您的业务需求。单击ERPNext 仪表板上的入门按钮是一个很好的起点。ERPNext 将帮助您配置平台以满足您的所有业务和电子商务需求。
您可能还希望提高 ERPNext 的速度。如果是这种情况,那么您可以阅读 ERPNext 性能调优,它将指导您完成最佳实践以及如何调试与性能相关的问题。