今天在 Ubuntu 私有雲環境安裝 PPA 套件時遇到奇怪現象: 安裝apache2 sudo add-apt-repository -y ppa:ondrej/apache2 返回110 timeout 安裝php sudo add-apt-repository -y ppa:ondrej/php 返回110 timeout 我在想是不是卡到陰了!!經過查詢原來是add-apt-repository壅塞被卡住了,才會返回timeout,解決方法就: 手動加入 PPA + 手動匯入 GPG key, 完全不經過 add-apt-repository,就不會 timeout。 方法如下: 1、先取得目前 Ubuntu codename(jammy / noble / focal...) . /etc/os-release echo $VERSION_CODENAME 2、加入Apache2 PPA echo "deb http://ppa.launchpad.net/ondrej/apache2/ubuntu $VERSION_CODENAME main" \ | sudo tee /etc/apt/sources.list.d/ondrej-apache2.list 3、加入PHP PPA echo "deb http://ppa.launchpad.net/ondrej/php/ubuntu $VERSION_CODENAME main" \ | sudo tee /etc/apt/sources.list.d/ondrej-php.list 4、匯入 PPA key(使用 port 80 避開防火牆)apt-key 已被標記為 deprecated,但目前仍可正常使用。 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys E5267A6C 5、更新套件庫並確認 Apache Candidate 版本 sudo apt update apt-cache policy apache2 需要返回這樣版號(不能兩個一樣) Installed: 2.4.52-xxx Candidate: 2.4.66-xxx ← 必須比 I...
雲主機建好 LAMP 之後,接下來最重要的是建立 L3 及 L4 防火牆規則,把一些爬蟲、代理池與高風險國家 IP 區段封鎖,減輕硬碟的 I/O 壓力。 不然每隔幾秒就來一次請求,就算 L7 應用層有高階防爬蟲機制,還是會消耗雲主機的算力。 當然最好是在路由端用硬體防火牆清洗,但因為是雲主機沒有實體路由,因此改用 Linux kernel 層級的黑名單系統 ipset 也能達到 L3 與 L4 清洗效果,讓 Apache/PHP 完全碰不到,不吃 CPU、不吃 I/O。 經過實際執行、爆肝測試後,去除所有失敗方法,以下為正確建立ipset 黑名單的方法: 1、建立 ipset sudo ipset create blacklist hash:ip 如果看到: ipset v7.x.x: Set cannot be created: already exists 代表曾經建立過,需要 destroy。 如果返回: Command 'ipset' not found, but can be installed with: apt install ipset 表示 Linux 初始環境沒有預裝 ipset,輸入以下指令安裝: sudo apt update sudo apt install ipset -y 完成後驗證: ipset list 如果返回: ipset v7.x.x: The set with the given name does not exist 表示 ipset 已成功安裝(但還沒建立 blacklist)。 2、建立一份「只有網段」的列表檔 輸入指令建立 sudo nano /root/blacklist.txt 貼上以下內容(改成您自己的IP名單) 1.0.1.0/24 1.0.2.0/23 1.0.8.0/21 1.0.32.0/19 (略…) Ctrl+O 儲存 → Enter 確認 → Ctrl+X 返回。注意:一定要用 nano 建立,避免 BOM/CRLF 問題。 3、建立自動載入腳本 輸入指令建立 sudo nano /usr/local/bin/ipset-load.sh 貼入以下腳本 #!/bin/bash # 建立 blacklist(若存在就忽略) ipset create blacklist hash:net...