ERP或企业资源规划是一个企业应用程序套件,用于管理核心业务流程。ERPNext是用Python编写的免费和开源的自托管ERP应用程序。它使用节点。前面的js和MariaDB存储数据。ERPNext提供了一个易于使用的web界面,允许企业管理日常任务。它包括会计、CRM、人力资源管理、制造、POS、项目管理、采购、销售管理、仓库管理等模块。ERPNext可用于管理不同行业,如服务提供商、制造、零售和学校。
在本教程中,我们将在CentOS 7上安装ERPNext。
准备条件:
一个Vultr CentOS 7服务器实例。
sudo用户。
对于本教程,我们将使用http://52kuaiyun.com/作为指向服务器的域名。请确保用你的实际域名替换所有出现的erp.example.com。
使用“如何更新CentOS 7”的指南更新您的基本系统。一旦您的系统被更新,继续安装Python。
安装开发工具
ERPNext需要Python版本2.7才能工作。Python 2.7默认安装在所有CentOS服务器实例中。您可以通过运行来检查安装的Python版本:
python -V
您应该得到类似的输出。
[user@vultr ~]$ python -V
Python 2.7.5
虽然Python的安装版本不是最新版本,但它可以毫无障碍地工作。更改Python的默认版本可能会破坏YUM。
在需要编译安装程序文件的开发工具组中安装包。
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。可以自动进行软件供应、配置管理和应用程序部署。
sudo pip install ansible
安装MariaDB服务器
MariaDB是MySQL数据库服务器的分支。安装MariaDB通过运行。
sudo yum -y install mariadb mariadb-server mysql-devel
Barracuda存储引擎需要创建ERPNext数据库,因此您需要配置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根密码。默认情况下,在MariaDB上没有设置根密码。按“Enter”键继续。设置一个强大的密码,为您的MariaDB服务器的根用户,并回答“Y”的所有其他问题。
安装Nginx,Nodejs和Redis
由于在所有Vultr CentOS 7实例中默认安装了EPEL储存库,您可以直接安装Redis和Nginx。但是要安装最新版本的节点.js,您需要将Nodesource存储库添加到您的系统中。
为节点添加Nodesource存储库.js 8. x。
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
<pre style="margin: 0px; padding: 0px;">下载最新版本的wkhtmltopdf。wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz
</pre>
<pre style="margin: 0px; padding: 0px;">通过运行提取存档: sudo tar -xf wkhtmltox-0.12.4_linux-generic-amd64.tar.xz -C /opt
</pre>
上面的命令将提取存档到/ opt/ wkhtmltox。创建一个软链接,这样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是由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,进一步安装ERPNext使用bench。
安装ERPNext使用板凳
使用已安装的frappe框架初始化一个工作台目录。为了保持一切整洁,我们将在/ opt/ bench目录下工作。Bench还将设置常规备份和自动更新一天一次。
cd /opt/bench
bench init erpnext && cd erpnext
创建一个新的Frappe站点:
bench new-site erp.example.com
上述命令将提示您输入MySQL根密码。提供您之前为MySQL根用户设置的密码。它还要求您设置管理员帐户的新密码。稍后您将需要这个密码登录到管理员指示板。
从远程git存储库下载ERPNext安装文件。
bench get-app erpnext https://github.com/frappe/erpnext
在新创建的站点上安装ERPNext:
bench --site erp.example.com install-app erpnext
ERPNext安装在您的服务器上。您可以立即启动应用程序,以检查应用程序是否已成功启动:
bench start
但是,您应该停止执行并进一步设置用于生产的应用程序。
设置主管和Nginx
默认情况下,ERPNext应用程序监听端口8000,而不是标准的HTTP端口80。此外,不建议在web服务器上运行构建的产品,因为我们将把服务器暴露给世界。因此,您应该使用生产web服务器作为反向代理,如Apache或Nginx。在本教程中,我们将使用Nginx作为反向代理,因为它可以使用Bench自动配置。根据ERPNext设置,工作台可以自动生成和安装配置。
尽管我们可以使用上面的命令启动应用程序,但是ERPNext的执行将在关闭终端后立即停止。为了解决这个问题,我建议使用在生产环境中持续运行应用程序的主管。主管是一个过程控制系统,它使您能够监视和控制Linux操作系统上的许多进程。一旦管理员配置好,它就会自动启动应用程序在启动时间和失败。工作台可以自动为ERPNext应用程序配置管理程序。
安装supervisor
:
sudo yum -y install supervisor
<pre style="margin: 0px; padding: 0px;">启动管理程序,使其能够在启动时自动启动:</pre>
sudo systemctl start supervisord
sudo systemctl enable supervisord
<pre style="margin: 0px; padding: 0px;">安装bench用于生产:</pre>
sudo bench setup production bench
<pre style="margin: 0px; padding: 0px;">上面的命令可能会在替换现有的主管默认配置文件之前提示您。选择要进行y.Bench将多个进程添加到管理配置文件中。上面的命令还会问你是否希望用一个新的配置替换当前的Nginx配置。输入y继续。一旦完成了安装配置,请提供其他用户来执行您的主目录下的文件。</pre>
chmod o+x /opt/bench/
<pre style="margin: 0px; padding: 0px;">如果在服务器上运行防火墙,则需要配置防火墙以设置HTTP服务的异常。允许Nginx反向代理从网络外部连接。</pre>
sudo firewall-cmd --zone=public --permanent --add-service=http
sudo firewall-cmd --reload
<pre style="margin: 0px; padding: 0px;">您现在可以访问http://erp.example.com。</pre>
<pre style="margin: 0px; padding: 0px;">您可以通过运行检查进程的状态:</pre>
sudo supervisorctl status all
<pre style="margin: 0px; padding: 0px;">您应该看到以下输出:</pre>
[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
<pre style="margin: 0px; padding: 0px;">要停止所有ERPNext进程,请使用:</pre>
sudo supervisorctl stop all
<pre style="margin: 0px; padding: 0px;">要启动所有ERPNext进程,请使用:</pre>
sudo supervisorctl start all
<pre style="margin: 0px; padding: 0px;">使用Let ' s的加密设置SSL</pre>
<pre style="margin: 0px; padding: 0px;">让我们加密为用户提供免费的SSL证书。SSL可以手动安装,也可以通过工作台自动安装。工作台可以自动安装Let ' s加密客户端并获得证书。此外,它会自动更新Nginx配置以使用证书。</pre>
<pre style="margin: 0px; padding: 0px;">要从Let ' s加密CA获取证书的域名必须指向服务器。在发出证书之前,客户端验证域权限。</pre>
<pre style="margin: 0px; padding: 0px;">为ERPNext应用程序启用DNS多租户。</pre>
bench config dns_multitenant on
<pre style="margin: 0px; padding: 0px;">运行工作台设置让我们对你的网站进行加密:</pre>
sudo bench setup lets-encrypt erp.example.com
<pre style="margin: 0px; padding: 0px;">在执行脚本期间,Let 's Encrypt客户端将要求您暂时停止Nginx web服务器。它将自动安装所需的包,并加密客户机。客户将提示您的电子邮件地址。你还需要接受条款和条件。生成证书之后,Bench还将为使用SSL证书的Nginx生成新的配置。 Bench还创建一个crontab条目,每个月自动更新证书。</pre>
<pre style="margin: 0px; padding: 0px;">最后,启用调度程序来自动运行预定的作业:</pre>
bench enable-scheduler
<pre style="margin: 0px; padding: 0px;">您应该看到:</pre>
[bench@vultr erpnext]$ bench enable-scheduler
Enabled for erp.example.com
<pre style="margin: 0px; padding: 0px;">结束</pre>
<pre style="margin: 0px; padding: 0px;">一旦流程完成,您可以在https://erp.example.com访问您的应用程序。使用用户名管理员和在安装期间设置的密码登录。你将被带到你需要提供信息的桌面上,根据你的公司设置ERPNext ERP,现在可以使用应用程序管理公司。</pre>
<pre style="margin: 0px; padding: 0px;">祝贺您,您已经在CentOS 7服务器上安装了一个完全工作的ERPNext应用程序。</pre>