如何安装 Puppet 来管理您的服务器基础设施

2023-11-17

Note:本教程的较新版本使用 Puppet Server 而不是 Puppet with Passenger,可以在此处找到:如何在 Ubuntu 14.04 上的主代理设置中安装 Puppet 4.

介绍

Puppet 来自 Puppet Labs,是一款配置管理工具,可帮助系统管理员自动配置、配置和管理服务器基础设施。提前规划并使用 Puppet 等配置管理工具可以减少重复基本任务所花费的时间,并有助于确保您的配置在整个基础设施中保持一致和准确。一旦掌握了使用 Puppet 和其他自动化工具管理服务器的窍门,您就可以腾出时间来改进整体设置的其他方面。

Puppet 有两种类型:Puppet Enterprise 和开源 Puppet。它可以在大多数 Linux 发行版、各种 UNIX 平台和 Windows 上运行。

在本教程中,我们将介绍如何在 Agent/Master 设置中安装开源 Puppet。该设置包括一个中央木偶大师服务器,您的所有配置数据都将从这里进行管理和分发,并且所有剩余的服务器将傀儡特工节点,可以由 puppet master 服务器配置。

先决条件

要学习本教程,您必须拥有要配置 Puppet 的所有服务器的 root 访问权限。您还需要创建一个新的 Ubuntu 14.04 VPS 来充当 Puppet 主服务器。如果您没有现有基础设施,请随时按照必备 DNS 设置教程重新创建示例基础设施(如下所述)。

在我们开始安装 Puppet 之前,请确保您满足以下先决条件:

  • 私网DNS:必须配置正向和反向 DNS,并且每个服务器必须有唯一的主机名。这是一个教程配置自己的私网DNS服务器。如果您没有配置 DNS,则必须使用您的hosts用于名称解析的文件。我们假设您将使用您的专用网络在基础设施内进行通信。
  • 防火墙开放端口:Puppet master 必须可通过端口 8140 访问。如果您的防火墙限制过多,请查看此UFW 教程有关如何允许端口 8140 上的传入请求的说明。

基础设施示例

我们将使用以下基础设施来演示如何设置 Puppet:

Hostname Role Private FQDN
host1 Generic Ubuntu 14.04 VPS host1.nyc2.example.com
host2 Generic Ubuntu 14.04 VPS host2.nyc2.example.com
ns1 Primary nameserver ns1.nyc2.example.com
ns2 Secondary nameserver ns2.nyc2.example.com

puppet 代理将安装在所有这些主机上。这些主机将由其专用网络接口引用,这些接口映射到 DNS 中的“.nyc2.example.com”子域。这与先决条件教程中描述的基础设施相同:如何在 Ubuntu 14.04 上将 BIND 配置为专用网络 DNS 服务器.

满足所有先决条件后,让我们继续创建 Puppet 主服务器!

创建 Puppet Master 服务器

创建一个新的乌班图14.04x64 VPS,使用“puppet”作为其主机名。使用以下详细信息将其专用网络添加到您的 DNS:

Hostname Role Private FQDN
puppet Puppet Master puppet.nyc2.example.com

如果您刚刚设置 DNS 并且不确定如何将主机添加到 DNS,请参阅维护 DNS 记录DNS 教程的部分。本质上,您需要添加“A”和“PTR”记录,并允许新主机执行递归查询。另外,请确保配置搜索域,以便服务器可以使用短主机名相互查找。

使用“puppet”作为 Puppet master 的主机名可以稍微简化代理设置,因为它是代理在尝试连接到 master 时将使用的默认名称。

现在我们需要设置 NTP。

安装NTP

由于它充当代理节点的证书颁发机构,puppet master 服务器必须维护准确的系统时间,以避免在颁发代理证书时出现潜在问题 - 如果存在时间差异,证书可能会显示为已过期。为此,我们将使用网络时间协议 (NTP)。

首先,使用以下命令进行一次性时间同步ntpdate命令:

