Brad Fitzpatrick 於 2003 年為 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 原始碼
首先,訪問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 設定: 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 監聽 IP 位址 127.0.0.1。檢查設定檔中的-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 預設使用四個執行緒。您可以使用該參數根據伺服器的功能和工作負載來增加或減少執行緒數。例如,要將執行緒數設為 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
首先,讓我們驗證 UFW 是否已安裝在您的 Debian 系統上:
sudo ufw --version
如果安裝了 UFW,您將在輸出中看到其版本號。如果沒有,您需要安裝它。
在 Debian 上為 Memcached 安裝 UFW
若要在 Debian 系統上安裝 UFW,請執行以下命令:
sudo apt install ufw
安裝完成後,使用以下指令啟用UFW:
sudo ufw enable
為 Memcached 配置 UFW 規則
現在 UFW 已安裝並啟用,您必須在 TCP 連接埠 11211 上建立允許規則。
單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 區塊(記憶體分區)來完善您的分析。例如,您可以使用下列命令列出連線實例中的板:
stats slabs
並使用以下命令獲取平板列表,包括每個平板中儲存的項目的計數:
stats items
要存取和操作儲存在 Memcached 中的數據,您可以使用 cachedump
命令列出鍵。若要列出特定板中的所有項目,請執行下列命令:
stats cachedump [slab ID] [number of items, 0 for all items]
例如:
stats cachedump 1 0
輸出範例:
ITEM 測試鍵 [9 b; 1296857316秒]完
在此範例中,slab 1 包含一個帶有「testkey」鍵的項目。若要檢索該項目的值,請使用 get
命令:
get testkey
輸出範例:
VALUE testkey 0 9 測試資料 END
最後,要刪除快取的項目,例如“testkey”,請使用以下命令:
delete testkey
輸出範例:
已刪除
結論
總而言之,在 Debian Linux 上安裝和設定 Memcached 可以透過提供快速、高效且易於使用的快取系統來顯著提高 Web 應用程式的效能。按照本指南中概述的步驟,您可以成功設定 Memcached,使用您首選的 Web 伺服器設定它,並使用 UFW 保護它。透過正確的配置和管理,Memcached 對於優化應用程式和提供更好的使用者體驗至關重要。