The author selected Software in the Public Interest to receive a donation as part of the Write for DOnations program.

作者选择了符合公共利益的软件来接受捐赠,这是Write for DOnations计划的一部分。

介绍 (Introduction)

ERPNext is an Enterprise Resource Planning (ERP) suite that leverages the power and flexibility of open-source technologies. It excels at managing core business processes such as finance, sales, human resources, manufacturing, purchases, services, helpdesk needs, and more. Among the benefits of implementing a system like ERPNext are:

ERPNext是一个企业资源计划(ERP)套件,它利用了开源技术的强大功能和灵活性。 它擅长管理核心业务流程,例如财务,销售,人力资源,制造,采购,服务,服务台需求等。 实施像ERPNext这样的系统的好处包括:

  • Better productivity by automating repetitive business processes通过自动化重复的业务流程来提高生产力
  • Improved IT efficiency by sharing a database for all departments within the company通过为公司内所有部门共享数据库来提高IT效率
  • Better decision-making thanks to an integral vision of how business units relate to each other由于对业务部门之间如何相互关联具有统一的愿景,因此可以更好地制定决策

ERPNext is based on Frappe, a full-stack web application framework written in Python that takes full advantage of the Node/JavaScript runtime environment and uses MariaDB as its database backend. One of the many advantages of Frappe-based applications, like ERPNext, is the bench command-line utility. The bench CLI saves administrators time by automating tasks such as installing, updating, configuring, and managing multiple Frappe/ERPNext sites.

ERPNext基于Frappe(Frappe) , Frappe是一个用Python编写的全栈Web应用程序框架,该框架充分利用了Node / JavaScript运行时环境,并使用MariaDB作为其数据库后端。 台式命令行实用程序是基于Frappe的应用程序(如ERPNext)的众多优点之一。 台式CLI通过自动执行诸如安装,更新,配置和管理多个Frappe / ERPNext站点之类的任务来节省管理员时间。

In this tutorial you will install and configure an ERPNext stack on one server running Ubuntu 18.04. This will allow you to configure your stack for various development or production environments depending on your needs, and it will prepare you to build a more complex, fault-tolerant architecture.

在本教程中,您将在一台运行Ubuntu 18.04的服务器上安装并配置ERPNext堆栈。 这将允许您根据需要为各种开发或生产环境配置堆栈,并为您构建更复杂,容错的体系结构做准备。

先决条件 (Prerequisites)

  • One Ubuntu 18.04 server with at least 4 GB of RAM and a non-root sudo user. You can set up your server and user by following the Ubuntu 18.04 initial server setup guide.

    一台具有至少4 GB RAM和一个非root用户sudo用户的Ubuntu 18.04服务器。 您可以按照Ubuntu 18.04初始服务器设置指南来设置服务器和用户。

Note: When choosing your server’s specifications, keep in mind that ERP systems are resource-intensive. This guide calls for one server with 4 GB of RAM, which will be sufficient for basic use cases, but specific hardware requirements may vary depending on the number of users as well as your business size.

注意:选择服务器规格时,请记住,ERP系统是资源密集型的。 本指南要求一台具有4 GB RAM的服务器,这足以满足基本的用例,但是特定的硬件要求可能会因用户数量以及您的业务规模而异。

  • A fully registered domain name with an A record pointed to your server. If you are using a DigitalOcean Droplet then you can follow this guide to properly set up your DNS. This tutorial will use your_domain throughout.

    带有A记录的完全注册的域名指向您的服务器。 如果您使用的是DigitalOcean Droplet,则可以按照本指南正确设置DNS。 本教程将整个使用your_domain

第1步-配置防火墙 (Step 1 — Configuring the Firewall)

Although configuring a firewall for development is optional, for production it is a mandatory security practice.

尽管为开发配置防火墙是可选的,但对于生产来说,这是强制性的安全措施。

You will need to open the following ports on your ERPNext server:

您将需要在ERPNext服务器上打开以下端口:

  • 80/tcp and 443/tcp for HTTP and HTTPS respectively

    HTTP和HTTPS分别为80/tcp443/tcp

  • 3306/tcp for MariaDB connection (recommended only if you need remote access to database)

    3306/tcp用于MariaDB连接(仅在需要远程访问数据库时才建议使用)

  • 143/tcp and 25/tcp for IMAP and STMP respectively

    IMAP和STMP分别为143/tcp25/tcp

  • 22/tcp for SSH (if you have not already enabled OpenSSH)

    SSH 22/tcp (如果尚未启用OpenSSH )

  • 8000/tcp for development testing before deploying your site

    8000/tcp用于在部署站点之前进行开发测试

To open multiple ports at once you can use the following command:

要一次打开多个端口,可以使用以下命令:

  • sudo ufw allow 22,25,143,80,443,3306,8000/tcp sudo ufw允许22,25,143,80,443,3306,8000 / tcp

Alternatively, you can allow connections from specific IP addresses on specific ports using this command:

另外,您可以使用以下命令允许来自特定端口上特定IP地址的连接:

  • sudo ufw allow from server_IP to any port port_number

    sudo ufw允许从server_IP到任何端口port_number

After opening all necessary ports enable the firewall:

打开所有必需的端口后,启用防火墙:

  • sudo ufw enable sudo ufw启用

After enabling the firewall, confirm the status of your open ports:

启用防火墙后,确认打开的端口的状态:

  • sudo ufw status sudo ufw状态

For more information regarding the firewall setup please read our guide How To Set Up a Firewall with UFW on Ubuntu 18.04.

有关防火墙设置的更多信息,请阅读我们的指南《 如何在Ubuntu 18.04上使用UFW设置防火墙》 。

Setting up a proper firewall is the first of two preliminary steps. Now you will configure keyboard mapping and character encoding on your server.

设置适当的防火墙是两个初步步骤中的第一步。 现在,您将在服务器上配置键盘映射和字符编码。

第2步-配置语言环境 (Step 2 — Configuring Locales)

It’s highly recommended that you configure keyboard mapping for the console as well as the language and the character encoding on your host. This is necessary to avoid possible issues during the ERPNext 12 installation process. Take note that this configuration has nothing to do with the UI language on your actual ERPNext platform, but with the system locale configuration.

强烈建议您为控制台配置键盘映射以及主机上的语言和字符编码。 这是避免在ERPNext 12安装过程中可能出现的问题所必需的。 请注意,此配置与您实际的ERPNext平台上的UI语言无关,而与系统区域设置有关。

First, update your server:

首先,更新您的服务器:

  • sudo apt update sudo apt更新

Now configure keymap, language, and character encoding:

现在配置键盘映射,语言和字符编码:

  • sudo localectl set-keymap us && sudo localectl set-locale LANG=en_US.utf8 sudo localectl set-keymap us && sudo localectl set-locale LANG = en_US.utf8