sudo ntpdate pool.ntp.org

您的系统时间将会更新,但您需要安装 NTP 守护程序来自动更新时间,以最大限度地减少时间漂移。使用以下 apt 命令安装它:

sudo apt-get update && sudo apt-get -y install ntp

通常的做法是更新 NTP 配置以使用地理位置更靠近 NTP 服务器的“池区域”。在网络浏览器中,转至NTP池项目并查找泳池区该数据中心在地理位置上靠近您正在使用的数据中心。我们将选择美国池(http://www.pool.ntp.org/zone/us)在我们的示例中,因为服务器位于纽约数据中心。

Open ntp.conf用于编辑:

sudo vi /etc/ntp.conf

将 NTP 池项目页面中的时间服务器添加到文件顶部:

server 0.us.pool.ntp.org
server 1.us.pool.ntp.org
server 2.us.pool.ntp.org
server 3.us.pool.ntp.org

保存并退出。重新启动 NTP 以添加新的时间服务器。

sudo service ntp restart

现在我们的服务器保持了准确的时间,让我们安装 Puppet master 软件。

安装木偶大师

有多种方法可以安装开源 Puppet。我们将使用名为的 debian 软件包傀儡师乘客,由 Puppet Labs 提供。这傀儡师乘客软件包包括 Puppet master 和生产就绪的 Web 服务器(带有 Apache 的 Passenger),与使用基本的相比,它消除了一些配置步骤木偶大师包裹。

下载 Puppet 实验室包:

cd ~; wget https://apt.puppetlabs.com/puppetlabs-release-trusty.deb

安装包:

sudo dpkg -i puppetlabs-release-trusty.deb

更新 apt 的可用软件包列表:

sudo apt-get update

安装puppetmaster-passenger包裹:

sudo apt-get install puppetmaster-passenger

Puppet master、Passenger、Apache 和其他必需的软件包现已安装。因为我们将 Passenger 与 Apache 一起使用,所以 Puppet master 进程由 Apache 控制,即它在 Apache 运行时运行。

在继续之前,通过停止apache2服务:

sudo service apache2 stop

接下来,我们要锁定 Puppet 的版本。

锁定版本

版本之间的更改有时会导致您的 Puppet 环境停止正常工作。因此,您需要在整个基础设施中保持一致的 Puppet 版本。如果您决定升级到较新版本,请确保升级您的master在任何代理节点之前,因为主节点无法管理具有更高版本号的代理。

让我们使用以下命令查找 Puppet 安装的版本:

puppet help | tail -n 1

在撰写本文时,上一个命令的输出是Puppet v3.6.2。我们可以使用 apt 的 pin 功能将 Puppet 安装锁定到3.6.*,这将阻止 apt 将 Puppet 升级到更高的主要版本。在 apt 首选项目录中创建一个名为的新文件:

sudo vi /etc/apt/preferences.d/00-puppet.pref

添加以下行来锁定puppet, puppet-common, and puppetmaster-passenger包裹到3.6.*(更改此设置以匹配您安装的版本):

# /etc/apt/preferences.d/00-puppet.pref
Package: puppet puppet-common puppetmaster-passenger
Pin: version 3.6*
Pin-Priority: 501

保存并退出。您的 Puppet 版本现已锁定。

下一步是设置您的 Puppet master 名称和证书。

设置名称和证书

Puppet 使用 SSL 证书来验证主节点和代理节点之间的通信。 Puppet Master 充当证书颁发机构 (CA),并且必须生成自己的证书,用于签署代理证书请求。我们现在将设置硕士证书。

删除现有证书

删除在软件包安装期间创建的任何现有 SSL 证书。 Puppet 的 SSL 证书的默认位置是/var/lib/puppet/ssl:

sudo rm -rf /var/lib/puppet/ssl

配置证书

创建 puppet master 的证书时,请包含代理节点可以联系 master 的每个 DNS 名称。在我们的示例中,我们将使用“puppet”和“puppet.nyc2.example.com”,分别是短主机名和 FQDN。

编辑master的puppet.conf文件:

sudo vi /etc/puppet/puppet.conf

它看起来像下面这样:

[main]
logdir=/var/log/puppet
vardir=/var/lib/puppet
ssldir=/var/lib/puppet/ssl
rundir=/var/run/puppet
factpath=$vardir/lib/facter
templatedir=$confdir/templates

[master]
# These are needed when the puppetmaster is run by passenger
# and can safely be removed if webrick is used.
ssl_client_header = SSL_CLIENT_S_DN
ssl_client_verify_header = SSL_CLIENT_VERIFY

删除带有templatedir选项,因为该选项已被弃用。

将以下两行添加到末尾[main]部分(将突出显示的文本替换为私有 FQDN):

certname = puppet
dns_alt_names = puppet,puppet.nyc2.example.com

使用分配很重要certname为“puppet”,因为 Apache/Passenger 配置期望证书被命名为“puppet”。如果您决定想要不同的certname设置,请务必编辑 Apache 配置文件(/etc/apache2/sites-available/puppetmaster.conf) 更改 SSL 证书路径的名称。

保存并退出。

生成新证书

现在通过运行以下命令创建新的 CA 证书:

sudo puppet master --verbose --no-daemonize

您将看到几行输出,表明正在创建 SSL 密钥和证书。一旦你看到Notice: Starting Puppet master version 3.6.2,证书设置完成。按CTRL-C返回到外壳。

示例输出:

Info: Creating a new SSL key for ca
Info: Creating a new SSL certificate request for ca
Info: Certificate Request fingerprint (SHA256): EC:7D:ED:15:DE:E3:F1:49:1A:1B:9C:D8:04:F5:46:EF:B4:33:91:91:B6:5D:19:AC:21:D6:40:46:4A:50:5A:29
Notice: Signed certificate request for ca
...
Notice: Signed certificate request for puppet
Notice: Removing file Puppet::SSL::CertificateRequest puppet at '/var/lib/puppet/ssl/ca/requests/puppet.pem'
Notice: Removing file Puppet::SSL::CertificateRequest puppet at '/var/lib/puppet/ssl/certificate_requests/puppet.pem'
Notice: Starting Puppet master version 3.6.2

如果您想查看刚刚创建的证书的证书信息,请输入以下内容:

sudo puppet cert list -all

上一个命令实际上列出了所有已签名的证书和未签名的证书请求。目前,仅显示主证书,因为尚未添加其他证书:

+ "puppet" (SHA256) 05:22:F7:65:64:CF:46:0E:09:2C:5D:FD:8C:AC:9B:31:17:2B:7B:05:93:D5:D1:01:52:72:E6:DF:84:A0:07:37 (alt names: "DNS:puppet", "DNS:puppet.nyc2.example.com")

我们的 Puppet master 服务即将启动。我们先看一下master的配置。

配置 Puppet Master

主要的傀儡配置文件,puppet.conf,由三部分组成:[main], [master], and [agent]。正如您可能已经猜到的,“main”部分包含全局配置,“master”部分特定于puppet master,“agent”用于配置puppet代理。除了我们之前所做的更改之外,默认设置对于基本设置来说也可以正常工作。

配置文件有许多可能与您自己的设置相关的选项。 Puppet Labs 提供了该文件的完整描述:主配置文件(puppet.conf).

如果您想编辑它,请运行以下命令:

sudo vi /etc/puppet/puppet.conf

让我们看一下主要的清单文件。

主清单文件

Puppet 使用特定于域的语言来描述系统配置,这些描述被保存到称为“清单”的文件中,该文件具有.pp文件扩展名。默认的主清单文件位于/etc/puppet/manifests/site.pp。稍后我们将介绍一些基本清单,但现在我们将创建一个占位符文件:

sudo touch /etc/puppet/manifests/site.pp

启动傀儡师

我们现在准备启动 Puppet master。通过运行以下命令启动它apache2服务:

sudo service apache2 start

您的 Puppet Master 正在运行,但尚未管理任何代理节点。让我们学习如何安装和添加 Puppet 代理!

安装 Puppet 代理

Puppet 代理必须安装在 Puppet Master 将管理的任何服务器上。在大多数情况下,这包括基础设施中的每台服务器。正如简介中提到的,Puppet 代理可以在所有主要 Linux 发行版、一些 UNIX 平台和 Windows 上运行。由于每个操作系统的安装略有不同,因此我们仅介绍 Ubuntu 和 Debian 服务器上的安装。

在其他平台上安装 Puppet 的说明位于Puppet 实验室文档– 请务必按照您选择的操作系统的“在代理节点上安装 Puppet”部分进行操作。

Note:假设您的所有 Puppet 节点(包括代理节点)都配置为使用您的 DNS。如果您要创建全新的服务器,请确保将其添加到您的 DNS在安装 Puppet 代理之前。

Ubuntu / Debian 代理节点

Note:我们所有的示例代理节点,host1, host2, ns1, and ns2,是 Ubuntu 14.04 VPS。我们将为每台服务器重复此步骤,以便每台服务器都可以由 Puppet Master 管理。

在您的 Puppet 代理节点上,下载 Puppet Labs 包:

cd ~; wget https://apt.puppetlabs.com/puppetlabs-release-trusty.deb

安装包:

sudo dpkg -i puppetlabs-release-trusty.deb

更新 apt 的可用软件包列表:

sudo apt-get update

安装 Puppet 代理包(puppet):

sudo apt-get install puppet

默认情况下,傀儡代理处于禁用状态。要更改此设置,请更新其默认文件:

sudo vi /etc/default/puppet

并改变值START到“是”:

START=yes

保存并退出/etc/default/puppet.

锁定版本

与 Puppet master 一样,我们需要使用 apt pin 功能来锁定 Puppet 代理的版本:

sudo vi /etc/apt/preferences.d/00-puppet.pref

添加以下行来锁定puppet and puppet-common包裹到3.6.*(更改此设置以匹配您安装的版本):

# /etc/apt/preferences.d/00-puppet.pref
Package: puppet puppet-common
Pin: version 3.6*
Pin-Priority: 501

保存并退出。您的 Puppet 版本现已锁定。

配置代理

在运行代理之前,我们必须进行一些配置更改。

编辑代理puppet.conf:

sudo vi /etc/puppet/puppet.conf

它看起来与 Puppet master 的初始配置文件一模一样。

再次删除templatedir线。然后删除[master]部分及其下面的所有行。

假设可以通过“puppet”访问 Puppet master,则代理应该能够连接到 master。如果主控在“puppet”上不可用,您将需要添加 Puppet 主控的 FQDN。我们建议无论如何进行配置(用您自己的 FQDN 替换):

[agent]
server = puppet.nyc2.example.com

保存并退出。

Puppet 代理已准备好运行。通过运行以下命令来执行此操作:

sudo service puppet start

如果一切配置正确,您不应该看到任何输出。第一次运行 Puppet 代理时,它会生成 SSL 证书并向 Puppet Master 发送签名请求。 Puppet Master 签署 Agent 的证书后,就可以与 Agent 节点进行通信。

Note:如果这是您的第一个 Puppet 代理,建议您在添加其他代理之前尝试在 Puppet Master 上签署证书。一旦验证一切正常,您就可以放心地返回并添加剩余的代理节点。

在主控上签署请求

Puppet 第一次在代理节点上运行时,它将向 Puppet Master 发送证书签名请求。在主节点能够通信和控制代理节点之前,它必须签署该特定代理节点的证书。我们将描述如何签名和检查签名请求。

列出当前证书请求

在 Puppet Master 上,运行以下命令列出所有未签名的证书请求:

sudo puppet cert list

如果您刚刚设置了第一个代理节点,您将看到一个请求。它将类似于以下内容,其中代理节点的 FQDN 作为主机名:

"host1.nyc2.example.com" (SHA256) B1:96:ED:1F:F7:1E:40:53:C1:D4:1B:3C:75:F4:7C:0B:A9:4C:1B:5D:95:2B:79:C0:08:DD:2B:F4:4A:36:EE:E3

请注意,没有+在它的前面。这表明该协议尚未签署。

签署请求

要签署证书请求,请使用puppet cert sign命令,以及要签名的证书的主机名。例如,要签名host1.nyc2.example.com,您将使用以下命令:

sudo puppet cert sign host1.nyc2.example.com

您将看到以下输出,这表明证书请求已签名:

Notice: Signed certificate request for host1.nyc2.example.com
Notice: Removing file Puppet::SSL::CertificateRequest host1.nyc2.example.com at '/var/lib/puppet/ssl/ca/requests/host1.nyc2.example.com.pem'

Puppet Master 现在可以通信并控制签名证书所属的节点。

如果您想签署所有当前请求,请使用-all选项,像这样:

sudo puppet cert sign --all

吊销证书

您可能想要从 Puppet 中删除主机,或者重建主机然后将其添加回 Puppet。在这种情况下,您需要从 Puppet Master 撤销主机的证书。为此,您需要使用clean action:

sudo puppet cert clean hostname

指定主机的关联证书将从 Puppet 中删除。

查看所有签名的请求

如果要查看所有请求(已签名和未签名),请运行以下命令:

sudo puppet cert list --all

您将看到所有请求的列表。签名的请求前面有一个+并且未签名的请求没有+.

  "ns2.nyc2.example.com"   (SHA256) E4:F5:26:EB:B1:99:1F:9D:6C:B5:4B:BF:86:14:40:23:E0:50:3F:C1:45:D0:B5:F0:68:6E:B2:0F:41:C7:BA:76
+ "host1.nyc2.example.com" (SHA256) 71:A2:D3:82:15:0D:80:20:D4:7E:E3:42:C2:35:87:83:79:2B:57:1D:D5:5A:EC:F6:8B:EE:51:69:53:EB:6B:A1
+ "host2.nyc2.example.com" (SHA256) F4:79:A6:7C:27:0C:EA:8E:BC:31:66:FF:F2:01:AB:B1:35:7B:9F:5E:C8:C9:CE:82:EE:E8:2F:23:9F:0C:2B:ED
+ "puppet"                 (SHA256) 05:22:F7:65:64:CF:46:0E:09:2C:5D:FD:8C:AC:9B:31:17:2B:7B:05:93:D5:D1:01:52:72:E6:DF:84:A0:07:37 (alt names: "DNS:puppet", "DNS:puppet.nyc2.example.com")

恭喜!您的基础设施现在已准备好由 Puppet 管理!

木偶入门

现在您的基础设施已设置为使用 Puppet 进行管理,我们将向您展示如何执行一些基本任务来帮助您入门。

如何收集事实

Puppet 使用名为的工具收集有关其每个节点的事实facter。默认情况下,Facter 收集对系统配置有用的信息(例如操作系统名称、主机名、IP 地址、SSH 密钥等)。如果您需要其他事实来执行配置,可以添加自定义事实。

收集到的事实在许多情况下都很有用。例如,您可以创建 Web 服务器配置模板并自动为特定虚拟主机填写适当的 IP 地址。或者您可以确定您的服务器操作系统是“Ubuntu”,因此您应该运行apache2服务而不是httpd。这些是基本示例,但它们应该让您了解如何使用事实。

要查看代理节点上自动收集的事实列表,请运行以下命令:

facter

主要清单是如何执行的

Puppet 代理会定期与 Puppet Master 进行检查(通常每 30 分钟一次)。在此期间,它将向主节点发送有关自身的事实,并提取当前目录——由主清单确定的与代理相关的资源及其所需状态的编译列表。然后,代理节点将尝试进行适当的更改以实现其所需的状态。只要 Puppet Master 正在运行并与代理节点通信,这个循环就会持续下去。

在特定代理节点上立即执行

还可以通过运行以下命令(在相关代理节点上)手动启动对特定代理节点的检查:

puppet agent --test

运行此命令会将主清单应用于运行测试的代理。您可能会看到如下输出:

Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Loading facts in /var/lib/puppet/lib/facter/pe_version.rb
Info: Loading facts in /var/lib/puppet/lib/facter/puppet_vardir.rb
Info: Loading facts in /var/lib/puppet/lib/facter/root_home.rb
Info: Loading facts in /var/lib/puppet/lib/facter/facter_dot_d.rb
Info: Caching catalog for host1.nyc2.example.com
Info: Applying configuration version '1407966707'

此命令对于查看主清单将如何立即影响单个服务器很有用。

一次性清单

The puppet apply命令允许您根据需要执行与主清单无关的清单。它仅将清单应用到您运行应用的节点。这是一个例子:

sudo puppet apply /etc/puppet/modules/test/init.pp

如果您想在代理节点上测试新清单,或者只想运行一次清单(例如,将代理节点初始化为所需状态),以这种方式运行清单非常有用。

一个简单的清单

您可能还记得,Puppet master 上的主要清单文件位于/etc/puppet/manifests/site.pp.

On the master,立即编辑:

sudo vi /etc/puppet/manifests/site.pp

现在添加以下行来描述文件资源:

file {'/tmp/example-ip':                                            # resource type file and filename
  ensure  => present,                                               # make sure it exists
  mode    => 0644,                                                  # file permissions
  content => "Here is my Public IP Address: ${ipaddress_eth0}.\n",  # note the ipaddress_eth0 fact
}

现在保存并退出。内联注释应该解释我们正在定义的资源。用简单的英语来说,这将使ensure所有代理节点都会有一个文件/tmp/example-ip, with -rw-r--r--权限以及包含节点公共 IP 地址的文本。

您可以等待代理自动与主服务器签入,也可以运行puppet agent --test命令(来自您的代理节点之一)。然后运行以下命令来打印该文件:

cat /tmp/example-ip

您应该看到如下所示的输出(带有该节点的 IP 地址):

Here is my Public IP Address: 128.131.192.11.

指定节点

如果要为特定节点定义资源,请定义node在清单中。

在master上,编辑site.pp:

sudo vi /etc/puppet/manifests/site.pp

现在添加以下行:

node 'ns1', 'ns2' {    # applies to ns1 and ns2 nodes
  file {'/tmp/dns':    # resource type file and filename
    ensure => present, # make sure it exists
    mode => 0644,
    content => "Only DNS servers get this file.\n",
  }
}

node default {}       # applies to nodes that aren't explicitly defined

保存并退出。

现在 Puppet 将确保文件位于/tmp/dns将存在于ns1 and ns2。您可能想运行puppet agent --test命令(来自 ns1 或 ns2),如果您不想等待计划的 Puppet 代理拉取。

请注意,如果您没有定义资源,Puppet 将尽力不接触它。因此,如果您从清单中删除了这些资源,Puppet 将不会删除它创建的文件。如果您想让它删除文件,请更改ensure to absent.

这些示例没有做任何有用的事情,但它们确实证明了 Puppet 工作正常。

使用模块

现在让我们使用一个模块。模块对于将任务分组在一起非常有用。 Puppet 社区中有许多可用的模块,您甚至可以编写自己的模块。

在 Puppet Master 上安装puppetlabs-apache来自 forgeapi 的模块:

sudo puppet module install puppetlabs-apache

Warning:请勿在现有 Apache 设置上使用此模块。它将清除任何不受 Puppet 管理的 Apache 配置。

现在编辑site.pp:

sudo vi /etc/puppet/manifest/site.pp

现在添加以下行来安装 Apachehost2:

node 'host2' {
  class { 'apache': }             # use apache module
  apache::vhost { 'example.com':  # define vhost resource
    port    => '80',
    docroot => '/var/www/html'
  }
}

保存并退出。现在,下次 Puppet 更新 host2 时,它将安装 Apache 软件包,并配置一个名为“example.com”,监听端口 80,并带有文档根目录/var/www/html.

On host2,运行以下命令:

sudo puppet agent --test

您应该看到一堆输出,表明正在安装 Apache。完成后,转到host2的公共IP地址。您应该会看到默认的 Apache 欢迎页面。

恭喜!您已经使用了第一个 Puppet 模块!

结论

现在您已经完成了基本的代理/主 Puppet 安装,您现在可以了解有关如何使用 Puppet 管理服务器基础设施的更多信息。查看以下教程:Puppet 代码入门:清单和模块.

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

如何安装 Puppet 来管理您的服务器基础设施 的相关文章

随机推荐

  • 如何在 CentOS 8 上安装 Python 3.8

    Python 是世界上使用最广泛的编程语言之一 凭借其简单易学的语法 Python 成为初学者和经验丰富的开发人员的热门选择 Python 是一种非常通用的编程语言 它可用于构建各种应用程序 从简单的脚本到复杂的机器学习算法 CentOS
  • Linux 中的 Chgrp 命令(更改组)

    在 Linux 中 每个文件都与一个所有者和一个组相关联 并具有确定哪些用户可以读取 写入或执行该文件的权限 本文介绍了如何使用chgrp命令更改给定文件的组所有权 chgrp命令语法 The chgrp命令采用以下形式 chgrp OPT
  • 如何在 CentOS 7 上安装 Ruby

    Ruby 是当今最流行的语言之一 它具有优雅的语法 是 Ruby on Rails 框架背后的语言 本文展示了在 CentOS 上安装 Ruby 的几种不同方法 每种安装方法都有自己的优点 您可以选择最适合您的一种安装方法 先决条件 在开始
  • 如何每 5 分钟、10 分钟或 15 分钟运行一次 Cron 作业

    cron 作业是按指定时间间隔执行的任务 可以将任务安排为按分钟 小时 每月的某一天 每月 每周的某一天或这些的任意组合运行 Cron 作业通常用于自动化系统维护或管理 例如备份数据库或数据 使用最新的安全补丁更新系统 检查磁盘空间使用情况
  • Bash:追加到文件

    在 Bash 中 有多种方法可以将文本附加到文件中 本文解释了其中一些 要将文本附加到文件 您需要对其具有写入权限 否则 您将收到权限被拒绝的错误 使用重定向运算符附加到文件 gt gt 重定向允许您捕获命令的输出并将其作为输入发送到另一个
  • 在 C/C++ 中使用 INT_MAX 和 INT_MIN

    在本文中 我们将了解在 C C 中使用 INT MAX 和 INT MIN 这些实际上是有用的宏 它们表示最大和最小整数值 让我们用一些例子来看看它 使用 INT MAX 和 INT MIN INT MAX 是一个表示最大整数值的宏 同样
  • Google Guice 依赖注入示例教程

    谷歌指南是在应用程序中自动执行依赖项注入的框架 如果您直接遇到这里 我建议您查看一下依赖注入示例在这里我们了解了传统对象创建方法的问题以及依赖注入的实现优势 在上一篇教程中 我们学习了如何在应用程序中手动实现依赖注入 但是 当应用程序中的类
  • 如何在 CentOS 7 上安装 MySQL

    介绍 MySQL是一个开源数据库管理系统 通常作为流行的一部分安装LEMP Linux Nginx MySQL MariaDB PHP Python Perl 堆栈 它使用关系数据库和 SQL 结构化查询语言 来管理其数据 CentOS 7
  • 如何配置 DNS 循环负载平衡以实现高可用性

    介绍 尽管这是一种更有争议的技术 但利用提供商的全球影响力在地理上分发应用程序的一个好方法是使用和管理 DNS 响应 即返回的 IP 地址列表 除非您愿意在硬件和基础设施成本上花费一点钱 否则使用 DNS 来实现高可用性可能是一个很好的方法
  • 如何在 CentOS 7 上使用 FreeIPA 设置集中式 Linux 身份验证

    介绍 FreeIPA是 Linux 的开源安全解决方案 提供帐户管理和集中身份验证 类似于 Microsoft 的 Active Directory FreeIPA 构建在多个开源项目之上 包括 389 Directory Server M
  • Spring Boot 教程

    欢迎来到 Spring Boot 教程 春季启动是 Pivotal Team The Spring Team 的一个全新项目 它是在现有 Spring 框架之上开发的框架 Spring Boot 教程 Spring Boot使用全新的开发模
  • 如何使用 Whisper 和 Spleeter AI 工具制作卡拉 OK 视频

    介绍 人工智能工具可用于处理图像 音频或视频以产生新颖的结果 直到最近 在不使用大量时间和计算能力的情况下 自动编辑图像或音频仍然具有挑战性 即使如此 通常也只能运行交钥匙滤波器来删除声音中的某些频率或更改图像的调色板 较新的方法使用人工智
  • JSF PrimeFaces 教程

    欢迎来到 JSF Primefaces 教程 JavaServer Faces是当今用于实现 Java Web 应用程序用户界面的领先框架之一 JSF 已经组件化了 Web 应用程序 特别是与界面相关的部分 因为 JSF 中的所有单一视图都
  • 如何在 Ubuntu 14.04 服务器上使用 Nginx 安装和保护 phpMyAdmin

    介绍 很大一部分网站和应用程序都需要 MySQL 等关系数据库管理系统 然而 并非所有用户都愿意从命令行管理数据 为了解决这个问题 创建了一个名为 phpMyAdmin 的项目 以提供基于 Web 的管理界面形式的替代方案 在本指南中 我们
  • 如何保护您的服务器免受 POODLE SSLv3 漏洞的影响

    介绍 2014年10月14日 SSL加密协议第3版中的漏洞被披露 该漏洞被称为 POODLE Padding Oracle On Downgraded Legacy Encryption 允许攻击者使用中间人攻击以纯文本形式读取使用此版本协
  • 如何配置 vsftpd 在 CentOS VPS 上使用 SSL/TLS

    介绍 Warning FTP 不安全 考虑使用 SFTP 代替 FTP FTP 即文件传输协议 是一种在本地和远程服务器之间传输文件的方式 尽管这种文件传输方法非常流行且无处不在 但由于其设计缺乏固有的安全性 它已经不再受欢迎 如上所述 S
  • 如何在 Ubuntu 14.04 上安装、配置和部署 Rocket.Chat

    介绍 火箭聊天是一个用 Meteor 构建的开源消息传递应用程序 它支持视频会议 文件共享 语音消息 拥有功能齐全的 API 等等 Rocket Chat 对于那些喜欢完全控制自己的通信的人来说非常有用 在本教程中 我们将在新的 Ubunt
  • 如何在 Ubuntu 22.04 上使用 xrdp 启用远程桌面协议

    作者选择了COVID 19 救济基金接受捐赠作为为捐款而写程序 介绍 远程桌面协议 RDP 是 Microsoft 开发的一种网络协议 允许用户远程访问远程 Windows 服务器的图形用户界面并与之交互 RDP 采用客户端 服务器模型 其
  • Apache 配置错误 AH00558:无法可靠地确定服务器的完全限定域名

    介绍 阿帕奇AH00558 Could not reliably determine the server s fully qualified domain name当 Apache 未配置全局变量时 会生成消息ServerName指示 该
  • 如何安装 Puppet 来管理您的服务器基础设施

    Note 本教程的较新版本使用 Puppet Server 而不是 Puppet with Passenger 可以在此处找到 如何在 Ubuntu 14 04 上的主代理设置中安装 Puppet 4 介绍 Puppet 来自 Puppet