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 可以成为优化应用程序和提供更好的用户体验的关键。