如何在 Ubuntu 14.04 上使用 HAProxy 作为 WordPress 应用程序服务器的第 4 层负载均衡器

2023-11-13

介绍

在本教程中,我们将教您如何使用 HAProxy 作为 WordPress 服务器(特别是 Web 应用程序层)的第 4 层负载均衡器。负载平衡应用程序服务器为您的设置添加了冗余,从而提高了服务器故障或网络问题时的可靠性,并将负载分散到多个服务器上以提高读取性能。我们假设您的设置包括一个连接到单独的 MySQL 数据库服务器的 WordPress 应用程序服务器(请参阅有关如何设置它的教程的先决条件)。

如果您仅运行单个 Web 服务器应用程序,则第 4 层负载平衡适合您的站点。如果您的环境更复杂(例如,您想在单独的服务器上运行 WordPress 和静态 Web 服务器,并使用单个入口点),则需要研究应用程序层(第 7 层)负载平衡。

本教程以 WordPress 为例编写,但其一般概念可用于负载平衡其他无状态 Web 应用程序。

先决条件

在继续本教程之前,您应该已完成有关使用单独的数据库服务器(或具有类似设置)设置 WordPress 站点的教程:如何使用 MySQL 设置远程数据库以优化站点性能

按照教程在单独的 Web 应用程序和数据库服务器上设置 WordPress 后,您应该拥有两个 VPS。由于我们将处理多个 VPS,出于参考目的,我们将您的两个现有 VPS 称为以下名称:

  • WordPress-1:您的 WordPress Web 应用程序服务器
  • mysql-1:您的 WordPress MySQL 服务器

当前环境的抽象视图如下所示:

WordPress Application and Database Server

除了您当前的环境之外,在本教程中我们还需要两个额外的 VPS。我们将称他们为:

  • wordpress-2:您的第二个 WordPress Web 应用程序服务器
  • haproxy-www:您的 HAProxy 服务器,用于负载平衡

如果您不熟悉基本的负载平衡概念或术语,例如四层负载均衡 or backends or ACLs,这里有一篇文章解释了基础知识:HAProxy 和负载均衡概念简介.

Our Goal

在本教程结束时,我们希望拥有一个如下所示的环境:

HAProxy Load Balanced Web Application

也就是说,您的用户将通过 HAProxy 服务器访问您的 WordPress 站点,HAProxy 服务器将以循环方式将它们转发到负载平衡的 WordPress 应用程序服务器。您的两个(或更多,如果您愿意的话)都将访问您的 MySQL 数据库。

快照您当前的环境

Optional:在继续本教程之前,您需要创建当前环境的快照。在本教程中,快照有两个目的:

  1. 如果发生错误,恢复到工作环境
  2. 对原始服务器进行一次性复制,无需再次安装和配置 PHP 和 Nginx

Note:从 2016 年 10 月开始,快照费用为每月每 GB 0.05 美元,具体取决于文件系统内的已利用空间量。

拍一张你的快照WordPress-1 and mysql-1 VPSs.

现在我们有了快照,我们准备好继续构建环境的其余部分。

创建您的第二个 Web 应用程序服务器

现在我们需要创建第二个 VPS,它将与我们原来的 Web 应用程序服务器共享负载。有两种选择:

  1. 从原始 VPS 的快照创建一个新的 VPS,WordPress-1
  2. 从头开始创建一个新的 VPS,并使用与之前相同的软件和配置手动设置它WordPress-1

无论采用哪种方法,请务必选择专用网络选项(如果可用)。建议本教程中使用的所有 VPS 使用专用网络。

如果您没有专用网络选项,请将专用 IP 地址替换为您的 VPS 公共 IP 地址。请注意,在传输敏感数据(例如应用程序和数据库服务器之间的未加密数据库密码)时使用公共 IP 地址并不是一个好的做法,因为该信息将通过公共 Internet 传输。

选项 1:使用快照创建新的 VPS

创建一个新的 VPS,名为wordpress-2,使用您拍摄的快照WordPress-1.

如果您选择此方法,请跳过“选项 2”到“同步 Web 应用程序文件”部分。

选项 2:从头开始创建新的 VPS

这是“选项 1”的替代方案。

