如何在 Ubuntu 22.04 上安装 ERPNext 14

 

介绍

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

  • 通过自动化重复的业务流程提高生产力

  • 通过为公司内的所有部门共享数据库来提高 IT 效率

  • 凭借对业务单位如何相互关联的整体愿景,做出更好的决策

ERPNext 基于Frappe,这是一个用Python编写的全栈 Web 应用程序框架,它充分利用了Node/JavaScript 运行时环境,并使用MariaDB作为其后端数据库。基于 Frappe 的应用程序(如ERPNext)的众多优势之一是工作台命令行实用程序。bench CLI 通过自动执行安装、更新、配置和管理多个 Frappe/ERPNext 站点等任务,为管理员节省了时间。在本教程中,您将在一台运行 Ubuntu 22.04 的服务器上安装和配置 ERPNext 堆栈。这将允许您根据需要为各种开发或生产环境配置堆栈,并为构建更复杂的容错架构做好准备。

先决条件

  • 一台 Ubuntu 22.04 服务器,至少有 4 GB 的 RAM 和一个非 root sudo 用户。

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

  • 带有 A 记录的完全注册的域名指向您的服务器。

Python 3.10+ (version 14)
Node.js 16
Redis 6.0.x+ (缓存和实时更新)
MariaDB 10.3.x+ (运行数据库驱动的应用程序)
yarn 1.12+ (js依赖管理器)
pip 20+ (py依赖管理器)
wkhtmltopdf (用于生成 pdf)
cron (bench的计划作业:自动证书更新、计划备份)
NGINX (在生产中代理多租户站点)

步骤 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 – 修改安装源

1.备份


sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

2.修改


sudo vim /etc/apt/sources.list

3.按ggVG进行全选,按d进行删除4.将下面源粘贴5.按esc,再按shift+:,输入wq回车(这步是保存退出)


deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse

6.将pip源配置为国内源(root用户和安装erpnext的用户都分别配置)


sudo mkdir ~/.pip
sudo vim ~/.pip/pip.conf

添加pip源


