如何在 Debian 12、11 或 10 上安装 Memcached

2003 年,Brad Fitzpatrick 为 LiveJournal 网站开发了 Memcached,这是一个功能强大的开源缓存系统,可通过减少数据库负载来提高动态 Web 应用程序的性能。从那时起,它就成为许多高流量网站和应用程序的关键。在我们在 Debian 12 Bookworm、Debian 11 Bullseye 或 Debian 10 Buster 上安装 Memcached 之前,让我们先了解一下有关 Memcached 的一些要点。

主要特点和优点:

  • 可扩展性: Memcached 每秒可处理数百万次操作,是大型 Web 应用程序和服务的理想选择。
  • 分布式缓存: Memcached 采用分布式缓存架构,允许跨多台服务器进行水平扩展,从而扩大整体缓存容量。
  • 内存存储: 作为内存中的键值存储,Memcached 可确保快速访问缓存数据,从而显著降低基于磁盘的存储系统的延迟。
  • 简单 API: Memcached 提供了一个简单的 API,支持各种编程语言,包括 PHP、Python、Ruby 等。
  • 缓存过期: 该系统允许开发人员设置缓存数据的过期时间,从而有助于自动从缓存中删除过时或陈旧的数据。
  • 轻的: Memcached 凭借最小的 CPU 和内存开销,能够在各种服务器配置上高效运行,而不会显著消耗系统资源。
  • 灵活的数据类型: Memcached 可容纳各种数据类型,例如字符串、整数和复杂对象,使其能够灵活适用于各种用例。

以下指南将引导您完成在 Debian 上安装 Memcached 的过程,使用两种方法:使用最稳定版本的默认 Debian 存储库或下载并编译最新的二进制文件(适合喜欢使用最新版本的用户)。

方法 1:通过默认 APT 存储库安装 Memcached

在本节中,我们将使用 APT 包管理器在您的 Debian Linux 系统上安装 Memcached。这涉及更新您的系统包并使用一些有用的工具安装 Memcached。

在安装 Memcached 之前更新你的 Debian 系统

为了确保您拥有最新的软件包版本和安全更新,请先更新您的 Debian 系统。运行以下命令:

sudo apt update && sudo apt upgrade

此命令将更新您的软件包列表并将过时的软件包升级到最新版本。

安装 Memcached 和 Libmemcached-tools

Debian 在其默认存储库中包含 Memcached,使安装变得简单。要安装 Memcached,请运行以下命令:

sudo apt install memcached libmemcached-tools

此命令会安装 Memcached 和 libmemcached-tools 包。 libmemcached-tools 该软件包提供了额外的命令行实用程序,可以实现与 Memcached 的更多交互和管理功能。

方法2:通过源安装Memcached

本节介绍如何通过从源代码编译 Memcached 并将其安装到 Debian 系统上。如果您想使用最新版本的 Memcached 或根据特定要求自定义构建,从源代码安装会很有帮助。

下载 Memcached 源

首先,访问 Memcached 最新发布页面 查找当前版本。使用以下 wget 直接命令下载:

wget https://memcached.org/latest

提取 Memcached 源档案

接下来,通过运行以下命令提取下载的源代码:

tar -xvf latest

继续之前,请导航到解压的目录。目录名称取决于下载的版本:

cd memcached-{place version number here}

代替 {version_number} 使用实际版本号。

安装编译Memcached所需的初始包

在编译 Memcached 之前,需要安装必要的构建依赖项。运行以下命令来安装它们:

sudo apt install build-essential libevent-dev gcc make libc6-dev

已安装的软件包有以下用途:

  • gcc:一个著名的用于 Memcached 源文件的 C 编译器。
  • make:指导编译。
  • libc6-dev:提供对 GNU C 库和头文件的引用。
  • libevent-dev:包含异步事件通知的开发文件。

配置安装

使用 --prefix= 参数设置 Memcached 二进制文件和库的安装目录:

./configure --prefix=/usr/local