如果您想设置wordpress-2从头开始服务器,而不是使用快照WordPress-1,确保安装相同的软件。请参阅设置网络服务器如果您不记得如何安装和配置原始 WordPress 服务器,请参阅先决条件文档的部分。

为了快速参考,以下是您需要安装或复制的相关软件和配置文件的列表:

软件:

  • MySQL客户端
  • Nginx
  • PHP

要安装此软件,请在您的计算机上运行以下命令wordpress-2 server:

sudo apt-get update
sudo apt-get install mysql-client
sudo apt-get install nginx php5-fpm php5-mysql

需要编辑或创建以匹配原始应用程序服务器的配置文件:

  • /etc/php5/fpm/php.ini
  • /etc/php5/fpm/pool.d/www.conf
  • /etc/nginx/sites-available/example.com
  • /etc/nginx/sites-enabled/example.com

完成软件配置后,不要忘记使用以下命令重新启动 PHP 和 Nginx:

sudo service php5-fpm restart
sudo service nginx restart

完成新应用程序服务器的安装和配置后,我们需要同步 WordPress 应用程序文件。

同步 Web 应用程序文件

在对应用程序进行负载平衡之前,我们需要确保新服务器的 Web 应用程序文件与原始 WordPress 服务器同步。这些文件的位置取决于您安装 WordPress 和其他一些文件的位置。除了WordPress需要运行的php文件之外,通过WordPress界面上传的文件和安装的插件在上传或安装时也需要同步。在先决条件文档中,我们安装了 WordPress/var/www/example.com–我们将在所有示例中使用此位置,但您需要将其替换为实际的 WordPress 安装路径。

有多种方法可以在服务器之间同步文件 - NFS 或 glusterFS 都是合适的选择。我们将使用 glusterFS 来满足我们的同步需求,因为它允许每个应用程序服务器存储自己的应用程序文件副本,同时保持整个文件系统的一致性。这是我们的目标共享存储的概念图:

glusterFS Shared Volume

如果您不熟悉本节中使用的任何 glusterFS 术语,请参阅这个 GlusterFS 教程,本节以此为基础。

Note:以下小节之间跳转WordPress-1 and wordpress-2服务器频繁。请务必在正确的服务器上运行命令,否则您会遇到问题!

编辑主机文件

Note:如果您有内部 DNS,并且它有 VPS 私有 IP 地址的记录,请随意跳过此步骤,并将这些主机名替换为其余的 glusterFS 设置命令和配置。

否则,在 wordpress-1 和 wordpress-2 VPS 上:

编辑/etc/hosts:

sudo vi /etc/hosts

添加以下两行,将突出显示的单词替换为应用程序服务器的 IP 各自的 IP 地址:

wordpress_1_private_IP wordpress-1 wordpress_2_private_IP wordpress-2 前>

保存并退出。

安装 GlusterFS 并配置复制卷

On WordPress-1 and wordpress-2 VPSs:

使用 apt-get 安装 glusterFS 服务器软件:

sudo apt-get install glusterfs-server

在 wordpress-1 上,运行以下命令与您的对等wordpress-2:

sudo gluster peer probe wordpress-2

在 wordpress-2 上,运行以下命令进行对等WordPress-1:

sudo gluster peer probe wordpress-1

在 wordpress-1 和 wordpress-2 上,要创建 glusterFS 存储其管理的文件的位置,请运行:

sudo mkdir /gluster-storage

在 wordpress-1 上,创建一个名为的复制 glusterFS 卷volume1,它将把它的数据存储在/gluster-storage在两台应用程序服务器上运行:

sudo gluster volume create volume1 副本 2 传输 tcp wordpress-1:/gluster-storage wordpress-2:/gluster-storage 力 前> 预期输出:卷创建:卷1:成功:请启动卷以访问数据 前>

在 wordpress-1 上再次运行以下命令来启动刚刚创建的 glusterFS 卷,volume1:

sudo gluster 卷启动 volume1 前> 预期输出:卷开始:卷1:成功 前>

在 wordpress-1 上,如果您想查看有关刚刚创建并启动的 glusterFS 卷的信息,请运行:

sudo gluster volume info

您应该看到有两个 glusterFS“砖块”,每个 WordPress 服务器一个。