The localectl utility is used by Ubuntu 18.04 and other Linux distributions to control and change system-wide locale and keyboard layout settings before the user logs in, which is exactly what ERPNext 12 requires.

Ubuntu 18.04和其他Linux发行版使用localectl实用程序在用户登录之前控制和更改系统范围的区域设置和键盘布局设置,这正是ERPNext 12的要求。

You will also need to add the following lines to your /etc/environment file. Use nano or your preferred text editor to open the file:

您还需要在/etc/environment文件中添加以下行。 使用nano或您喜欢的文本编辑器打开文件:

  • sudo nano /etc/environment 须藤nano / etc / environment

Now add the following content:

现在添加以下内容:

/etc/environment
/ etc /环境
LC_ALL=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LANG=en_US.UTF-8

Save and close the file.

保存并关闭文件。

Reboot your server to apply all changes:

重新启动服务器以应用所有更改:

  • sudo reboot 须藤重启

Give your server a few minutes to reboot and then ssh back inside. You are now ready to install your database.

给您的服务器几分钟的时间来重新引导,然后再将其回ssh 。 现在,您可以安装数据库了。

步骤3 —安装MariaDB 10.4 (Step 3 — Installing MariaDB 10.4)

Now you will add MariaDB to your server stack. ERPNext 12 requires MariaDB 10.2+, but the version included in Ubuntu 18.04’s official repository is 10.1, which means that you will need to install a higher version. For the purposes of this guide, you will use the latest stable release of MariaDB, which, at the time of this writing, is version 10.4.

现在,您将MariaDB添加到服务器堆栈中。 ERPNext 12需要MariaDB 10.2+,但是Ubuntu 18.04的官方存储库中包含的版本是10.1,这意味着您需要安装更高的版本。 就本指南而言,您将使用MariaDB的最新稳定版本,在撰写本文时,它的版本为10.4。

To install MariaDB 10.4 on Ubuntu 18.04 you will need to add the appropriate signature key and repository. You can find this information on the MariaDB Foundation’s repository wizard. Visit this URL in your web browser. Now, under 1. Choose a Distro, click Ubuntu. A second column titled 2. Choose a Release will appear. Beneath this title click 18.04 LTS “bionic”. A third column titled 3.Choose a Version will then appear. Beneath this click 10.4 stable. A third column titled 4.Choose a Mirror will then appear. Choose a mirror based on your location, and then MariaDB will populate the appropriate commands for your custom installation.

要在Ubuntu 18.04上安装MariaDB 10.4,您需要添加适当的签名密钥和存储库。 您可以在MariaDB Foundation的存储库向导中找到此信息。 在网络浏览器中访问此URL。 现在,在1.选择一个 发行版下,单击Ubuntu 。 标题为2.选择发布的第二列将出现。 在此标题下,单击18.04 LTS“ bionic” 。 然后将出现标题为3.Choose a Version的第三列。 在此下,单击10.4稳定 。 然后将出现标题为4.Choose Mirror的第三列。 根据您的位置选择一个镜像,然后MariaDB将为您的自定义安装填充适当的命令。

Run the three populated commands, which will properly add the MariaDB repository and key. Your own commands will look something like this:

运行三个填充的命令,这些命令将正确添加MariaDB存储库和密钥。 您自己的命令将如下所示:

  • sudo apt-get install software-properties-common && sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc' && sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://mirror.klaus-uwe.me/mariadb/repo/10.4/ubuntu bionic main'

    命令和apt-get安装软件-属性-通用&& sudo易于关键进阶--fetch密钥'https://mariadb.org/mariadb_release_signing_key.asc' && sudo的附加的apt-库“的deb [ARCH = AMD64,arm64, ppc64el] http://mirror.klaus-uwe.me/mariadb/repo/10.4/ubuntu仿生主干'

Once you have finished adding the repository, install MariaDB:

完成添加存储库后,安装MariaDB:

  • sudo apt install mariadb-server sudo apt安装mariadb-server

After installing mariadb-server, install the following packages:

安装mariadb-server ,请安装以下软件包:

  • sudo apt install libmysqlclient-dev python3-mysqldb sudo apt安装libmysqlclient-dev python3-mysqldb

ERPNext 12 is a Python application and thus it requires the python3-mysqldb library for database management. Concerning libmysqlclient-dev, mariadb-client, and libmariadbclient18: those packages let users communicate with the MariaDB service. ntpdate and libdate-manip-perl are used by ERPNext for server time synchronization.

ERPNext 12是一个Python应用程序,因此它需要python3-mysqldb库进行数据库管理。 关于libmysqlclient-devmariadb-clientlibmariadbclient18 :这些软件包使用户可以与MariaDB服务进行通信。 ntpdatelibdate-manip-perl被ERPNext用于服务器时间同步。

Next, add a basic layer of security to the MariaDB server by running the mysql_secure_installation script:

接下来,通过运行mysql_secure_installation脚本为MariaDB服务器添加基本的安全层:

  • sudo mysql_secure_installation 须藤mysql_secure_installation

The mysql_secure_installation script will prompt you with several questions:

mysql_secure_installation脚本将提示您几个问题:

  • The first prompt will ask you about the root password, but since there is no password configured yet, press ENTER.

    第一个提示将询问您有关root密码的信息,但是由于尚未配置密码,请按ENTER

  • Next, you will have to decide on using Unix authentication or not. Answer Y to accept this authentication method.

    接下来,您将不得不决定是否使用Unix身份验证。 回答Y以接受此身份验证方法。

  • When asked about changing the MariaDB root password, answer N. Using the default password along with Unix authentication is the recommended setup for Ubuntu-based systems because the root account is closely related to automated system maintenance tasks.

    当询问有关更改MariaDB 密码的信息时,请回答N 对于基于Ubuntu的系统,建议使用默认密码和Unix身份验证,因为root帐户与自动系统维护任务密切相关。

  • The remaining questions have to do with removing the anonymous database user, restricting the root account to log in remotely on localhost, removing the test database, and reloading privilege tables. It is safe to answer Y to all those questions.

    其余问题与删除匿名数据库用户,限制root帐户远程登录localhost,删除测试数据库以及重新加载特权表有关。 对所有这些问题回答Y都是安全的。

After completing the mysql_secure_installation script, MariaDB will start running using its default configuration. The standard ERPNext installation uses MariaDB’s root user for all database operations. While that approach may be convenient on single server setups, it is not considered a good security practice. Therefore, in the next section you will learn how to avoid this issue by creating a new user with special privileges.

完成mysql_secure_installation脚本后,MariaDB将使用其默认配置开始运行。 标准的ERPNext安装使用MariaDB的用户进行所有数据库操作。 尽管该方法在单服务器设置上可能很方便,但它不被认为是一种好的安全做法。 因此,在下一节中,您将学习如何通过创建具有特殊特权的新用户来避免此问题。