[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=mirrors.tuna.tsinghua.edu.cn

步骤 3 – 配置时区、时间

强烈建议您为控制台配置键盘映射以及主机上的语言和字符编码。这是避免 ERPNext 14 安装过程中可能出现的问题所必需的。请注意,此配置与您实际 ERPNext 平台上的 UI 语言无关,而与系统区域设置有关。首先,更新您的服务器:

sudo apt-get update -y
sudo apt-get upgrade -y
#如果报错,请切换到root

修改时区和时间


#根据您所在的地区设置正确的时区
sudo timedatectl set-timezone "Asia/Shanghai"
#设置时间
sudo date -s "20240210 15:18:29"
#写入cmos硬件时钟
sudo hwclock --systohc
#查看执行结果
sudo date -R

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


sudo reboot

给您的服务器几分钟重启时间,然后使用 ssh 它重新进入您的实例。您现在已准备好安装数据库。

步骤 4 – 安装 MariaDB

现在您要将 MariaDB 添加到您的服务器堆栈中。ERPNext 14 需要 MariaDB 10.3+ 才能正常运行。由于Ubuntu 22.04 在其官方存储库中包含的是 MariaDB 10.6,您可以使用以下 apt 命令安装此版本10.6:


sudo apt-get install wget software-properties-common
#安装10.6
sudo apt install -y mariadb-server mariadb-client
#检查 MariaDB 是否已正确安装
mariadb --version

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


sudo apt install -y python3-mysqldb libmysqlclient-dev

ERPNext 14 是一个 Python 应用程序,因此它需要 python3-mysqldb 用于数据库管理的库。libmysqlclient-dev 需要访问某些 MariaDB 开发人员功能。接下来,通过运行 mysql_secure_installation 脚本为 MariaDB 服务器添加额外的安全层:


sudo mysql_secure_installation

该 mysql_secure_installation 脚本将提示您几个问题:

  • 第一个提示会询问您root密码,但由于尚未配置密码,请按 ENTER 。

  • 接下来,当被问及更改 MariaDB root密码时,请回答 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 连接分配的用户命名的新数据库。本教程将使用, frappe 但您可以选择不同的名称:


CREATE DATABASE frappe;

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


SHOW DATABASES;

您将看到类似于以下内容的输出:


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

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


#mariadb_password是你要替换的实际密码
GRANT ALL PRIVILEGES ON *.* TO 'frappe'@'%' IDENTIFIED BY 'mariadb_password' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'frappe'@'%' IDENTIFIED BY 'B1asdf' WITH GRANT OPTION;

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


SELECT host, user, Super_priv FROM mysql.user;

你会看到这样的输出:


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

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


FLUSH PRIVILEGES;

完成后,退出会话:


exit;

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

步骤 5 – 为 ERPNext 配置 MariaDB

安装并保护 MariaDB 后,是时候针对 ERPNext 连接对其进行微调了。首先,停止 mariadb.service :


sudo systemctl stop mariadb

在文本编辑器中打开文件:/etc/mysql/my.cnf


sudo vim /etc/mysql/my.cnf

#添加以下代码。然后保存文件并退出文本编辑器:
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
innodb_read_only_compressed = FALSE
[mysql]
default-character-set = utf8mb4

保存并关闭文件。重启


sudo service mysql restart

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


sudo systemctl start mariadb

要测试连接,您可以使用以下命令。请记住用您的凭据替换 frappe 和 mariadb_password :

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

mysql --user frappe --password B1asdf --host=localhost --protocol=tcp --port=3306 test


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 应用程序。

步骤 6 — 设置 ERPNext 14

现在您的数据库后端已准备就绪,您可以继续设置您的 ERPNext Web 应用程序。在本节中,您将学习如何安装和配置 ERPNext 14 所需的所有组件,然后安装应用程序本身。首先为服务器准备 ERPNext 14 所需的所有系统包。使用以下命令安装系统范围的依赖项:

sudo apt install -y python3.10-dev python3.10-venv python3-pip python3-testresources xvfb libfontconfig virtualenv supervisor


接下来,更新 pip3 ,这是 Python 的标准包管理器,然后安装三个附加 Python 模块的最新版本:

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


setuptools 有利于Python包的安装和升级, cryptography 增加了加密功能,你的筹码,并 psutil与系统监控设备。现在您已经安装了所有必要的全局依赖项,现在您将安装 ERPNext 14 所需的所有服务和库。

设置 Node.js 和 Yarn

对于本指南,Node.js的版本16 LTS将安装沿与相应的 npm 和 yarn 包管理器。请注意,Frappe 框架使用 yarn 安装依赖项。如果您决定使用其他安装方法,请确保最终 yarn 在您的系统中运行1.12+ 版本。将 NodeSource 存储库添加到您的系统:

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


运行脚本以使用apt包管理器配置 NodeSource 存储库:

sudo bash nodesource_setup.sh


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

sudo apt install nodejs -y


接下来, yarn 使用 npm 包管理器全局安装:

sudo npm install -g yarn -y
#升级
sudo npm install -g npm@8.16.0
#查看源
yarn config get registry
#设置一下淘宝的源
yarn config set registry https://registry.npm.taobao.org --global
// 更换国内源
yarn config set registry https://registry.npmmirror.com
// 恢复官方源
yarn config set registry https://registry.yarnpkg.com
// 删除注册表
yarn config delete registry

npm config set registry https://mirrors.cloud.tencent.com/npm/
npm config set registry https://registry.npmmirror.com


现在您已经安装了 Node,您可以继续 wkhtmltopdf 为您的平台进行配置。ERPNext 使用 wkhtmltopdf 开源工具使用 Qt WebKit 渲染引擎将 HTML 内容转换为 PDF。此功能主要用于打印发票、报价单和其他报告。

sudo apt-get -y install wkhtmltopdf
#解决通过打印转PDF时出现乱码
sudo apt-get install ttf-wqy-zenhei -y
sudo apt-get install ttf-wqy-microhei -y


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

安装Redis

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

sudo apt install -y redis-tools redis-server


然后在启动时启用Redis:

sudo systemctl enable redis-server


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

  • MariaDB 数据库后端

  • Node.js JavaScript 服务器环境

  • Yarn 包管理器

  • Redis 数据库缓存

  • 该 wkhtmltopdf PDF文件生成器

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

步骤 7 — 安装 Frappe Bench CLI

现在您已经安装了 ERPNext 的所有堆栈要求,您可以释放 Frappe bench 命令行实用程序的灵活性。该bench CLI的目的是协助用户在安装的过程中,建立和管理是基于该框架冰沙一样ERPNext应用的目的。在接下来的部分中,您将安装 bench CLI,然后使用它来完成设置 ERPNext 14 的过程。确保 Frappe 用户(在本例中 frappe )对其 home 目录具有适当的权限:

sudo chown frappe -R /home/frappe
sudo chmod 755 /home/frappe


安装 bench CLI:

# 安装bench
sudo -H pip3 install frappe-bench
#或者指定版本
sudo -H pip3 install frappe-bench==5.6.0


本指南假设您正在为测试/生产场景安装 ERPNext 14,因此您正在使用该 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 14. 将 Frappe替换为您的系统用户名:

bench init /home/frappe/frappe-bench --frappe-path https://gitee.com/mirrors/frappe --frappe-branch version-14 --python python3


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

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


注意: bench init 如果 spawn ENOMEM 遇到错误,该过程可能会停止。当您的系统内存不足时会导致此错误。您必须在继续之前解决问题,方法是安装更多物理内存或分配 SWAP 空间。让我们仔细看看用于创建环境的命令:

  • /home/frappe/frappe-bench 是 Frappe 框架、网站和相关应用程序的安装路径。 frappe-bench 将创建一个新目录(在本例中称为)以容纳所有必需的文件。

  • --frappe-path 指向 Frappe 存储库,在本例中是官方 Github 存储库。

  • --frappe-branch 是要安装的 Frappe 版本。因为要安装ERPNext 14,所以选择的版本是Frappe 14。

  • --python 是将使用的 Python 版本。ERPNext 14 需要 Python 3.10+。

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

步骤 8 — 安装 ERPNext 14 Web 应用程序

在本节中,您将设置一个基于 Frappe 的站点,然后在其上安装 ERPNext 14应用程序。切换到 Frappe 初始化的目录。

cd /home/frappe/frappe-bench


使用命令行下载 ERPNext:

bench get-app ERPNext https://gitee.com/mirrors/erpnext --branch version-14
bench get-app ERPNext https://github.com/frappe/erpnext --branch version-14


运行以下命令以安装任何缺少的依赖项:

bench setup requirements


为您的 ERPNext 安装创建一个新站点。确保根据需要替换命令中的参数:

#替换a_secure_erpnext_admin_password,your_mariadb_root_password两个为你当时设置的密
码
bench new-site your_domain --admin-password 'erpnext_admin_password' --mariadb-root-username frappe --mariadb-root-password 'mariadb_password'
bench new-site bts.local --admin-password 'B1asdf' --mariadb-root-username frappe --mariadb-root-password 'B1asdf'


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

  • bench new-site 创建一个基于 Frappe 框架的新站点。

  • your_domain 是新站点的名称。确保您的域的 DNS 具有指向您服务器 IP 的 A 记录。

  • erpnext_admin_password 是 ERPNext 的管理员用户所需的密码。将此密码保存在安全的地方——您很快就会用到它。

  • mariadb_password 是您在指南开头为 MariaDB 用户创建的密码 frappe 。

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

#下载付款应用程序。此应用程序在 ERPNext 安装过程中是必需的
#your_domain你的站点名称
bench --site your_domain install-app erpnext
bench --site bts.local install-app erpnext
bench get-app payments
bench --site bts.local install-app payments
bench get-app hrms https://github.com/frappe/hrms.git --branch version-14
bench --site bts.local install-app hrms



设置默认站点:

#your_domain你的站点名称
bench use your_domain
bench use bts.local


安装完成后,您将拥有一个可运行的 ERPNext 14 应用程序。现在让我们使用 bench 命令来测试它:

bench start


以上将启动一个实时监控控制台,向您显示有关网络服务器和其他服务的各种消息。打开 Web 浏览器并导航到 localhost:8000 (对于本地安装)或 your_domain:8000 (如果您使用的是远程服务器)。您将看到 ERPNext 登录屏幕(我们将在稍后的步骤中继续登录和设置,一旦我们的网站准备好生产)。访问您的测试部署后,返回到您的终端并按 CTRL+C 。这将停止 ERPNext 并退出监控控制台。如果您的主要目标是创建模块或修改 ERPNext 14,那么您可以在此时停止。不再需要用于开发目的的组件。但是,如果您需要的是不需要手动初始化的生产就绪系统,那么您将需要安装和配置一些额外的组件。这是你的下一步。

步骤 9 — 为生产设置 ERPNext 14

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

  • Fail2ban提供了额外的保护层,防止来自恶意用户和机器人的蛮力尝试。

  • Nginx主要用作 Web 代理,将所有流量从端口重定向 8000 到端口 80 (HTTP) 或端口 443 (HTTPS)

  • Supervisor确保 ERPNext 的关键流程不断启动和运行,并在必要时重新启动它们。

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

cd /home/frappe/frappe-bench


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

# 启用调度程序服务
bench --site bts.local enable-scheduler
#禁用维护模式
bench --site bts.local set-maintenance-mode off
#如果出现We are sorry!,reboot,然后重新运行下面的命令
sudo bench setup production frappe


以上将安装和配置 Nginx、Supervisor 和 Fail2Ban 并设置 frappe 为生产环境所有者。该 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 14 安装首先,验证关键生产服务是否正在运行。使用以下 systemctl 命令,然后将其通过管道传输到 grep :

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



你会看到这样的输出:

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


确认一切正常后,您可以在您的服务器上实时测试 ERPNext 14。打开您最喜欢的浏览器并导航your_domain或您托管 ERPNext 14 应用程序的任何位置。几秒钟后,您应该会看到 ERPNext 14 登录屏幕。使用管理员作为用户名(电子邮件)和erpnext_admin_password 您之前创建的密码。

步骤 10— 安装中文语言包

ERPNext中文语言包,支持13版本和14版本,斐浦软件出品。 此中文语言包,是为ERPNext用户提供一个样例,用户可以自行修改词条; 已收录的词条仅为参考可能会持续更新,非斐浦软件商业项目所用词

安装步骤

cd frappe-bench
bench get-app --branch version-14 https://gitee.com/phipsoft/zh_chinese_language.git
bench --site bts.local install-app zh_chinese_language
bench clear-cache && bench clear-website-cache
sudo supervisorctl restart all


升级步骤

cd frappe-bench
bench update --apps zh_chinese_language --pull --reset
bench clear-cache && bench clear-website-cache
sudo supervisorctl restart all





使用方法大家可以先Fork这个仓库,安装后,自行修改,修改词条后Upload自己的仓库,这样升级就是自己最新修改的;修改方法:1)Python词条:可以修改zh.csv文件;2)JS词条:可以修改translation.js文件;如果本地有修改,在系统升级前建议先上传,否则系统升级后就丢失了;许可MIT