现在我们已经运行了一个 glusterFS 卷,让我们挂载它,以便我们可以将它用作复制文件系统。

挂载共享存储

我们首先将文件系统挂载到 wordpress-1 上。

在 wordpress-1 上,编辑 fstab,以便我们的共享文件系统将在启动时挂载:

sudo vi /etc/fstab

将以下行添加到文件末尾以供使用/storage-pool作为我们的挂载点。请随意替换它(此处以及 glusterFS 设置的其余部分):

wordpress-1:/volume1 /storage-pool glusterfs 默认值,_netdev 0 0 前>

保存并退出。

在 wordpress-1 上,您现在可以将 glusterFS 卷挂载到/storage_pool文件系统:

sudo mkdir /存储池 sudo mount /存储池 前>

这会将共享卷 /storage-pool 安装在您的WordPress-1虚拟专用服务器。你可以运行df -h它应该被列为已安装的文件系统。接下来,我们将按照类似的过程将共享存储挂载到wordpress-2.

在 wordpress-2 上,编辑 fstab,以便我们的共享文件系统将在启动时挂载:

sudo vi /etc/fstab

将以下行添加到文件末尾以供使用/storage-pool作为我们的挂载点。如果您使用了不同的值,请确保在此处替换该值:

wordpress-2:/volume1 /storage-pool glusterfs 默认值,_netdev 0 0 前>

在 wordpress-2 上,您现在可以将 glusterFS 卷挂载到/storage_pool文件系统:

sudo mkdir /storage-pool
sudo mount /storage-pool

现在,在该目录中创建、修改或删除的任何文件/storage-pool即使其中一台服务器暂时停机,文件系统也将在两台服务器之间同步。

将 WordPress 文件移至共享存储

下一步就是搬家WordPress-1的 WordPress 文件到共享存储。请用您自己的价值观替换突出显示的单词。/var/www/example.com代表您的 WordPress 文件所在的位置(以及 Nginx 正在查找文件的位置),以及example.com其本身只是目录的基本名称。

在 wordpress-1 上,运行这些命令将您的 WordPress 应用程序文件移动到共享文件系统,/storage-pool:

sudo mv /var/www/example.com /storage-pool/ sudo chown www-data:www-data /storage-pool/example.com 前>

接下来,您需要创建一个符号链接,该链接指向共享文件系统上的 WordPress 文件,您的 WordPress 文件最初存储在其中,运行:

sudo ln -s /storage-pool/example.com /var/www/example.com 前>

现在您的 WordPress 文件位于共享文件系统上,/storage-pool,并且 Nginx 仍然可以通过其原始位置访问它们,/var/www/example.com.

将新应用程序服务器指向共享存储

下一步是在我们的新 Web 应用程序服务器上创建一个符号链接,该链接指向共享文件系统上的 WordPress 文件。

如果您创建了wordpress-2使用快照选项,运行以下命令在 wordpress-2 上:

sudo rm /var/www/example.com sudo ln -s /storage-pool/example.com /var/www/example.com 前>

如果您创建了 *wordpress-2从头开始,运行以下命令在 wordpress-2 上:

sudo mkdir -p /var/www sudo ln -s /storage-pool/example.com /var/www/example.com 前>

这就是同步 WordPress 应用程序文件的过程!下一步是提供我们的新应用程序服务器,wordpress-2,访问数据库。

创建新的数据库用户

因为MySQL通过用户名和源主机来识别用户,所以我们需要创建一个新的wordpress用户可以从我们的新应用程序服务器连接,wordpress-2.

在您的数据库 VPS 上,mysql-1,连接到MySQL控制台:

mysql -u root -p

在以下 MySQL 语句中,将所有突出显示的单词替换为适合您的环境的内容:

  • wordpress用户:您的 MySQL WordPress 用户。确保它与已有的用户名相同
  • wordpress_2_private_IP:你的私有IPwordpress-2 VPS
  • password:您的 MySQL WordPress 用户的密码。确保它与已有的密码相同(并且这是一个好的密码!)

运行此语句创建一个可以从新的 WordPress 服务器连接的 MySQL 用户,wordpress-2:

创建用户 'wordpressuser'@'wordpress_2_private_IP' 由“密码'标识; 前>