创建MariaDB超级管理员用户 (Creating a MariaDB Super Admin User)

ERPNext expects to use MariaDB’s root user for managing database connections, but this is not always ideal. To overcome this limitation and let a non-root user manage MariaDB you will have to manually create a database named after the user. Then you will be able to assign special privileges to the new user to drive ERPNext database operations.

ERPNext希望使用MariaDB的用户来管理数据库连接,但这并不总是理想的。 为了克服此限制并让非root用户管理MariaDB,您将必须手动创建以该用户命名的数据库。 然后,您将能够为新用户分配特殊特权,以驱动ERPNext数据库操作。

Open up the MariaDB prompt:

打开MariaDB提示符:

  • sudo mysql 须藤MySQL

Now create a new database named after the user you want to assign for MariaDB connections. This tutorial will use sammy but you are free to choose your own name:

现在创建一个新数据库,该数据库以您要为MariaDB连接分配的用户命名。 本教程将使用sammy但您可以自由选择自己的名称:

  • CREATE DATABASE sammy;

    创建数据库sammy ;

Confirm that the database was created using this SQL statement:

确认数据库是使用以下SQL语句创建的:

  • SHOW DATABASES; 显示数据库;

You will see an output similar to this:

您将看到类似于以下的输出:

Output
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sammy             |
+--------------------+

Now create the MariaDB user sammy with similar privileges as root and then give the user a strong password of your choice. Keep the password in a secure place; you will need it later:

现在,以与root用户相似的权限创建MariaDB用户sammy ,然后为该用户提供您选择的强密码。 将密码放在安全的地方; 您稍后将需要它:

  • GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'%' IDENTIFIED BY 'mariadb_password' WITH GRANT OPTION;

    将所有特权授予 *。*,以' mariadb_password '标识的' sammy '@'%', 并带有GRANT OPTION;

Now confirm both the user creation and the new user’s privileges:

现在确认用户创建和新用户的特权:

  • SELECT host, user, Super_priv FROM mysql.user; SELECT主机,用户,Super_priv FROM mysql.user;

You will see an output like this:

您将看到类似以下的输出:

Output
+-----------+-------+------------+
| Host      | User  | Super_priv |
+-----------+-------+------------+
| localhost | root  | Y          |
| localhost | mysql | Y          |
| %         | sammy | Y          |
+-----------+-------+------------+
3 rows in set (0.001 sec)

Now flush privileges to apply all changes:

现在刷新特权以应用所有更改:

  • FLUSH PRIVILEGES;冲洗特权;

Once you finish, exit the session:

完成后,退出会话:

  • exit出口

Now that you have created a database user you only need to fine-tune MariaDB to ensure proper ERPNext 12 operation. Fortunately, the ERPNext team provides an excellent configuration template that you will use as a starting point for your implementation. In the next section, you will learn how to properly configure the MariaDB database using that template.

现在您已经创建了数据库用户,您只需要微调MariaDB即可确保ERPNext 12正常运行。 幸运的是,ERPNext团队提供了出色的配置模板,您可以将其用作实施的起点。 在下一部分中,您将学习如何使用该模板正确配置MariaDB数据库。

步骤4 —为MariaDB配置ERPNext (Step 4 — Configuring MariaDB for ERPNext)

With MariaDB installed and secured it’s time to fine-tune it for ERPNext connections.

安装并保护了MariaDB之后,就可以对其进行微调以用于ERPNext连接了。

First, stop mariadb.service:

首先,停止mariadb.service

  • sudo systemctl stop mariadb sudo systemctl停止mariadb

Now use nano or your favorite text editor to create a MariaDB configuration file called settings.cnf:

现在,使用nano或您喜欢的文本编辑器创建一个名为settings.cnf的MariaDB配置文件:

  • sudo nano /etc/mysql/conf.d/settings.cnf 须藤nano /etc/mysql/conf.d/settings.cnf

Now add ERPNext’s configuration template:

现在添加ERPNext的配置模板:

/etc/mysql/conf.d/settings.cnf
/etc/mysql/conf.d/settings.cnf
[mysqld]# GENERAL #
user                           = mysql
default-storage-engine         = InnoDB
socket                         = /var/lib/mysql/mysql.sock
pid-file                       = /var/lib/mysql/mysql.pid# MyISAM #
key-buffer-size                = 32M
myisam-recover                 = FORCE,BACKUP# SAFETY #
max-allowed-packet             = 256M
max-connect-errors             = 1000000
innodb                         = FORCE# DATA STORAGE #
datadir                        = /var/lib/mysql/# BINARY LOGGING #
log-bin                        = /var/lib/mysql/mysql-bin
expire-logs-days               = 14
sync-binlog                    = 1# REPLICATION #
server-id                      = 1# CACHES AND LIMITS #
tmp-table-size                 = 32M
max-heap-table-size            = 32M
query-cache-type               = 0
query-cache-size               = 0
max-connections                = 500
thread-cache-size              = 50
open-files-limit               = 65535
table-definition-cache         = 4096
table-open-cache               = 10240# INNODB #
innodb-flush-method            = O_DIRECT
innodb-log-files-in-group      = 2
innodb-log-file-size           = 512M
innodb-flush-log-at-trx-commit = 1
innodb-file-per-table          = 1
innodb-buffer-pool-size        = 5462M
innodb-file-format             = barracuda
innodb-large-prefix            = 1
collation-server               = utf8mb4_unicode_ci
character-set-server           = utf8mb4
character-set-client-handshake = FALSE
max_allowed_packet             = 256M# LOGGING #
log-error                      = /var/lib/mysql/mysql-error.log
log-queries-not-using-indexes  = 0
slow-query-log                 = 1
slow-query-log-file            = /var/lib/mysql/mysql-slow.log[mysql]
default-character-set = utf8mb4[mysqldump]
max_allowed_packet=256M!includedir /etc/mysql/mariadb.conf.d/

Save and close the file. For more detailed information about these configurations, review this template file on ERPNext’s Github repo. This is a useful starting point for exploring these options.

保存并关闭文件。 有关这些配置的更多详细信息,请查看ERPNext的Github存储库上的此模板文件 。 这是探索这些选项的有用起点。

Next, create another file called erpnext.cnf:

接下来,创建另一个文件erpnext.cnf

  • sudo nano /etc/mysql/mariadb.conf.d/erpnext.cnf 须藤纳米/etc/mysql/mariadb.conf.d/erpnext.cnf

Add the following content to the file:

将以下内容添加到文件中:

