在Ubuntu 17.04上,如何安装ERPNext开源ERP

・15 分钟阅读

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

前提条件

  • Ubuntu 17.04服务器实例,
  • 一个sudo用户

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

在开始之前,请确保你的服务器是最新的。


sudo apt update
sudo apt -y upgrade

安装开发工具

ERPNext需要python版本2.7才能工作,安装python 2.7.


sudo apt -y install python-minimal

你应该能够验证它的版本。

 
python -V

 

你将看到以下输出。


user@vultr:~$ python -V
Python 2.7.13

安装更多依赖项。


sudo apt -y install git build-essential python-setuptools python-dev libffi-dev libssl-dev

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


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

确保你拥有最新版本的pipsetuptools


sudo pip install --upgrade pip setuptools

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


sudo pip install ansible

安装MariaDB服务器

将MariaDB存储库添加到系统中。


sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://mirror.nodesdirect.com/mariadb/repo/10.2/ubuntu xenial main'

安装MariaDB 。


sudo apt update
sudo apt -y install mariadb-server libmysqlclient-dev

当请求时为MariaDB root用户提供一个强密码。

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


sudo nano /etc/mysql/my.cnf

[mysqld]行下面添加以下行。


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 restart mariadb
sudo systemctl enable mariadb

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


sudo mysql_secure_installation

你将被要求输入当前MariaDB root密码,提供安装过程中设置的密码,询问你是否希望更改MariaDB服务器的root用户的现有密码,你可以跳过设置新密码,因为你在安装过程中已经提供了一个强密码,回答"y"中所有其他问题。

安装Nginx,node.js和Redis

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


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

安装Nginx,node.js和Redis 。


sudo apt -y install nginx nodejs redis-server

启动Nginx并使其在开机时启动。


sudo systemctl start nginx
sudo systemctl enable nginx

启动Redis并使其在开机时启动。


sudo systemctl start redis-server
sudo systemctl enable redis-server

安装PDF转换器

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


sudo apt -y install libxrender1 libxext6 xfonts-75dpi xfonts-base

下载最新版本的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和Supervisor配置。

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


sudo adduser bench --home /opt/bench

Bench用户提供sudo权限。


sudo usermod -aG sudo 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用户设置的密码,它还会要求你为Supervisor帐户设置一个新的密码,你以后需要此密码登录到Supervisor仪表板。

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


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

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


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

你可以立即启动应用程序以检查应用程序是否已成功安装。

 
bench start

 

但是,应停止执行,并且继续为生产使用设置应用程序。

设置监视器和Nginx

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

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

安装Supervisor。


sudo apt -y install supervisor

启动Supervisor,并且使它在启动时自动启动。


sudo systemctl start supervisor
sudo systemctl enable supervisor

用于生产用途的安装Bench。


 sudo bench setup production bench

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


chmod o+x /opt/bench/

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

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


sudo supervisorctl status all

你将看到以下输出。


bench@vultr:~/erpnext$ sudo supervisorctl status all
erpnext-redis:erpnext-redis-cache RUNNING pid 13852, uptime 0:00:54
erpnext-redis:erpnext-redis-queue RUNNING pid 13851, uptime 0:00:54
erpnext-redis:erpnext-redis-socketio RUNNING pid 13853, uptime 0:00:54
erpnext-web:erpnext-frappe-web RUNNING pid 13856, uptime 0:00:54
erpnext-web:erpnext-node-socketio RUNNING pid 13855, uptime 0:00:54
erpnext-workers:erpnext-frappe-default-worker-0 RUNNING pid 13862, uptime 0:00:54
erpnext-workers:erpnext-frappe-long-worker-0 RUNNING pid 13870, uptime 0:00:54
erpnext-workers:erpnext-frappe-schedule RUNNING pid 13869, uptime 0:00:54
erpnext-workers:erpnext-frappe-short-worker-0 RUNNING pid 13875, uptime 0:00:54

停止所有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和安装过程中设置的密码登录,你需要根据你的公司提供信息来设置ERPNext ERP。

祝贺你,你的Ubuntu 17.04服务器上安装了一个完全正常工作的ERPNext应用程序。

Anne655 profile image