再次,用你自己的价值观代替wordpressuser, wordpress_2_private_IP,并且,如果您的database未命名为“wordpress”,请确保也更改它。

wordpress.* 上的选择、删除、插入、更新授予 'wordpressuser'@' wordpress_2_private_IP'; 同花顺特权; 前>

现在是您的第二个 Web 应用程序服务器,wordpress-2,可以登录到你的数据库服务器上的MySQL,mysql-1.

尚未实现负载平衡

请注意,有两个正在运行的 Web 应用程序服务器,但应用程序未实现负载平衡,因为每个服务器都必须通过其各自的公共 IP 地址进行访问。我们希望能够通过相同的 URL 访问应用程序,例如http://example.com/,并在两个 Web 应用程序服务器之间平衡流量。这就是 HAProxy 发挥作用的地方。

安装HAProxy

使用专用网络创建新的 VPS。对于本教程,我们将其称为haproxy-www.

In our haproxy-wwwVPS,让我们安装 HAProxyapt-get:

sudo apt-get update
sudo apt-get install haproxy

我们需要启用 HAProxy 初始化脚本,以便 HAProxy 将与您的 VPS 一起启动和停止。

sudo vi /etc/default/haproxy

改变值ENABLED to 1启用 HAProxy 初始化脚本:

ENABLED=1

保存并退出。现在 HAProxy 将随您的 VPS 一起启动和停止。另外,您现在可以使用service命令来控制您的 HAProxy。让我们检查一下它是否正在运行:

user@haproxy-www:/etc/init.d$ sudo service haproxy status
haproxy not running.

它没有运行。没关系,因为我们需要先对其进行配置才能使用它。接下来让我们为我们的环境配置 HAProxy。

HAProxy 配置

HAProxy的配置文件分为两个主要部分:

  • Global:设置进程范围的参数
  • Proxies: 由组成defaults, listen, frontend, and backend参数

再次强调,如果您不熟悉 HAProxy 或基本负载均衡概念和术语,请参考此链接:HAProxy 和负载均衡概念简介

HAProxy 配置:全局

所有 HAProxy 配置都应在您的 HAProxy VPS 上完成,haproxy-www.

首先,我们复制一份默认的haproxy.cfg file:

cd /etc/haproxy; sudo cp haproxy.cfg haproxy.cfg.orig

现在在文本编辑器中打开 haproxy.cfg:

sudo vi /etc/haproxy/haproxy.cfg

您将看到已经定义了两个部分:global and defaults。首先,我们将对一些默认参数进行一些更改。

Under defaults,查找以下行:

mode    http
option  httplog

在这两种情况下将单词“http”替换为“tcp”:

mode    tcp
option  tcplog

选择 tcp 作为模式会将 HAProxy 配置为执行第 4 层负载均衡。在我们的例子中,这意味着特定 IP 地址和端口上的所有传入流量都将转发到同一后端。如果您不熟悉这个概念,请阅读负载平衡的类型我们的部分HAProxy 简介.

暂时不要关闭配置文件!接下来我们将添加代理配置。

HAProxy 配置:代理

我们要添加的第一件事是前端。对于基本的第 4 层负载平衡设置,前端侦听特定 IP 地址和端口上的流量,然后将传入流量转发到指定的后端。

在文件的末尾,让我们添加我们的前端,www。一定要更换haproxy_www_public_IP公共IP您的 haproxy-www VPS 的:

前端 www 绑定 haproxy_www_public_IP:80 default_backend WordPress 后端 前>

以下是上面前端配置片段中每一行含义的解释:

  • 前端 www:指定一个名为“www”的前端,因为我们将使用它来处理传入的 www 流量
  • 绑定 haproxy_www_public_IP:80: 代替haproxy_www_public_IP使用 haproxy-www 的公共 IP 地址。这告诉 HAProxy 该前端将处理该 IP 地址和端口上的传入网络流量
  • default_backend WordPress 后端:这指定该前端的所有流量都将转发到WordPress 后端,我们将在下一步中定义

完成前端配置后,通过添加以下行继续添加后端。请务必将突出显示的单词替换为适当的值:

后端 WordPress 后端 平衡循环赛 TCP模式 服务器 wordpress-1 wordpress_1_private_IP:80 检查 服务器 wordpress-2 wordpress_2_private_IP:80 检查 前>