/etc/mysql/mariadb.conf.d/erpnext.cnf
/etc/mysql/mariadb.conf.d/erpnext.cnf
[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
bind-address    = 0.0.0.0

The first file, /etc/mysql/conf.d/settings.cnf, complements and also overrides a few values included in the default MariaDB configuration located at /etc/mysql/my.cnf. This file gives you a curated template that greatly enhances database performance for ERPNext. Keep in mind though that while this template is a great starting point, nothing prevents you from improving MariaDB’s performance even further by adjusting these parameters to fit your needs.

第一个文件/etc/mysql/conf.d/settings.cnf补充并覆盖了/etc/mysql/my.cnf的默认MariaDB配置中包含的一些值。 该文件为您提供了精选的模板,可以大大增强ERPNext的数据库性能。 请记住,尽管此模板是一个很好的起点,但是没有什么可以阻止您通过调整这些参数以满足您的需求来进一步提高MariaDB的性能。

The second file, /etc/mysql/mariadb.conf.d/erpnext.cnf, also overrides some values by introducing specific information regarding your database connection.

第二个文件/etc/mysql/mariadb.conf.d/erpnext.cnf也通过引入有关数据库连接的特定信息来覆盖某些值。

测试MariaDB连接 (Testing the MariaDB Connection)

Since ERPNext relies on the database connection for almost all its internal operations, it’s a good idea to test the connection before continuing.

由于ERPNext几乎所有内部​​操作都依赖数据库连接,因此在继续之前测试连接是一个好主意。

Start mariadb.service:

启动mariadb.service

  • sudo systemctl start mariadb sudo systemctl启动mariadb

To test the connection you can use the following command. Remember to replace sammy and mariadb_password with your own credentials:

要测试连接,可以使用以下命令。 请记住用您自己的凭据替换sammymariadb_password

  • mysql --user sammy --password mariadb_password --host=localhost --protocol=tcp --port=3306 test

    mysql --user sammy --password mariadb_password --host = localhost --protocol = tcp --port = 3306测试

You will see an output showing MariaDB’s basic help content and several parameters. This means your connection was successful:

您将看到一个输出,显示MariaDB的基本帮助内容和几个参数。 这意味着您的连接成功:

Output
mysql  Ver 15.1 Distrib 10.4.13-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Usage: mysql [OPTIONS] [database]Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf...--ssl-verify-server-certVerify server's "Common Name" in its cert againsthostname used when connecting. This option is disabled bydefault.-t, --table         Output in table format.--tee=name          Append everything into outfile. See interactive help (\h)also. Does not work in batch mode. Disable with--disable-tee. This option is disabled by default.-u, --user=name     User for login if not current user.-U, --safe-updates  Only allow UPDATE and DELETE that uses keys.-U, --i-am-a-dummy  Synonym for option --safe-updates, -U.-v, --verbose       Write more. (-v -v -v gives the table output format)....max-join-size                     1000000
secure-auth                       FALSE
show-warnings                     FALSE
plugin-dir                        (No default value)
default-auth                      (No default value)
binary-mode                       FALSE
connect-expired-password          FALSE

If you need to make any adjustments to MariaDB’s settings or fix any errors, remember to reload the service using the following command:

如果您需要对MariaDB的设置进行任何调整或修复任何错误,请记住使用以下命令重新加载服务:

  • sudo systemctl restart mariadbsudo systemctl重新启动mariadb

Once you are done, enable MariaDB:

完成后,启用MariaDB:

  • sudo systemctl enable mariadbsudo systemctl启用mariadb

Now that you have tested the database connection, you can continue with the installation of your ERPNext application.

现在,您已经测试了数据库连接,可以继续安装ERPNext应用程序。

步骤5 —设置ERPNext 12 (Step 5 — Setting Up ERPNext 12)

Now that your database backend is ready you can continue setting up your ERPNext web application. In this section, you will learn how to install and configure all components required by ERPNext 12 and then install the application itself.

现在您的数据库后端已准备就绪,您可以继续设置ERPNext Web应用程序。 在本节中,您将学习如何安装和配置ERPNext 12所需的所有组件,然后安装应用程序本身。

Start by preparing the server with all the system packages required by ERPNext 12. Install system-wide dependencies using the following command:

首先使用ERPNext 12所需的所有系统软件包准备服务器。使用以下命令安装系统范围的依赖项:

  • sudo DEBIAN_FRONTEND=noninteractive apt install -y curl build-essential mariadb-client python3-setuptools python3-dev libffi-dev python3-pip libcurl4 dnsmasq fontconfig git htop libcrypto++-dev libfreetype6-dev liblcms2-dev libwebp-dev libxext6 libxrender1 libxslt1-dev libxslt1.1 libffi-dev ntpdate postfix python3-dev python-tk screen vim xfonts-75dpi xfonts-base zlib1g-dev apt-transport-https libsasl2-dev libldap2-dev libcups2-dev pv libjpeg8-dev libtiff5-dev tcl8.6-dev tk8.6-dev libssl1.0-dev python3-mysqldb libdate-manip-perl logwatchsudo DEBIAN_FRONTEND =非交互式apt install -y curl build-essential mariadb-client python3-setuptools python3-dev libffi-dev python3-pip libcurl4 dnsmasq fontconfig git htop libcrypto ++-dev libfreetype6-dev liblcms2-dev libwebp-dev libxextx6 libxltender1 .1 libffi-dev ntpdate后缀python3-dev python-tk screen vim xfonts-75dpi xfonts-base zlib1g-dev apt-transport-https libsasl2-dev libldap2-dev libcups2-dev pv libjpeg8-dev libtiff5-dev tcl8.6-dev tk8.6-dev libssl1.0-dev python3-mysqldb libdate-manip-perl日志

The DEBIAN_FRONTEND=noninteractive variable has been passed to the installation command in order to avoid Postfix prompts. For detailed information regarding Postfix configuration please read our guide on How To Install and Configure Postfix on Ubuntu 18.04

DEBIAN_FRONTEND=noninteractive变量传递给安装命令,以避免出现Postfix提示。 有关Postfix配置的详细信息,请阅读有关如何在Ubuntu 18.04上安装和配置Postfix的指南。

Next, update pip3 and then install the latest versions of three additional Python modules required by ERPNext:

接下来,更新pip3 ,然后安装ERPNext所需的三个附加Python模块的最新版本:

  • sudo -H python3 -m pip install --upgrade setuptools cryptography psutil sudo -H python3 -m pip install --upgrade setuptools密码学psutil

Now that you have installed all necessary global dependencies, you will now install all the services and libraries required by ERPNext 12.

现在,您已经安装了所有必需的全局依赖项,现在将安装ERPNext 12所需的所有服务和库。

设置Node.js和Yarn (Setting Up Node.js and Yarn)

ERPNext 12 can work with version 8+ of the Node.js server environment. In fact, at the time of this writing, the official ERPNext easy_install script uses Node 8. But from a security perspective it’s advisable to install a newer version because Node 8 reached its End Of Life (EOL) in 2020 and thus will not receive any more security patches. For the purpose of this guide, Node.js version 12 LTS will be installed along with the corresponding npm and yarn package managers. Please note that the Frappe framework uses yarn to install dependencies. If you decide to use an alternative installation method then make sure that you end up with version 1.12+ of yarn running in your system.

ERPNext 12可以与Node.js服务器环境的8+版本一起使用。 实际上,在撰写本文时,正式的ERPNext easy_install脚本使用的是Node8。但是从安全角度来看,建议安装较新的版本,因为Node 8将于2020年停产(EOL),因此不会收到任何更新。更多安全补丁。 就本指南而言,将安装Node.js 12 LTS版本以及相应的npmyarn软件包管理器。 请注意,Frappe框架使用yarn来安装依赖项。 如果决定使用其他安装方法,请确保最终在系统中运行的yarn版本为1.12+。

Add the NodeSource repository to your system:

将NodeSource存储库添加到您的系统:

  • curl -sL https://deb.nodesource.com/setup_12.x -o nodesource_setup.sh curl -sL https://deb.nodesource.com/setup_12.x -o nodesource_setup.sh

Now you can inspect the contents of the downloaded script:

现在,您可以检查下载的脚本的内容:

  • sudo nano nodesurce_setup.sh 须藤纳米节点urce_setup.sh

Once you are satisfied you can run the script:

满意后,您可以运行脚本:

  • sudo bash nodesource_setup.sh 须藤bash nodesource_setup.sh

This script will automatically update the apt list. Now you can install nodejs on your server:

该脚本将自动更新apt列表。 现在,您可以在服务器上安装nodejs了:

  • sudo apt install nodejs sudo apt安装nodejs

Next, install yarn globally using the included npm package:

接下来,使用随附的npm软件包在全局范围内安装yarn

  • sudo npm install -g yarn sudo npm install -g纱

Now that you have installed Node you can continue to configure wkhtmltopdf for your platform.

现在已经安装了Node,您可以继续为平台配置wkhtmltopdf

ERPNext uses the wkhtmltopdf open source tool to convert HTML content into PDF using the Qt WebKit rendering engine. This feature is mostly used for printing invoices, quotations, and other reports. In the case of ERPNext 12, a specific version of wkhtmltopdf is required, 0.12.5 with patched Qt.

ERPNext使用wkhtmltopdf开源工具使用Qt WebKit呈现引擎将HTML内容转换为PDF。 此功能主要用于打印发票,报价单和其他报告。 对于ERPNext 12,需要特定版本的wkhtmltopdf ,带有修补Qt的0.12.5

To install wkhtmltopdf, start by switching to a suitable directory to download the package, in this case /tmp:

要安装wkhtmltopdf ,请首先切换到合适的目录以下载软件包,在本例中为/tmp

  • cd /tmp cd / tmp

Download the appropriate wkhtmltopdf version and package for Ubuntu 18.04 from the project’s page:

从项目页面下载适用于Ubuntu 18.04的wkhtmltopdf版本和软件包:

  • wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.bionic_amd64.deb wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.bionic_amd64.deb

Now install the package using the dpkg tool:

现在,使用dpkg工具安装软件包:

  • sudo dpkg -i wkhtmltox_0.12.5-1.bionic_amd64.deb 须藤dpkg -i wkhtmltox_0.12.5-1.bionic_amd64.deb

Next, copy all relevant executables to your /usr/bin/ directory:

接下来,将所有相关的可执行文件复制到您的/usr/bin/目录中:

  • sudo cp /usr/local/bin/wkhtmlto* /usr/bin/ 须藤cp / usr / local / bin / wkhtmlto * / usr / bin /

Once the files are in place, change their permissions to make them executable:

文件到位后,更改其权限以使其可执行:

  • sudo chmod a+x /usr/bin/wk* 须藤chmod a + x / usr / bin / wk *

Now that wkhtmltopdf is properly installed we will add Redis to our database stack.

现在已经正确安装了wkhtmltopdf我们将Redis添加到我们的数据库堆栈中。

安装Redis (Installing Redis)

ERPNext 12 uses Redis to enhance MariaDB’s performance. Specifically, it assists with caching.

ERPNext 12使用Redis增强了MariaDB的性能。 具体来说, 它有助于缓存 。

First, install Redis from the official Ubuntu 18.04 repository:

首先,从官方的Ubuntu 18.04存储库安装Redis:

  • sudo apt install redis-server sudo apt安装redis服务器

Then enable Redis on startup:

然后在启动时启用Redis:

  • sudo systemctl enable redis-server sudo systemctl启用redis服务器

Now that you have added Redis to your stack, let’s take a moment to summarize what you have accomplished so far. Up to this point you have installed all the major components needed by ERPNext 12, which include:

现在您已将Redis添加到堆栈中,让我们花点时间总结到目前为止已完成的工作。 至此,您已经安装了ERPNext 12所需的所有主要组件,包括:

  • A MariaDB database backendMariaDB数据库后端
  • The Node.js JavaScript server environmentNode.js JavaScript服务器环境
  • The Yarn package manager纱线包管理器
  • A Redis database cacheRedis数据库缓存
  • The wkhtmltopdf PDF documents generator

    wkhtmltopdf PDF文档生成器

Whether you are installing the ERP system for development or for production, you are now ready for the next step, which is installing the Frappe full-stack framework and the actual ERPNext 12 web application.

无论您是安装用于开发还是生产的ERP系统,现在都准备好进行下一步,即安装Frappe全栈框架和实际的ERPNext 12 Web应用程序。

步骤6 —安装Frappe Bench CLI (Step 6 — Installing Frappe Bench CLI)

Now that you have installed all of ERPNext’s stack requirements you can unleash the flexibility of Frappe’s bench command-line utility. The bench CLI was designed with the purpose of assisting users in the process of installing, setting up, and managing applications like ERPNext that are based on the Frappe Framework. In the coming sections, you will install the bench CLI and then use it to complete the process of setting up ERPNext 12.

现在,您已经安装了ERPNext的所有堆栈要求,您可以释放Frappe的bench命令行实用程序的灵活性。 bench CLI旨在帮助用户在基于Frappe框架的ERPNext等应用程序的安装,设置和管理过程中提供帮助。 在接下来的部分中,您将安装bench CLI,然后使用它来完成设置ERPNext 12的过程。

Make sure that the Frappe user (in this case sammy) has the proper rights on its home directory:

确保Frappe用户(在本例中为sammy )对其home目录具有正确的权限:

  • sudo chown sammy -R /home/sammy

    sudo chown sammy -R / home / sammy

Now clone the frappe/bench repository to your home directory. Remember to replace sammy with your system username:

现在将frappe/bench存储库克隆到您的主目录。 请记住用您的系统用户名替换sammy

  • git clone https://github.com/frappe/bench /home/sammy/.bench --depth 1 --branch master

    git clone https://github.com/frappe/bench / home / sammy /.bench --depth 1 --branch master

Install the bench CLI:

安装bench CLI:

  • sudo pip3 install -e /home/sammy/.bench

    须藤pip3 install -e / home / sammy /.bench

This guide is assuming that you are installing ERPNext 12 for testing/production scenarios and thus that you are using the master branch. But if your intention is to develop applications or custom ERPNext modules, then the develop branch might be a better option. In either case, you are now prepared to install the Frappe Framework. This will be your final step before installing ERPNext itself.

本指南假定您正在安装用于测试/生产方案的ERPNext 12,并且正在使用master分支。 但是,如果您打算开发应用程序或定制的ERPNext模块,那么develop分支可能是一个更好的选择。 无论哪种情况,您现在都准备安装Frappe Framework。 这是安装ERPNext本身之前的最后一步。

设置Frappe框架环境 (Setting Up Frappe Framework Environment)

In this section, you will create a Frappe environment using the bench CLI.

在本节中,您将使用bench CLI创建Frappe环境 。

During Frappe’s installation you may exceed Ubuntu’s file watch limit, which by default is set to 8192. To avoid this issue set a higher limit using the following command:

在Frappe的安装过程中,您可能会超出Ubuntu的文件监视限制,该文件监视限制默认情况下设置为8192。为避免此问题,请使用以下命令设置更高的限制:

  • echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p 回声fs.inotify.max_user_watches = 524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

Next, initialize Frappe Framework 12. Replace Sammy with your system username:

接下来,初始化Frappe Framework12。用您的系统用户名替换Sammy:

  • bench init /home/sammy/frappe-bench --frappe-path https://github.com/frappe/frappe --frappe-branch version-12 --python python3

    Bench init / home / sammy / frappe -bench --frappe-path https://github.com/frappe/frappe --frappe-branch版本12 --python python3

During execution you may see one error about your path, along with several warnings. Let the process continue until the end. Once it’s finished, you will see an output similar to the following one, indicating that your environment was successfully created:

在执行期间,您可能会看到有关路径的一个错误以及一些警告。 让过程继续进行到结束。 完成后,您将看到类似于以下内容的输出,表明您的环境已成功创建:

Output
...
Done in 82.23s.
INFO:bench.utils:setting up backups
no crontab for sammy
SUCCESS: Bench /home/sammy/frappe-bench initialized

Note: The bench init process could halt if a spawn ENOMEM error is encountered. This error is caused when your system runs out of memory. You must fix the issue before continuing, either by installing more physical memory or allocating SWAP space.

注意:如果遇到spawn ENOMEM错误, bench init过程可能会停止。 当系统内存不足时,会导致此错误。 您必须先解决此问题,然后再安装更多物理内存或分配SWAP空间。

Let’s take a closer look at the command used to create the environment:

让我们仔细看看用于创建环境的命令:

  • /home/sammy/frappe-bench is the path where the Frappe Framework, the websites, and associated applications will be installed. A new directory, called frappe-bench in this example, will be created to accommodate all necessary files.

    /home/ sammy / frappe-bench是将安装Frappe框架,网站和相关应用程序的路径。 在本示例中,将创建一个名为frappe-bench新目录来容纳所有必需的文件。

  • --frappe-path points to Frappe repository, which in this case is the official Github repository.

    --frappe-path指向Frappe存储库,在这种情况下,它是官方的Github存储库。

  • --frappe-branch is the Frappe version to be installed. Because you want to install ERPNext 12, the chosen version is Frappe 12.

    --frappe-branch是要安装的Frappe版本。 因为您要安装ERPNext 12,所以选择的版本是Frappe 12。

  • --python is the Python version that will be used. ERPNext 12 requires Python 3.6+. Prior versions, however, still use Python 2.7.

    --python是将要使用的Python版本。 ERPNext 12需要Python 3.6+。 但是,以前的版本仍使用Python 2.7。

For more information regarding bench CLI commands please refer to the Bench Commands Cheatsheet.

有关更多信息, bench CLI命令请参考台式命令的cheatsheet 。

The flexibility offered by the Frappe framework goes way beyond using isolated environments. You can also create different websites and install applications into them.

Frappe框架提供的灵活性远远超出了隔离环境的范围。 您还可以创建其他网站并将应用程序安装到其中。

步骤7 —安装ERPNext 12 Web应用程序 (Step 7 — Installing the ERPNext 12 Web Application)

In this section, you will set up a Frappe-based site and then install the ERPNext 12 application on it.

在本部分中,您将设置一个基于Frappe的站点,然后在其上安装ERPNext 12应用程序。

Change to the directory where Frappe was initialized.

转到初始化Frappe的目录。

  • cd /home/sammy/frappe-bench

    cd / home / sammy / frappe-bench

Now download ERPNext 12 from its repository using the bench CLI:

现在,使用bench CLI从其存储库中下载ERPNext 12:

  • bench get-app erpnext https://github.com/frappe/erpnext --branch version-12 长凳get-app erpnext https://github.com/frappe/erpnext --branch版本12

Next, create the new site, replacing your_domain with the domain that you have associated with this server’s IP:

接下来,创建新站点,将your_domain替换为与此服务器IP关联的域:

  • bench new-site your_domain --admin-password 'erpnext_admin_password' --mariadb-root-username sammy --mariadb-root-password 'mariadb_password'

    板凳新站点请将改为 --admin密码“erpnext_admin_password” --mariadb根户名萨米 --mariadb根密码“mariadb_password”

Let’s take a moment to review the options used in the command above:

让我们花点时间回顾一下以上命令中使用的选项:

  • bench new-site creates a new site based on the Frappe Framework.

    bench new-site基于Frappe Framework创建一个新站点。

  • your_domain is the name for the new site. Make sure that your domain’s DNS has an A record pointing at your server’s IP.

    your_domain是新站点的名称。 确保您域的DNS具有指向您服务器IP的A记录。

  • erpnext_admin_password is the desired password for ERPNext’s Administrator user. Keep this password in a safe place—you will need it shortly.

    erpnext_admin_password是ERPNext 管理员用户所需的密码。 将此密码保存在安全的地方-您很快将需要它。

  • mariadb_password is the password that you created at the beginning of the guide for the MariaDB user sammy.

    mariadb_password是您在指南开头为MariaDB用户sammy创建的密码。

Following this, install the ERPNext application onto the site:

之后,将ERPNext应用程序安装到站点上:

  • bench --site your_domain install-app erpnext

    板凳--site your_domain install-app erpnext

Once the installation completes you will have a working ERPNext 12 application. Now let’s test it using a bench command:

安装完成后,您将拥有一个正在运行的ERPNext 12应用程序。 现在让我们使用bench命令对其进行测试:

  • bench start 替补开始

The above will initiate a real-time monitoring console showing you various messages regarding the webserver and other services. Open a web browser and navigate to localhost:8000 (for local installations) or your_domain:8000 (if you are using a remote server). You will see the ERPNext login screen (we will proceed with login and setup in a later step, once we have made our site production-ready).

上面的命令将启动一个实时监视控制台,向您显示有关Web服务器和其他服务的各种消息。 打开Web浏览器,然后导航到localhost:8000 (对于本地安装)或your_domain :8000 (如果使用的是远程服务器)。 您将看到ERPNext登录屏幕(一旦我们准备好站点的生产,我们将在后续步骤中继续登录和设置)。

After visiting your test deployment, return to your terminal and press CTRL+C. This will stop ERPNext and exit the monitoring console.

访问测试部署后,返回到终端并按CTRL+C 这将停止ERPNext并退出监视控制台。

If your main goal is creating modules or modifying ERPNext 12, then you could stop at this point. No more components are needed for development purposes. However, if what you need is a production-ready system that does not require a manual initialization, then you will need to install and configure a few additional components. This is your next step.

如果您的主要目标是创建模块或修改ERPNext 12,则可以在此停止。 出于开发目的,不需要更多组件。 但是,如果您需要的是不需要人工初始化的可用于生产环境的系统,那么您将需要安装和配置一些其他组件。 这是您的下一步。

步骤8 —设置ERPNext 12进行生产 (Step 8 — Setting Up ERPNext 12 For Production)

Although ERPNext 12 application is ready, the system as a whole it’s not completely prepared for production yet. To ensure ERPNext reliability and security you will need to enable a few additional services:

尽管ERPNext 12应用程序已准备就绪,但整个系统尚未完全准备好投入生产。 为了确保ERPNext的可靠性和安全性,您将需要启用一些附加服务:

  • Fail2ban provides an extra layer of protection against brute force attempts from malicious users and bots.

    Fail2ban提供了一层额外的保护,可防止恶意用户和僵尸程序进行暴力破解。

  • Nginx will be mainly used as a web proxy, redirecting all traffic from port 8000 to port 80 (HTTP) or port 443 (HTTPS)

    Nginx将主要用作Web代理,将所有流量从端口8000重定向到端口80 (HTTP)或端口443 (HTTPS)

  • Supervisor this service ensures that ERPNext key processes are constantly up and running, restarting them as necessary.

    主管此服务可确保ERPNext关键流程不断启动并运行,并在必要时重新启动它们。

Up to this point, you have installed and configured ERPNext 12 manually, which has allowed you to customize the process to match any particular use case. Nevertheless, for the rest of the production setup, you can leverage the convenience of the bench CLI and let it automate the installation and configuration of these remaining services.

到目前为止,您已经手动安装和配置了ERPNext 12,这使您可以自定义过程以匹配任何特定用例。 但是,在其余的生产设置中,您可以利用bench CLI的便利性,并使其自动执行这些剩余服务的安装和配置。

Ensure you are in the Frappe working directory:

确保您位于Frappe工作目录中:

  • cd /home/sammy/frappe-bench

    cd / home / sammy / frappe-bench

Now use the following command to finish setting up ERPNext 12 for production:

现在,使用以下命令完成针对生产的ERPNext 12的设置:

  • sudo bench setup production sammy --yes

    须藤长凳设置生产萨米-是的

The above will install and configure Nginx, Supervisor, and Fail2Ban and set sammy as the production environment owner.

上面的代码将安装并配置Nginx,Supervisor和Fail2Ban,并将sammy设置为生产环境所有者。

The configuration files created by the bench command are:

bench命令创建的配置文件为:

  • Two Nginx configuration files located at /etc/nginx/nginx.conf and /etc/nginx/conf.d/frappe-bench.conf

    位于/etc/nginx/nginx.conf/etc/nginx/conf.d/ frappe-bench .conf两个Nginx配置文件

  • One Fail2Ban proxy jail located at /etc/fail2ban/jail.d/nginx-proxy.conf and one filter located at /etc/fail2ban/filter.d/nginx-proxy.conf

    其中的fail2ban代理监狱位于/etc/fail2ban/jail.d/nginx-proxy.conf和一个过滤器位于/etc/fail2ban/filter.d/nginx-proxy.conf

These default configurations will suffice for this tutorial, but you should feel free to explore and adjust these files to match your own requirements. You can stop all services by running:

这些默认配置足以满足本教程的要求,但是您应该随意浏览和调整这些文件以符合您自己的要求。 您可以通过运行以下命令停止所有服务:

  • sudo supervisorctl stop all 须藤supervisorctl全部停止

And then, once you are ready, you can restart your services:

然后,一旦准备就绪,就可以重新启动服务:

  • sudo supervisorctl start all 须藤supervisorctl全部启动

Now you are ready to test your installation.

现在,您可以测试安装了。

测试您的ERPNext 12安装 (Testing Your ERPNext 12 Installation)

First of all, verify that key production services are running by using the following systemctl command and then piping it to grep:

首先,使用以下systemctl命令验证关键生产服务是否正在运行,然后将其通过管道传递给grep

  • systemctl list-unit-files | grep 'fail2ban\|nginx\|supervisor' systemctl列表单元文件| grep'fail2ban \ | nginx \ | supervisor'

You will see an output like this:

您将看到类似以下的输出:

Output
fail2ban.service                       enabled
nginx.service                          enabled
supervisor.service                     enabled

After confirming that everything is working as expected, you can test ERPNext 12 live on your server. Open your favorite browser and navigate to the domain where you are hosting your ERPNext 12 application.

确认一切正常后,您可以在服务器上实时测试ERPNext 12。 打开您喜欢的浏览器,然后导航到托管ERPNext 12应用程序的域。

After a few seconds, you should see the ERPNext 12 login screen. Use Administrator for the username and the erpnext_admin_password you created previously for the password.

几秒钟后,您应该看到ERPNext 12登录屏幕。 使用管理员作为用户名,并使用erpnext_admin_password创建的erpnext_admin_password作为密码。

In the next screen you will see a dropdown menu where you can select the UI language for the application:

在下一个屏幕中,您将看到一个下拉菜单,您可以在其中选择应用程序的UI语言:

Following language selection, ERPNext will prompt you about your country, timezone, and currency:

选择语言后,ERPNext会提示您有关国家,时区和货币的信息:

Once you complete your region information, you will be able to create the first ERPNext user. The information you provide will be used as the user’s login credentials.

完成区域信息后,您将可以创建第一个ERPNext用户。 您提供的信息将用作用户的登录凭据。

In the next screen, you will be asked about what ERPNext calls Domains. If you are not sure what your domain is, then select Distribution and click the Next button.

在下一个屏幕中,系统将询问您有关ERPNext称为Domains的信息 。 如果不确定您的域是什么,请选择“ 分发” ,然后单击“ 下一步”按钮。

Next, you will need to provide a company name and abbreviation.

接下来,您需要提供公司名称和缩写。

On the last screen, ERPNext will ask you what your company does, its bank name, the type of charts of accounts, and the fiscal year period. You will be able to enter additional banks later. For now, fill in all the fields as you like and then click the Complete Setup button.

在最后一个屏幕上,ERPNext将询问您公司的工作,银行名称,会计科目表的类型以及会计年度。 您稍后可以输入其他银行。 现在,根据需要填写所有字段,然后单击“ 完成设置”按钮。

Next, you will see a progress bar.

接下来,您将看到一个进度条。

Once the setup process completes, the ERPNext 12 main Dashboard will appear.

设置过程完成后,将显示ERPNext 12主仪表板。

You now have fully installed and configured an ERPNext 12 application.

现在,您已经完全安装并配置了ERPNext 12应用程序。

结论 (Conclusion)

Now that you have properly installed your ERPNext 12 application, you might want to start implementing the system for your business needs. A good starting point is clicking the Getting Started button on the ERPNext Dashboard. ERPNext will then help you configure the platform for all your business and e-commerce needs.

现在,您已经正确安装了ERPNext 12应用程序,您可能想要开始实施满足您业务需求的系统。 一个好的起点是单击ERPNext仪表板上的“ 入门”按钮。 然后,ERPNext将帮助您为所有业务和电子商务需求配置平台。

You may also wish to enhance ERPNext’s speed. If that is the case, then you can read ERPNext Performance Tuning, which will guide you through best practices and how to debug performance-related issues.

您可能还希望提高ERPNext的速度。 如果是这种情况,那么您可以阅读ERPNext Performance Tuning ,它将指导您完成最佳实践以及如何调试与性能相关的问题。

翻译自: https://www.digitalocean.com/community/tutorials/how-to-install-an-erpnext-stack-on-ubuntu-18-04

如何在Ubuntu 18.04上安装ERPNext堆栈相关推荐

  1. skype linux 安装,如何在Ubuntu 18.04上安装Skype

    Skype是世界上最流行的通信应用程序之一,它使您可以拨打免费的在线音频和视频电话,以及可负担得起的拨打全球移动电话和固定电话的国际电话. Skype不是开源应用程序,也不包含在Ubuntu存储库中. ...

  2. webmin安装_如何在Ubuntu 18.04上安装Webmin

    webmin安装 Are you averse to running commands on a terminal and instead prefer managing your Linux sys ...

  3. 如何在Ubuntu 18.04上安装/卸载NodeJS

    NodeJS is a JavaScript framework that allows you to build fast network applications with ease. In th ...

  4. 如何在Ubuntu 18.04上安装Elasticsearch Logstash Kibana(Elastic Stack)

    In this guide, you will learn to install Elastic stack on Ubuntu 18.04. Elastic stack, formerly know ...

  5. 如何在Ubuntu 18.04上安装OpenCV

    本教程介绍了如何在Ubuntu 18.04上安装OpenCV. OpenCV(开源计算机视觉库)是一个开源计算机视觉库,具有C ++,Python和Java的绑定.它的用途非常广泛,包括医学图像分析, ...

  6. php7安装flarum,如何在Ubuntu 18.04上安装Flarum社区软件

    如何在Ubuntu 18.04上安装Flarum社区软件 Flarum是一款用PHP和Mithril.js编写的免费开源软件. 它是一款简单,快速,美观且反应灵敏的软件,专门设计用于跨平台的一致性和直 ...

  7. mac如何启用cpu虚拟化_如何在 Ubuntu 18.04 上安装 KVM

    本文最先发布在: 如何在 Ubuntu 18.04 上安装 KVM​www.itcoder.tech KVM(基于内核的虚拟机)是一个内置于Linux内核的开源虚拟化技术.它允许你基于 Linux 或 ...

  8. ubuntu memcached php,如何在 Ubuntu 18.04 上安装 Memcached

    Memcached 是一个免费的开源高性能内存中键值数据存储. 它最常用于通过从数据库调用的结果缓存各种对象来加速应用程序. 在本教程中,我们将介绍在 Ubuntu 18.04 上安装和配置最新版 M ...

  9. 如何在Ubuntu 18.04上安装Django

    Django是一个免费的开源高级Python Web框架,旨在帮助开发人员构建安全,可扩展和可维护的Web应用程序. 根据您的需要,有不同的方法来安装Django.它可以使用pip在系统范围内安装或在 ...

最新文章

  1. 【请求后台接口】30秒完成Angular10精简版HttpClient请求服务搭建
  2. Uber 前无人驾驶工程师告诉你,国内无人驾驶之路还要走多久?
  3. 顺序表-顺序表表示集合-交集( for + whlie ,不断遍历)
  4. Python几个函数的の测试
  5. #51CTO学院四周年# 成长路上的我和你
  6. 九、linux文件系统
  7. 通过 netty 实现异步任务回调获取执行结果
  8. JVM发生OOM的 8 种原因、及解决办法
  9. linux使用rsync增量保存文件与无交互自动传输
  10. Spark代码生成技术之现象CodeGenerator
  11. 9. JEB 1.5插件编写一
  12. @程序员,你的 996,可能是给公司无能的管理背锅
  13. 三菱plc分拣程序_三菱PLC实现电梯控制方案,含全套程序设计
  14. 机器学习笔记(二十三):算法精准率、召回率
  15. msdn系统镜像下载
  16. 加来道雄 基因编辑 纳米机器人_潜力巨大:纳米材料结合CRISPR基因编辑,成功改善阿尔茨海默病症状...
  17. 电脑不用下软件开wifi
  18. 用java开发编译器之:Thompson构造,将正则表达式转换为有限状态自动机
  19. VSCode工具JS文件白色字体问题
  20. 2012年计算机工作总结,计算机教师工作总结2011-2012

热门文章

  1. 信息检索导论第八章-信息检索的评价
  2. ECharts绘制地图分布,可自定义城市散点
  3. PM狗到底是TMD啥玩意 又DO那些事情
  4. mac设置iterm2的Badge
  5. 安卓 获取屏幕像素 密度 计算真是高度
  6. 要考MCITP证书了
  7. 【操作系统】进程的三种基本状态及其转换
  8. 微信祝福贺卡小程序V4.7.14
  9. DRV8833直流电机驱动板在智能小车的应用
  10. The unauthenticated git protocol on port 9418 is no longer supported