ERPNext15 安装文档&基于Linux Ubuntu 22.04 LTS服务器

ERPNext是一款开源的企业资源计划(ERP)解决方案,由总部位于孟买(印度)的 Frappé Technologies Pvt. Ltd 公司提供按需的SaaS(软件即服务)平台。ERPNext 提供了会计、销售、采购、库存、人力资源、项目、生产和维护等模块。

根据GNU GPL v3许可证授权,基于Python构建,免费开源

更新:近期,有人在 GitHub 上提供了一键安装脚本,并注有详细使用说明,所以推荐使用脚本安装。(国内服务器不适用,有网络问题)

先决条件:

系统推荐:Linux Ubuntu 22.04 LTS (必要的安全配置

建议最低配置:2 CPU | 4 GB 内存 | 20 GB 硬盘

可以通过SSH获得服务器的root权限

建议自己在腾讯云 CODING或者阿里云 云效等其他第三方代码托管平台维护一个自己的仓库

服务器配置

首先,以 root 用户身份登录服务器

配置时区和日期

注意:此步较为重要,不正确设置日期和时区,会生成错误的时间戳,对安全,计划任务,日志和审计乃至数据库等多方面造成影响。

检查服务器的当前时区:

date

根据所在地设置正确的日期和时区:

timedatectl set-timezone "Asia/Shanghai"

其中 Asia/Shanghai亚洲/上海 的意思,根据需求自行修改。

更换国内镜像源 (可选)

注意:此步仅适用于国内服务器,海外服务器可以忽略此步。另外,部分国内云服务商提供的系统已经默认进行替换。

以更换 Ubuntu 22.04 默认源为中国科技大学的国内镜像源为例,其他系统或版本请自行查阅:

编辑 /etc/apt/sources.list 文件

sudo nano /etc/apt/sources.list

将内容替换为:

# 默认注释了源码仓库,如有需要可自行取消注释
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse

deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse

deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse

deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse

Ctrl+x 离开,

询问是否保存,按 Y 保存,

Enter 回车确认文件名。

更新和升级服务器软件包

sudo apt update -y
sudo apt upgrade -y

创建新用户

为防止直接使用 root 用户而出现的各种安全问题,建议专门创建一个新用户以用于 Frappe Bench 并授予此用户管理员权限

sudo adduser [frappe-user]
usermod -aG sudo [frappe-user]
su [frappe-user]
cd /home/[frappe-user]/

注意:请将 [frappe-user] 替换为自己的用户名。例如: sudo adduser wuyanzu

安装所需的软件包

安装 Git,Python,Redis

sudo apt install git python-is-python3 python3-dev python3-pip redis-server

更换Python默认源为国内源(可选)

注意:海外服务器可以忽略此步

以更换为阿里云的国内镜像源为例:

pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/

安装 Software Properties Common

sudo apt install software-properties-common

安装 MariaDB

sudo apt install mariadb-server mariadb-client

安装完成后输入 mariadb --version 进行检查确认

安装 Redis Server

sudo apt install redis-server

安装其他必要的软件包(字体,PDF 等)

sudo apt install xvfb libfontconfig wkhtmltopdf
sudo apt install libmysqlclient-dev

配置 MySQL 服务器

设置 MySQL

sudo mysql_secure_installation

输入命令后会进入设置界面,按照以下说明进行配置即可:

  • Enter current password for root (enter for none): 输入root密码,初次安装默认没有密码,直接按 Enter 键略过
  • Switch to unix_socket authentication [Y/n]:Y 是否切换到unix套接字身份验证
  • Change the root password? [Y/n] Y 是否设置root用户密码
  • New password: 输入新密码
  • Re-enter new password: 再次输入密码
  • Remove anonymous users? [Y/n] Y 是否删除匿名用户
  • Disallow root login remotely? [Y/n] N 是否禁止root远程登录
  • Remove test database and access to it? [Y/n] Y 是否删除测试数据库
  • Reload privilege tables now? [Y/n] Y 是否立即重新加载权限表

编辑 MySQL 默认配置文件

sudo nano /etc/mysql/my.cnf

在文件底部添加如下代码:

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

[mysql]
default-character-set = utf8mb4

同样,按 Ctrl+x 离开,

询问是否保存,按 Y 保存,

Enter 回车确认文件名。

重启 MySQL 服务器

sudo service mysql restart

安装 Curl, Node, npm, Yarn

注意:这里可能会遇到网络问题,多试几次

  • 安装 Curl
sudo apt install curl
  • 安装 Node
curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash

source ~/.profile

nvm install 18
  • 安装 npm
sudo apt install npm
  • 安装 Yarn
sudo npm install -g yarn

安装完成后输入 node --version 进行检查确认。

安装 Python 虚拟环境

sudo apt install python3-venv

安装完成后输入 python3 -V 进行检查确认。

创建虚拟环境(例如在 ~/venvs 目录)

python3 -m venv ~/venvs/frappe-env

激活虚拟环境

source ~/venvs/frappe-env/bin/activate

安装 Frappe Bench

Frappe Bench 是一个用于快速部署、管理和维护基于 Frappe 框架的应用程序的工具

  • 安装
sudo pip3 install frappe-bench
  • 初始化
bench init --frappe-branch version-15 frappe-bench

注意:默认状态下会从 Github 下载 Frappe Bench ,这里需要将下载地址替换成自己仓库的地址,以 gitee 的公有仓库为例将上面的地址修改为: bench init --frappe-branch version-15 frappe-bench --frappe-path=https://gitee.com/mirrors/frappe --verbose

  • 进入 Frappe Bench 目录

此目录将作为我们运行所有命令的目录

完整路径为:/home/[frappe-user]/frappe-bench/

cd frappe-bench/
  • 更改用户目录权限
chmod -R o+rx /home/[frappe-user]/
  • 创建新站点
bench new-site site1.local

其中 site1.local 为新站点的名称,建议根据自身网站域名进行命名。

例如 :bench new-site example.com

安装 ERPNext 和其他应用程序

下载应用程序

注意:这里所有需要下载的应用程序和 Frappe Bench 一样,默认都是从 Github 下载,所以需要在后面添加自己仓库的地址。例如bench get-app --branch version-15 erpnext https://gitee.com/mirrors/erpnext

  • 下载 Payments

Payments为支付应用程序,在 ERPNext 安装过程中为必须项,优先下载安装。

bench get-app payments
  • 下载 ERPNext 主程序
bench get-app --branch version-15 erpnext

根据自身需求下载其他相应的应用程序即可。

最后,可以通过运行 bench version --format table 查看所有已下载的应用程序和版本。

安装应用程序

使用如下格式进行安装:

  • site1.local 修改为刚才设置的新站点名称
  • erpnext 修改为对应的应用程序名称,按需安装
bench --site site1.local install-app payments
bench --site site1.local install-app erpnext

注意:安装过程中可能会出现一些错误/警告消息,一般情况下是可以忽略的。

设置生产服务器

这里没有什么需要额外注意的,只需要将 [frappe-user]site1.local 替换为对应的值即可。

  • 启用调度程序服务
bench --site site1.local enable-scheduler
  • 禁用维护模式
bench --site site1.local set-maintenance-mode off
  • 设置生产配置
sudo bench setup production [frappe-user]
  • 设置 NGINX Web 服务器
bench setup nginx
  • 最终服务器设置
sudo supervisorctl restart all
sudo bench setup production [frappe-user]

当系统提示保存新的/现有的配置文件时,点击 Y

给你自己点个赞

到这里就全部配置完成,在浏览器中输入 [IP 地址]:80 端口进行访问。

自定义域名和SSL设置

对于需要绑定域名的用户可以进行如下操作:

注意:1. 确保域名已经进行解析并指向了对应的服务器 IP地址 2. 别忘记替换对应的值

cd /home/[frappe-user]/frappe-bench/

bench config dns_multitenant on

bench setup add-domain [subdomain.yourdomain.com] --site [site-name]

bench setup nginx
sudo service nginx reload

sudo snap install core
sudo snap refresh core
sudo snap install --classic certbot

sudo ln -s /snap/bin/certbot /usr/bin/certbot

sudo certbot --nginx

常见问题

  • 端口问题:请检查 服务器云服务器厂商 的端口放行情况
# 使用如下命令对服务器端口进行放行:
sudo ufw allow 22,25,143,80,443,3306,3022,8000/tcp
sudo ufw enable
  • 网络问题:由于需要从 Github 等网站下载软件和依赖,如遇网络问题请多尝试几次或者更换其他国内源进行后再次尝试。(有时候网络问题可能会持续好几天)

文档篇幅较长,涉及内容较多,安装过程中免不了出现一些问题。遇到问题时,不要着急,安装过程中出现的问题90%为网络问题,10%为没有看清步骤。

最直接有效的办法是使用海外服务器,可省去90%的烦恼!

利用节省下来的时间去创造更大的价值!