以下是上面后端配置片段中每一行含义的解释:

  • 后端 WordPress 后端:指定名为“wordpress-backend”的后端
  • 平衡循环赛:指定该后端将使用“roundrobin”负载平衡算法
  • mode tcp:指定该后端将使用“tcp”或第 4 层代理
  • 服务器 WordPress-1 ...:指定名为“wordpress-1”的后端服务器、私有IP(您必须替换)和它正在侦听的端口,80在这种情况下。 “check”选项使负载均衡器定期对此服务器执行健康检查
  • 服务器 WordPress-2 ...:这指定了一个名为“wordpress-2”的后端服务器

现在保存并退出。 HAProxy 现在已准备好启动,但我们首先启用日志记录。

启用 HAProxy 日志记录

在 HAProxy 中启用日志记录非常简单。首先编辑rsyslog.conf文件:

sudo vi /etc/rsyslog.conf

然后找到以下两行,取消注释以启用 UDP 系统日志接收。完成后,它应该如下所示:

$ModLoad imudp
$UDPServerRun 514
$UDPServerAddress 127.0.0.1

现在重新启动 rsyslog 以启用新配置:

sudo service rsyslog restart

HAProxy 日志记录现已启用!日志文件将创建于/var/log/haproxy.logHAProxy 启动后。

启动 HAProxy 和 PHP/Nginx

关于 haproxy-www,启动 HAProxy 以使您的配置更改生效:

sudo service haproxy restart

根据您设置新应用程序服务器的方式,您可能需要通过重新启动 PHP 和 Nginx 来重新启动 WordPress 应用程序。

在 wordpress-2 上,通过运行以下命令重新启动 PHP 和 Nginx:

sudo service php5-fpm restart
sudo service nginx restart

现在 WordPress 应该在您的两台应用程序服务器上运行,并且它们是负载平衡的。但还需要进行最后一项配置更改。

更新 WordPress 配置

现在您的 WordPress 应用程序的 URL 已更改,我们必须更新 WordPress 中的一些设置。

在任一 WordPress 服务器上,编辑您的 wp-config.php。它位于您安装 WordPress 的位置(在本教程中,它安装在/var/www/example.com但您的安装可能会有所不同):

cd /var/www/example.com; sudo vi wp-config.php 前>

找到靠近顶部的一行:define('DB_NAME', 'wordpress');并在其上方添加以下行,替换突出显示的值:

定义('WP_SITEURL','http://haproxy_www_public_IP'); 定义('WP_HOME','http://haproxy_www_public_IP'); 前>

保存并退出。现在,WordPress URL 已配置为指向您的负载均衡器,而不仅仅是您的原始 WordPress 服务器,当您尝试访问 wp-admin 仪表板时,该服务器就会发挥作用。

负载均衡完成!

您的 Web 应用程序服务器现在已实现负载平衡!您的用户现在可以通过负载均衡器的公共 IP 地址或域名访问您的负载均衡 WordPress,haproxy-www!

结论

现在,您的用户负载将分布在您的两个 WordPress 服务器之间。此外,如果您的一台 WordPress 应用程序服务器出现故障,您的网站仍然可用,因为另一台 WordPress 服务器将转发所有流量!

通过此设置,请记住您的 HAProxy 负载均衡器服务器,haproxy-www,以及您的数据库服务器,mysql-1,需要运行您的网站才能正常工作。