步骤 11--自签名配置ssl

要为Nginx服务器生成自签名的SSL证书,你可以使用OpenSSL工具按照以下步骤操作:

1、生成私钥(key):

openssl genrsa -out nginx.key 2048


这个命令会生成一个2048位的RSA私钥,并保存在nginx.key文件中。

2、创建证书签名请求(CSR):

openssl req -new -key nginx.key -out nginx.csr


执行这个命令时,OpenSSL会提示你输入一些信息,这些信息将被写入到CSR中。这些信息包括国家、组织、通用名称(通常是你的域名)等。对于“Common Name (e.g. server FQDN or YOUR name)”,输入你想要证书保护的域名或IP地址。

3、自签名证书:

openssl x509 -req -days 365 -in nginx.csr -signkey nginx.key -out nginx.crt


这个命令使用前面生成的私钥nginx.key来签名CSR,生成自签名的SSL证书nginx.crt,证书有效期为365天。

4、配置Nginx:

sudo vim /etc/nginx/conf.d/frappe-bench.conf

    root /home/jack/frappe-bench/sites;

    ssl_certificate   /etc/nginx/conf.d/ssl/nginx.crt;

    ssl_certificate_key /etc/nginx/conf.d/ssl/nginx.key;

    ssl_session_timeout 5m;

    ssl_session_cache shared:SSL:10m;

    ssl_session_tickets off;

    ssl_stapling on;

    ssl_stapling_verify on;

    ssl_protocols TLSv1.2 TLSv1.3;

    ssl_ciphers EECDH+AESGCM:EDH+AESGCM;

    ssl_ecdh_curve secp384r1;

    ssl_prefer_server_ciphers on;