编译Memcached源代码

使用以下代码编译 Memcached 源代码 make 命令:

make

通过确认当前版本来测试 Memcached:

./memcached --version

通过“make install”命令安装 Memcached

编译过程完成后,运行以下命令安装 Memcached:

sudo make install

此命令将 Memcached 安装到您的系统上,使其可以通过命令行访问。要确保系统能够识别新库,请运行以下命令:

sudo ldconfig

验证Memcached的安装

要验证 Memcached 是否已成功安装,请运行以下命令:

memcached -V

该命令将显示已安装的Memcached版本,从源代码确认安装成功。

为 Memcached 创建 Systemd 服务

从源代码安装 Memcached 时,它不会自动创建 systemd 服务文件。要将 Memcached 作为服务运行并使用以下方式进行管理 systemctl,您需要为 Memcached 创建自定义 systemd 服务文件。请按照以下步骤创建并启用该服务:

创建一个名为 memcached.service 在里面 /etc/systemd/system 目录中,使用您选择的文本编辑器。在此示例中,我们将使用 nano:

sudo nano /etc/systemd/system/memcached.service

将以下内容添加到 memcached.service 文件:

[Unit]
Description=Memcached Service
After=network.target

[Service]
Type=simple
User=memcache
Group=memcache
ExecStart=/usr/local/bin/memcached /etc/memcached.conf
Restart=always

[Install]
WantedBy=multi-user.target

保存文件并退出文本编辑器。

创建一个 memcache 用户和组安全地运行服务:

sudo useradd -r -s /sbin/nologin -U -M memcache

重新加载 systemd 配置以识别新的服务文件:

sudo systemctl daemon-reload

最后,启动服务:

sudo systemctl enable memcached --now

管理 Memcached 服务状态

本节将介绍如何在 Debian 系统上管理 Memcached 服务。其中包括检查服务状态、启动和停止服务以及将其配置为在系统启动时运行。

检查 Memcached 服务状态

默认情况下,安装后 Memcached 应该处于运行状态。要验证其状态,请使用 systemctl 命令如下:

systemctl status memcached

此命令将显示Memcached服务的当前状态。

启动 Memcached 服务

如果 Memcached 没有运行,您可以使用以下命令启动该服务:

sudo systemctl start memcached

在系统启动时启用 Memcached

要确保 Memcached 服务在系统启动时自动启动,请使用以下命令:

sudo systemctl enable memcached

停止 Memcached 服务

如果需要停止Memcached服务,请使用以下命令:

sudo systemctl stop memcached

在系统启动时禁用 Memcached

要防止 Memcached 服务在系统启动时自动启动,请运行以下命令:

sudo systemctl disable memcached

重新启动 Memcached 服务

如果您需要重新启动 Memcached 服务(例如,在更改配置后),请使用以下命令:

sudo systemctl restart memcached

验证 Memcached 是否正在监听默认端口

最后,验证 Memcached 是否正在使用默认端口在本地主机上主动监听 11211。为了确认这一点,请运行以下命令:

ps -ef | grep memcached

输出应显示一行,表明 Memcached 正在运行并监听指定端口,类似于以下内容:

memcache    5934       1  0 09:36 ?        00:00:00 /usr/bin/memcached -m 64 -p 11211 -u memcache -l 127.0.0.1 -P /var/run/memcached/memcached.pid
root        6591    3653  0 09:55 pts/0    00:00:00 grep memcached

配置Memcached技巧

本节将介绍如何通过编辑 memcached.conf 文件。我们将讨论调整监听 IP 地址、禁用 UDP 以及更改默认内存分配。

打开Memcached配置文件

打开位于的 Memcached 配置文件 /etc/memcached.conf 使用文本编辑器,例如 nano:

sudo nano /etc/memcached.conf

从源代码编译 Memcached 的用户需要创建此文件,因此当您第一次打开它时;与 APT 方法相比,该文件将是空白的;您可以复制它以开始进行调整:

# Example memcached.conf file

