如何在CentOS 7上安装erpNext开源ERP

・16 分钟阅读

使用不同的系统?

ERP或企业资源规划是用于管理核心业务流程的企业应用程序套件,ERPNext是免费和开源的自托管ERP应用程序,由python编写,它使用Node.js作为前端,MariaDB用来存储数据,ERPNext提供了一个易于使用的网络界面,允许企业管理任务,系统包括会计,CRM,人力资源管理,制造,POS,采购,采购管理,采购管理,仓库管理等模块,ERPNext可用于管理不同行业,如服务提供商,制造商,零售业和学校。

在本教程中,我们将在CentOS 7上安装ERPNext。

前提条件

对于本教程,我们将使用erp.example.com作为指向服务器的域名,请务必用你的实际域名替换所有的erp.example.com

使用指南"如何更新CentOS 7"更新你的基本系统,系统更新后,继续安装python 。

安装开发工具

ERPNext需要python版本2.7才能工作,CentOS服务器实例中默认安装了Python 2.7,你可以通过运行以下命令检查已安装的python版本:

 
python -V

 

你应该得到类似的输出。


[user@vultr ~]$ python -V
Python 2.7.5

虽然安装的python版本不是最新版本,但是它不会有问题,更改python的默认版本可能会破坏YUM 。

在编译安装程序文件所需的Development tools组中安装软件包。


sudo yum groupinstall -y"Development tools"

安装几个依赖项:


sudo yum install -y redhat-lsb-core git python-setuptools python-devel openssl-devel libffi-devel

安装python工具的pip,Pip是python软件包的依赖管理器。


wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py

上面的命令将安装Pip到你的系统上,要确保你拥有最新版本的pipsetuptools,请运行:


sudo pip install --upgrade pip setuptools

使用Pip安装Ansible Ansible自动化软件供应,配置管理和应用程序部署。


sudo pip install ansible

安装MariaDB服务器

MariaDB是MySQL数据库服务器的fork ,通过运行下面命令来安装MariaDB 。


sudo yum -y install mariadb mariadb-server mysql-devel

为了创建ERPNext数据库需要Barracuda存储引擎,因此你需要配置MariaDB以便使用Barracuda存储引擎,编辑默认的MariaDB配置文件my.cnf


sudo nano /etc/my.cnf

symbolic-links=0行下面添加以下行。


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

[mysql]
default-character-set = utf8mb4

启动MariaDB,并且使它在系统引导时自动启动。


sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service

在配置数据库之前,你需要安全地保护MariaDB ,你可以通过运行mysql_secure_installation脚本来保护它:


sudo mysql_secure_installation

你将被要求输入当前MariaDB root密码,默认情况下,MariaDB上没有设置root密码,按"Enter"键进行操作,为MariaDB服务器的root用户设置一个强密码,并回答所有其他问题的"y",

安装nginx nodejs和Redis

由于默认情况下在所有CentOS 7实例中安装了EPEL存储库,因此你可以直接安装Redis和Nginx,但是,要安装最新版本的Node.js,你需要将Nodesource存储库添加到系统中。

为Node.js 8.x添加Nodesource存储库


sudo curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -

安装nginx nodejs和Redis


sudo yum -y install nginx nodejs redis

启动Nginx,并且使它在引导时通过运行以下命令启动:


sudo systemctl start nginx
sudo systemctl enable nginx

启动Redis,并且使它在引导时启动,方法是运行:


sudo systemctl start redis
sudo systemctl enable redis

安装PDF转换器

wkhtmltopdf程序是一个命令行工具,它使用QT webkit渲染引擎将HTML转换为PDF ,安装所需的依赖项:


sudo yum -y install libXrender libXext xorg-x11-fonts-75dpi xorg-x11-fonts-Type1

下载最新版本的wkhtmltopdf


wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz

运行以下命令提取归档文件:


sudo tar -xf wkhtmltox-0.12.4_linux-generic-amd64.tar.xz -C /opt

上面的命令将把归档解压到/opt/wkhtmltox ,创建一个softlink以便wkhtmltopdfwkhtmltoimage可以作为命令全局执行。


sudo ln -s /opt/wkhtmltox/bin/wkhtmltopdf /usr/bin/wkhtmltopdf
sudo ln -s /opt/wkhtmltox/bin/wkhtmltoimage /usr/bin/wkhtmltoimage

你现在可以运行wkhtmltopdf -V命令来检查它是否正常工作,你将看到:


[user@vultr ~]$ wkhtmltopdf -V
wkhtmltopdf 0.12.4 (with patched qt)

现在,我们已经安装了所有必需的依赖项,你现在可以继续安装Bench。

安装Bench

Bench是Frappe提供的命令行实用程序,用于在基于unix的系统上安装和管理ERPNext应用程序以用于开发和生产目的,Bench还可以创建和管理Nginx和管理员配置。

创建一个新用户,在隔离环境中运行Bench进程。


sudo adduser bench -d /opt/bench

更改用户的密码。

 
sudo passwd bench

 

Bench用户提供sudo权限。


sudo usermod -aG wheel bench

作为新创建的Bench用户登录:


sudo su - bench

/opt/bench中克隆Bench存储库:


cd /opt/bench
git clone https://github.com/frappe/bench bench-repo

使用pip安装Bench。


sudo pip install -e bench-repo

安装Bench后,继续使用Bench安装ERPNext 。

使用Bench安装ERPNext

使用安装的frape框架初始化Bench目录,为了保持整洁,我们将在/opt/bench目录下工作,Bench还将定期安装定期备份和自动更新。


cd /opt/bench
bench init erpnext && cd erpnext

创建新的frape站点:


bench new-site erp.example.com

上面的命令将提示你输入root密码,提供你为MySQL root用户设置的密码,它还会要求你为管理员帐户设置一个新的密码,你以后需要此密码登录到管理员仪表板。

使用Bench从远程git存储库下载ERPNext安装文件。


bench get-app erpnext https://github.com/frappe/erpnext

在新创建的站点上安装ERPNext :


bench --site erp.example.com install-app erpnext

ERPNext已安装在你的服务器上,你可以立即启动应用程序以检查应用程序是否已成功启动:

 
bench start

 

设置Supervisor和Nginx

默认情况下erpNext应用程序监听端口8000而不是标准HTTP端口80. 因此,你应该将生产web服务器用作反向代理,如Apache或Nginx ,在本教程中,我们将使用Nginx作为反向代理,因为,它可以使用Bench自动配置,Bench可以根据ERPNext设置自动生成和安装配置。

Supervisor是一个进程控制系统,使你能够监视和控制Linux操作系统上的许多进程,一旦Supervisor被配置,它将在引导时自动启动应用程序,Bench可以自动为ERPNext应用程序配置Supervisor。

安装Supervisor:


sudo yum -y install supervisor

启动Supervisor并使其在引导时自动启动:


sudo systemctl start supervisord
sudo systemctl enable supervisord

配置Bench用于生产环境:


 sudo bench setup production bench

上面的命令可能会在替换现有的Supervisor默认配置文件之前提示你,选择y继续Bench将许多进程添加到Supervisor配置文件中,上面的命令还将询问你是否希望用新的Nginx配置替换当前的配置,输入y继续,一旦Bench完成安装配置,提供其他用户执行Bench用户主目录中的文件。


chmod o+x /opt/bench/

如果在服务器上运行防火墙,则需要配置防火墙以设置HTTP服务的异常,允许Nginx反向代理从网络外部连接。


sudo firewall-cmd --zone=public --permanent --add-service=http
sudo firewall-cmd --reload

你现在可以访问http://erp.example.com上的站点。

可以通过运行以下命令检查进程的状态:


sudo supervisorctl status all

你将看到以下输出:


[bench@vultr ~]$ sudo supervisorctl status all
erpnext-redis:erpnext-redis-cache RUNNING pid 2554, uptime 1:06:58
erpnext-redis:erpnext-redis-queue RUNNING pid 2553, uptime 1:06:58
erpnext-redis:erpnext-redis-socketio RUNNING pid 2555, uptime 1:06:58
erpnext-web:erpnext-frappe-web RUNNING pid 2559, uptime 1:06:58
erpnext-web:erpnext-node-socketio RUNNING pid 2556, uptime 1:06:58
erpnext-workers:erpnext-frappe-default-worker-0 RUNNING pid 2549, uptime 1:06:58
erpnext-workers:erpnext-frappe-long-worker-0 RUNNING pid 2551, uptime 1:06:58
erpnext-workers:erpnext-frappe-schedule RUNNING pid 2550, uptime 1:06:58
erpnext-workers:erpnext-frappe-short-worker-0 RUNNING pid 2552, uptime 1:06:58

要停止所有ERPNext进程,请使用:


sudo supervisorctl stop all

要启动所有ERPNext进程,请使用:


sudo supervisorctl start all

使用let's Encrypt设置SSL

let's Encrypt为用户提供免费的SSL证书,SSL可以手动安装或通过Bench自动安装,Bench可以自动安装let's Encrypt客户端,并且获得证书,此外,它还会自动更新Nginx配置以便使用证书。

要从let's Encrypt towards获取证书的域名必须指向服务器,客户端在颁发证书之前验证域颁发机构。

为ERPNext应用程序启用DNS多重租赁。


bench config dns_multitenant on

运行Bench在你的站点上设置let's Encrypt :


sudo bench setup lets-encrypt erp.example.com

脚本执行期间,let's Encrypt客户端会要求你暂时停止Nginx web服务器,它将自动安装所需的包和let's Encrypt客户端,客户端将提示你输入电子邮件地址,你还需要接受条款和条件,生成证书后,Bench还为使用SSL证书的Nginx生成新的配置,在替换现有配置之前,你将被询问,Bench还创建一个crontab条目,以便每月自动续订证书。

最后,让调度程序自动运行计划的作业:


bench enable-scheduler

你应该看到:


[bench@vultr erpnext]$ bench enable-scheduler
Enabled for erp.example.com

结束语

安装完成后,你可以在https://erp.example.com处访问你的应用程序,使用用户名Administrator和安装过程中设置的密码登录,你现在可以使用这个应用程序来管理你的公司了。

祝贺你,你在CentOS 7服务器上安装了一个完全正常工作的erphnext应用程序。

Anne655 profile image