5、重启Nginx:

配置完成后,保存并关闭配置文件,然后重启Nginx以使更改生效。根据你的操作系统和Nginx的安装方式,可以使用以下命令之一:

sudo service nginx restart
sudo service nginx reload



或者

sudo systemctl restart nginx



现在,Nginx服务器应该已经配置好了自签名的SSL证书,并且可以通过HTTPS访问了。请注意,自签名证书在浏览器中会显示为不受信任,因为它们不是由受信任的证书颁发机构(CA)签发的。在生产环境中,建议使用由受信任CA签发的证书。

步骤12-设置ubuntu固定ip

1、查看网卡信息

jack@jack-NV49C:~$ ifconfig

wlp4s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.2  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 2409:8a62:441c:1010:ed17:27f7:1d19:e744  prefixlen 64  scopeid 0x0<global>
        inet6 2409:8a62:441c:1010:7109:fac6:b901:10b4  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::c4ce:bf1a:23c0:2cbd  prefixlen 64  scopeid 0x20<link>
        ether 1c:65:9d:d5:3d:04  txqueuelen 1000  (Ethernet)
        RX packets 396309  bytes 495535459 (495.5 MB)
        RX errors 0  dropped 2  overruns 0  frame 0
        TX packets 260656  bytes 128608826 (128.6 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0



第二步:配置网卡文件

编辑 sudo vim /etc/netplan/01-network-manager-all.yaml

# Let NetworkManager manage all devices on this system
network:
  version: 2
  #renderer: NetworkManager
  ethernets:
    wlp4s0: #配置的网卡名称,使用ifconfig -a查看得到
      dhcp4: no #dhcp4关闭
      dhcp6: true #dhcp开启
      addresses: [192.168.1.4/24, ] #设置本机IP及掩码
      gateway4: 192.168.1.1 #设置网关
      optional: true # 必须要有,不然sudo netplan apply后,不生效
      nameservers:
        addresses: [11.255.255.253, 11.255.255.254, 0.0.0.0] #设置DNS # dns来自路由器,中国移动                                                                      


  • 使用命令,使静态ip生效。

$ sudo netplan apply


  • 编辑网络配置文件之前,使用ifconfig命令查看配置情况,如果配置成功上图中ip会变成自己设置的ip。

jack@jack-NV49C:~$ ifconfig
wlp4s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.4  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 2409:8a62:441c:1010:1e65:9dff:fed5:3d04  prefixlen 64  scopeid 0x0<global>
        inet6 2409:8a62:441c:1010:ed17:27f7:1d19:e744  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::c4ce:bf1a:23c0:2cbd  prefixlen 64  scopeid 0x20<link>
        ether 1c:65:9d:d5:3d:04  txqueuelen 1000  (Ethernet)
        RX packets 11095  bytes 926503 (926.5 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 5942  bytes 1110621 (1.1 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        
将ip 192.168.1.4 配置成功


重启网络服务

sudo systemctl restart system-networkd如果是桌面版:

sudo systemctl restart network-manager

问题:

问题1、

WebSocket connection to 'ws://192.168.0.108:9002/socket.io/?EIO=4&transport=websocket&sid=ktH2k2AsWl4ytar_AAAG' failed: WebSocket is closed before the connection is established

解决方法:

通过使用域名,可以解决此问题。

http://demo.com:8005/



sudo vim /etc/hosts

192.168.0.108 demo.com

# 2409:8a62:4423:b8b0:20c:29ff:fee4:a129 bts.local


问题2、Vue处于开发模式

解决方法:

bench build --production


问题3:ERROR 503: Your system is being updated. Please refresh again after a few moments

解决方法:

bench --site <site-name> set-maintenance-mode off


问题3

RGET http://192.168.0.108/socket.io/?EIO=4&transport=polling&t=OudwvPF[HTTP/1.1 502 Bad Gateway 0ms]

node apps/frappe/socketio.js


启动socketio即可。

问题4

可能是mysql挂了。

评论

此博客中的热门博文

The Economics of Soaring: Understanding Hot Air Balloon Prices

The Comprehensive Guide to Balloon Stuffing Machines