# Start with a cap of 64 megs of memory. It's reasonable, and the daemon default
# Note that the daemon will grow to this size, but does not start out holding this much
# memory
-m 64

# Default port is 11211
-p 11211

# Run the daemon as a background process
-d

# Use syslog logging
-s

# Enable verbose logging
-vv

# Set the maximum number of simultaneous connections
-c 1024

调整监听IP地址

Memcached 默认监听 127.0.0.1 的 IP 地址,请检查配置文件中的 -l 参数是否设置为正确的 IP 地址,如果需要修改 IP 地址,请替换 127.0.0.1 使用新的 IP 地址:

-l 127.0.0.1

禁用 UDP(可选)

如果您不需要 UDP 支持,建议禁用它。要禁用 UDP,请在配置文件中添加以下行:

-U 0

配置内存分配

Memcached 的默认内存分配为 64MB,对于较大的网站来说可能不够用。请考虑将内存分配调整为更高的值以最大限度地利用 Memcached。

要设置内存分配,请找到 -m 配置文件中的参数,并将默认值替换为所需数量(以 MB 为单位)。例如,要分配 2GB 内存,请将值设置为 2000:

-m 2000

根据服务器的可用内存和要求调整此设置。

保存并重新启动Memcached

完成必要的更改后,按保存配置文件 CTRL+O, 其次是 Y, 进而 CTRL+X 退出文本编辑器。最后,重新启动 Memcached 服务以使更改生效:

sudo systemctl restart memcached

其他 Memcached 配置示例

除了前面介绍的配置选项外,您还可以调整其他几个设置,以根据您的要求微调 Memcached。以下是一些示例以及简短的演示:

指定用户和组

Memcached 在使用指定的特定用户和组下运行 -u 参数。例如,要将 Memcached 作为 memcache 用户,在配置文件中添加以下行:

-u memcache

启用大内存页面

