如何在CentOS 7上安装erpNext开源ERP
Anne655
・16 分钟阅读
使用不同的系统?
ERP或企业资源规划是用于管理核心业务流程的企业应用程序套件,ERPNext是免费和开源的自托管ERP应用程序,由python编写,它使用Node.js作为前端,MariaDB用来存储数据,ERPNext提供了一个易于使用的网络界面,允许企业管理任务,系统包括会计,CRM,人力资源管理,制造,POS,采购,采购管理,采购管理,仓库管理等模块,ERPNext可用于管理不同行业,如服务提供商,制造商,零售业和学校。
在本教程中,我们将在CentOS 7上安装ERPNext。
前提条件
- CentOS 7服务器实例,
- 一个sudo用户 ,
对于本教程,我们将使用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到你的系统上,要确保你拥有最新版本的pip
和setuptools
,请运行:
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以便wkhtmltopdf
和wkhtmltoimage
可以作为命令全局执行。
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应用程序。