如何在 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挂了。
评论
发表评论