作者:Mitchell Anicas
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Ubuntu 14.04 上使用 HAProxy 作为 WordPress 应用程序服务器的第 4 层负载均衡器 的相关文章

  • 将 Docker 与具有 Node-gyp 依赖项的 Nodejs 一起使用

    我计划使用 Docker 部署 node js 应用程序 该应用程序有几个需要node gyp的依赖项 Node gyp 根据交付平台上的编译库构建这些模块 例如 canvas lwip qrcode 根据我的经验 这些构建可能高度依赖于操
  • 如何查明 Ubuntu 上安装了哪个版本的 GTK+?

    我需要确定 Ubuntu 上安装了哪个版本的 GTK 男人似乎不帮忙 这个建议 https stackoverflow com a 126145 会告诉您安装了哪个 2 0 的次要版本 不同的主要版本将具有不同的包名称 因为它们可以在系统上
  • Docker 中的 Airflow:如何将 DAG 添加到 Airflow?

    我想将 DAG 文件添加到 Airflow 它在 Ubuntu 上的 Docker 中运行 我用了以下git 存储库 https github com puckel docker airflow 包含配置和 docker 镜像的链接 当我跑
  • 操作错误:尝试在 ubuntu 服务器中写入只读数据库

    我正在使用 FlaskApp 运行mod wsgi and apache2在 Ubuntu 服务器上 我尝试运行烧瓶应用程序localhost成功 然后部署到ubuntu服务器上 但是当我尝试更新数据库时 出现错误 Failed to up
  • Ubuntu 11.10 上的 c 数学链接器问题 [重复]

    这个问题在这里已经有答案了 我从 Ubuntu 升级后出现了一些奇怪的错误 10 11 11 04 i dont know 到 11 10 我正在得到一个undefined reference to sqrt 使用 math h 时并与 l
  • 给出 5 个参数,但在终端中只得到 3 个参数

    我想将一个文件传递给一个c 程序 如果我在 IDE 中执行此操作 test string string lt test txt return argc 5 但在终端上我刚刚得到argc 3 看来 这是因为 什么是 lt 意思是 我正在使用
  • 在 Ubuntu 中执行 .cgi 文件

    我在 Ubuntu 下运行 Apache PHP 当我运行 cgi 文件时 通过http localhost mycgi cgi 浏览器将显示代码而不是运行它 如何让浏览器执行 CGI 文件而不是显示其内容 将这些行添加到您的 apache
  • 我需要启用哪些权限才能使 Docker 卷正常工作?

    假设我有一个保存一些数据的 Docker 容器 我希望这些数据能够持续存在 如果容器被停止 删除 升级等 我仍然希望数据位于主机操作系统文件系统上的可访问位置 目前 我的解决方案是创建一个目录 srv service name在我的主机上
  • ubuntu中R的igraph包的安装

    我使用以下命令在 ubuntu 中安装 R 的 igraph 包 install packages igraph 但我收到一条错误消息 警告 无法访问存储库的索引 http ftp iitm ac in cran src contrib h
  • Tomcat 6找不到mysql驱动

    这里有一个类似的问题 但关于类路径 ClassNotFoundException com mysql jdbc Driver https stackoverflow com questions 1585811 classnotfoundex
  • 无法使用maven编译java项目

    我正在尝试在 java 16 0 1 上使用 maven 构建 IntelliJ 项目 但它无法编译我的项目 尽管 IntelliJ 能够成功完成 在此之前 我使用maven编译了一个java 15项目 但我决定将所有内容更新到16 0 1
  • opencv_contrib编译错误:类没有成员

    我必须实现 SURF 算法来进行图像拼接 我在使用列出的库时遇到了问题here https stackoverflow com questions 33560251 opencv 3 0 0 ubuntu 14 04 nonfree non
  • 什么是 TTY?如何在 Ubuntu 上启用它?

    我目前正在设置一个 Node js 服务器 并且在这里使用调试模块https github com visionmedia debug https github com visionmedia debug 我正在尝试启用它 以便我可以在输出
  • 如何在 GNU/Linux 上设置 Subversion (SVN) 服务器 - Ubuntu [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一台运行 Ubuntu 的笔记本电脑 我想将其用作 Subversion 服务器 既让我自己在本地承诺 也让其他人远程承诺 要使其
  • Linux中使用管道进行进程间通信

    我已经编写了在 linux 中写入数字以进行管道传输的代码 如下所示 但显示错误 任何人都可以帮助我解决这个问题 基本上该程序的问题陈述如下 一个程序将打开一个管道 向管道写入一个数字 其他程序将打开同一管道 读取数字并打印它们 关闭两个管
  • Python子进程Exec格式错误

    抱歉 如果这个问题很愚蠢 我正在使用Pythonsubprocess在 Ubuntu Natty 11 04 中调用 bat 文件的语句 但是 我收到错误消息 Traceback most recent call last File pfa
  • 请检查 PPA 名称或格式是否正确

    在我的 Ubuntu 14 04 中 我尝试安装 Captiva 图标包 如上所列这个 omgubuntu 帖子 http www omgubuntu co uk 2014 09 4 gorgeous linux icon themes d
  • 静态 OpenCV 库中未定义的引用

    我有一个使用 OpenCV 3 1 的 C 项目 并且使用共享库可以正常工作 但现在我想使用静态库 位于项目目录中的文件夹中 来编译它 因为我希望能够在未安装 OpenCV 的情况下导出它 如果需要还可以编辑和重新编译 这次我重新编译了 O
  • BASH 中的空函数

    我正在使用 FPM 工具创建 deb 包 此工具在从支持的文件中删除包之前 之后创建 不幸的是FPM生成的bash脚本包含这样的函数 dummy 该脚本退出时出现错误 语法错误 意外 BASH 不允许空函数吗 哪个版本的 bash linu
  • Eclipse Kepler 在 64 位 ubuntu 上冻结

    几天前我刚刚将 Ubuntu 升级到 14 04 并在此过程中从 32 位切换到 64 位 从那时起 Eclipse 就变得非常不稳定 运行几分钟后 它将开始随机冻结越来越长的时间 特别是在代码完成时 已经必须禁用它 而且在剪切 粘贴时 偶

随机推荐

  • 如何在 Ubuntu 18.04 上安装 Odoo 13

    Odoo 是一款流行的开源商业应用程序套件 它提供一系列应用程序 包括 CRM 电子商务 网站构建器 计费 会计 制造 仓库 项目管理 库存等等 所有这些都无缝集成 Odoo根据使用案例和可用技术 可以通过多种方式安装 安装 Odoo 最简
  • 如何在 Ubuntu 18.04 上安装和配置 Squid 代理

    Squid 是一个功能齐全的缓存代理 支持流行的网络协议 如 HTTP HTTPS FTP 等 Squid 主要用于通过缓存重复请求 过滤 Web 流量和访问地理限制内容来提高 Web 服务器的性能 本教程将引导您完成在 Ubuntu 18
  • 如何在 Ubuntu 20.04 上安装 Node.js 和 npm

    Node js 是一个基于 Chrome 的 JavaScript 构建的跨平台 JavaScript 运行时环境 旨在在服务器端执行 JavaScript 代码 它通常用于构建后端应用程序 但它也作为全栈和前端解决方案而流行 npm 是
  • 如何在 Ubuntu 20.04 上安装 Gitea

    Gitea 是一个用 Go 编写的快速且易于使用的自托管 git 服务器 它包括存储库文件编辑器 项目问题跟踪 用户管理 通知 内置 wiki 等等 Gitea是一个轻量级应用程序 可以安装在低功耗系统上 如果您正在寻找内存占用小得多的 G
  • 如何在 CentOS 8 上安装 MariaDB

    MariaDB 是一个开源关系数据库管理系统 向后兼容 是 MySQL 的二进制直接替代品 它是由 MySQL 的一些原始开发人员和社区中的许多人开发的 在本教程中 我们将解释如何在 CentOS 8 上安装和保护 MariaDB 10 3
  • 如何在 Debian 9 上安装 Memcached

    Memcached 是一个免费开源的高性能内存键值数据存储 它主要用于通过缓存数据库调用结果中的各种对象来加速应用程序 在本教程中 我们将引导您完成在 Debian 9 上安装和配置 Memcached 先决条件 您需要以以下身份登录具有
  • 如何在 Ubuntu 20.04 上安装和配置 Squid 代理

    Squid 是一个功能齐全的缓存代理 支持流行的网络协议 如 HTTP HTTPS FTP 等 它可用于通过缓存重复请求 过滤 Web 流量和访问地理限制内容来提高 Web 服务器的性能 本教程介绍如何在 Ubuntu 20 04 上设置
  • Linux 中的最后一个命令

    如果您正在管理多用户系统 您通常需要知道谁 何时 从何处登录到计算机 last是一个命令行实用程序 显示有关系统用户上次登录会话的信息 当您需要跟踪用户活动或调查可能的安全漏洞时 它非常有用 本文介绍了如何使用以下方式审核登录系统的人员 l
  • 在 CentOS 8 上安装 Odoo 13

    Odoo 是世界上最受欢迎的一体化商业软件 它提供一系列业务应用程序 包括 CRM 网站 电子商务 计费 会计 制造 仓库 项目管理 库存等等 全部无缝集成 本教程介绍了如何安装Odoo13 来自 CentOS 8 计算机上的 Python
  • 如何在 Ubuntu 18.04 上安装 Tomcat 8.5

    Apache Tomcat 是 Java Servlet JavaServer Pages Java 表达式语言和 Java WebSocket 技术的开源实现 它是当今世界上采用最广泛的应用程序和 Web 服务器之一 Tomcat 使用简
  • Java中的抽象工厂设计模式

    欢迎使用 java 示例中的抽象工厂设计模式 抽象工厂设计模式是创建模式之一 抽象工厂模式几乎类似于工厂模式但事实上它更像是工厂中的工厂 抽象工厂 If you are familiar with factory design patter
  • 如何使用 Rsync 同步本地和远程目录

    介绍 Rsync 这代表远程同步 是一款远程与本地文件同步工具 它使用一种算法 通过仅移动已更改的文件部分来最大程度地减少复制的数据量 在本教程中 我们将定义 Rsync 回顾一下使用时的语法rsync 解释如何使用 Rsync 与远程系统
  • 弹簧@Component

    Spring Component 注解用于将一个类表示为 Component 代表着Spring框架将自动检测这些类依赖注入当使用基于注释的配置和类路径扫描时 弹簧组件 通俗地说 组件负责一些操作 Spring 框架提供了另外三个在将类标记
  • 使用 Graphite、StatsD 和 CollectD 跟踪统计数据简介

    介绍 有很多理由可以解释为什么收集有关服务器 应用程序和流量的统计数据是个好主意 收集和组织数据可以让您对有关扩展 故障排除和跟踪配置中的痛点的决策充满信心 有多种工具可用于跟踪我们机器上的指标 并且它们通常被委托给流程的某一小部分 我们可
  • 如何在 Ubuntu 12.04 上设置 ProFTPD

    Status 已弃用 本文介绍不再受支持的 Ubuntu 版本 如果您当前运行的服务器运行 Ubuntu 12 04 我们强烈建议您升级或迁移到受支持的 Ubuntu 版本 升级到Ubuntu 14 04 从 Ubuntu 14 04 升级
  • 如何在 Ubuntu 14.04 上安装和配置 Syncthing 来同步目录

    介绍 有许多程序能够使不同计算机之间的文件保持同步 同步事物是一个引人注目的新选项 它是跨平台的 完全开源的 非常灵活且易于使用 在本指南中 我们将向您展示如何开始使用 Syncthing 在两个 Ubuntu 14 04 服务器实例之间同
  • 如何使用 Ansible Vault 保护敏感的 Playbook 数据

    介绍 Ansible Vault 是一项允许用户加密 Ansible 项目中的值和数据结构的功能 这提供了保护成功运行 Ansible play 所需但不应公开可见的任何敏感数据的能力 例如密码或私钥 当提供密钥时 Ansible 在运行时
  • 如何在 Ubuntu 18.04 中为 Nginx 创建自签名 SSL 证书

    介绍 TLS 或传输层安全 及其前身SSL代表安全套接字层 是用于将正常流量包装在受保护的加密包装器中的 Web 协议 使用此技术 服务器可以在服务器和客户端之间安全地发送流量 而不会出现消息被外部各方拦截的可能性 证书系统还帮助用户验证他
  • 如何在 Ubuntu 14.04 上设置具有 Keepalived 和保留 IP 的高可用 HAProxy 服务器

    介绍 高可用性是系统设计的一项功能 允许应用程序在发生故障时自动重新启动或将工作重新路由到另一个有能力的系统 就服务器而言 建立高可用系统需要几种不同的技术 必须有一个可以重定向工作的组件 并且必须有一种机制来监视故障并在检测到中断时转换系
  • 如何在 Ubuntu 14.04 上使用 HAProxy 作为 WordPress 应用程序服务器的第 4 层负载均衡器

    介绍 在本教程中 我们将教您如何使用 HAProxy 作为 WordPress 服务器 特别是 Web 应用程序层 的第 4 层负载均衡器 负载平衡应用程序服务器为您的设置添加了冗余 从而提高了服务器故障或网络问题时的可靠性 并将负载分散到