如果您的系统支持大内存页面,启用此功能可能会提高性能。要启用大内存页面,请找到 -L 参数并取消注释(删除 # 在行的开头):

-L

配置最大项目大小

Memcached 的默认最大项目大小为 1 MB。要增加最大项目大小,请使用 -I 参数后跟所需大小。例如,要将最大项目大小设置为 5MB,请在配置文件中添加以下行:

-I 5m

设置最大线程数

Memcached 默认使用 4 个线程。您可以使用参数根据服务器的功能和工作负载增加或减少线程数。例如,要将线程数设置为 8,请添加以下行:

-t 8

配置空闲超时

Memcached 会在一段时间不活动后自动关闭空闲连接。要修改空闲超时,请使用 -o 参数后跟 idle_timeout 以及所需的秒数。例如,要将空闲超时设置为 600 秒(10 分钟),请添加以下行:

-o idle_timeout=600

启用 SASL 身份验证

如果您需要身份验证才能访问 Memcached 服务器,则可以启用 SASL(简单身份验证和安全层)支持。要启用 SASL,请找到 -S 参数并取消注释(删除 # 在行的开头):

-S

请记住在更改配置文件后始终重新启动 Memcached 服务:

sudo systemctl restart memcached

为 Memcached 安装 UFW 防火墙

为了确保 Memcached 实例的安全,正确配置防火墙规则至关重要。本节将介绍如何安装和配置简易防火墙 (UFW) 来保护您的 Memcached 服务器。

检查 UFW 是否已安装

首先,让我们验证你的 Debian 系统上是否已安装 UFW:

sudo ufw --version

如果安装了 UFW,您将在输出中看到其版本号。如果没有,则需要安装它。

在 Debian 上为 Memcached 安装 UFW

要在 Debian 系统上安装 UFW,请运行以下命令:

sudo apt install ufw

安装完成后,使用以下命令启用UFW:

sudo ufw enable

为 Memcached 配置 UFW 规则

现在 UFW 已安装并启用,您必须在 TCP 端口 11211 上创建允许规则。您创建的规则将取决于您的安装和要求,无论是使用单个 IP 网络连接还是使用集群网络中的多个实例。

单 IP 网络连接示例

允许从特定 IP 地址访问 Memcached:

sudo ufw allow proto tcp from <ip_address> to any port 11211

具有多个实例的集群 IP 网络连接示例

允许从 IP 地址子网访问 Memcached:

sudo ufw allow proto tcp from <ip_address>/24 to any port 11211

注意第二条 UFW 规则是子网规则,请确保内网安全可信后再允许访问。

步骤 4:验证 UFW 规则

设置适当的规则后,通过列出当前的 UFW 规则来验证它们是否正确配置:

sudo ufw status

输出应显示您配置的规则,确保您的 Memcached 实例使用 UFW 进行保护。

安装 Memcached 库

Memcached 为各种编程语言提供扩展,但最常用于 PHP。本节将指导您安装 PHP、Python 和 Perl 的 Memcached 库,并为 Apache 和 Nginx Web 服务器配置 Memcached。

为 Memcached 安装 PHP 库

要安装 Memcached 的 PHP 库,请运行以下命令:

sudo apt install php-memcached libapache2-mod-php php php-cli

为 Apache HTTP 服务器配置 Memcached

如果您使用 Apache HTTP Server,请执行以下命令启用 Memcached 模块:

sudo phpenmod memcached && sudo systemctl restart apache2

为 Nginx HTTP 服务器配置 Memcached

一旦为 Nginx 用户安装了 PHP 库,Memcached 支持将在您的 PHP 配置块中默认启用。

下面是一个简单的 nginx 服务器块示例:

server {
    listen 80;
    server_name example.com;

    root /var/www/example.com;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}

为 Memcached 安装 Python 库

要安装 Memcached 的 Python 支持,请运行以下命令:

sudo apt install python3-pymemcache

为 Memcached 安装 Perl 库

要安装 Memcached 的 Perl 支持,请执行以下命令:

sudo apt install libcache-memcached-libmemcached-perl

从命令行访问 Memcached

Memcached 可以通过各种软件和 Web 用户界面进行监控和管理。不过,使用命令行直接与 Memcached 交互通常是检查其性能和管理其内容的最直接方法。

首先,使用 telnet 连接到您的 Memcached 服务:

telnet localhost 11211

示例输出:

尝试 127.0.0.1... 连接到本地主机。转义字符为“^]”。

接下来,您可以使用以下命令获取 Memcached 服务的概述:

stats

此命令将返回有关您的 Memcached 实例的各种统计数据,例如正常运行时间、缓存中的项目数以及客户端连接数。

您可以通过检查 Memcached slab(内存分区)来优化分析。例如,您可以使用以下命令列出连接实例中的 slab:

stats slabs

并使用以下命令获取 slab 列表,包括每个 slab 内存储的项目数:

stats items

要访问和操作存储在 Memcached 中的数据,您可以使用 cachedump 命令列出键。要列出特定 slab 中的所有项目,请执行以下命令:

stats cachedump [slab ID] [number of items, 0 for all items]

例如:

stats cachedump 1 0

示例输出:

ITEM 测试键 [9 b; 1296857316 s] 结束

在此示例中,slab 1 包含一个带有键“testkey”的项目。要检索此项目的值,请使用 get 命令:

get testkey

示例输出:

值 testkey 0 9 测试数据 END

最后,要删除缓存项(例如“testkey”),请使用以下命令:

delete testkey

示例输出:

已删除

结论

总之,在 Debian Linux 上安装和配置 Memcached 可以提供快速、高效且易于使用的缓存系统,从而显著提高 Web 应用程序的性能。按照本指南中概述的步骤,您可以成功设置 Memcached,使用您首选的 Web 服务器对其进行配置,并使用 UFW 保护它。通过正确的配置和管理,Memcached 可以成为优化应用程序和提供更好的用户体验的关键。

Joshua James
跟我来
Joshua James 的最新帖子 (查看全部)

发表评论