源码安装的 nginx 卸载需彻底清理安装目录、配置日志、服务定义及环境变量:先停服务并杀进程,再删 --prefix 指定主目录及 /etc/nginx、/var/log/nginx 等独立路径,移除 systemd/init.d 服务文件和 path 中 nginx 路径,最后验证命令不存在、目录不存在、端口未监听。

源码安装的 Nginx 没有包管理器跟踪,卸载不是删一个目录就完事——关键是把散落在系统各处的编译残留、配置、服务定义和环境变量全部清干净。漏掉任何一处,都可能干扰重装或引发端口冲突、命令找不到、配置覆盖等问题。
先停服务并确认进程已退出
避免清理过程中仍有进程写日志或占端口:
- 执行
sudo /usr/local/nginx/sbin/nginx -s stop(路径以实际--prefix为准) - 若不确定路径,用
ps aux | grep nginx找主进程,再sudo kill -9 [PID]强制终止 - 运行
sudo lsof -i :80和sudo lsof -i :443,确保无 nginx 监听
定位并删除主安装目录及二进制文件
源码安装路径由 configure 时 --prefix 决定,常见但不唯一:
- 查真实路径:
which nginx或nginx -V 2>&1 | grep "prefix",输出中--prefix=后面就是根目录 - 删整个安装目录,例如:
sudo rm -rf /usr/local/nginx - 顺手清理可能存在的软链接或复制副本:
sudo rm -f /usr/sbin/nginx /usr/local/sbin/nginx
清空独立存在的配置、日志与缓存目录
这些目录不会随主目录自动消失,是重装后“旧配置复活”的常见源头:
- 配置目录:
sudo rm -rf /etc/nginx(若 configure 用了--conf-path=/etc/nginx/nginx.conf) - 日志目录:
sudo rm -rf /var/log/nginx - 缓存与临时文件:
sudo rm -rf /var/cache/nginx /var/lib/nginx /usr/local/var/run/nginx* - 检查用户级残留:
find ~ -name "*nginx*" -type d 2>/dev/null,手动确认后删除
移除服务定义与环境变量
否则新装的 Nginx 可能因 PATH 冲突无法调用,或 systemd 报“unit file not found”:
- systemd 服务:
sudo systemctl disable nginx→sudo rm -f /etc/systemd/system/nginx.service→sudo systemctl daemon-reload - init.d 脚本(旧系统):
sudo rm -f /etc/init.d/nginx→sudo chkconfig nginx off - 环境变量:检查
~/.bashrc、~/.zshrc、/etc/profile中是否含export PATH=.../nginx/sbin,删掉并执行source ~/.bashrc
验证是否彻底清理干净
三项检查必须全部通过,缺一不可:
-
nginx -v→ 应提示 command not found -
ls /usr/local/nginx→ 应提示 No such file or directory -
sudo ss -tuln | grep ':80\|:443'→ 输出中不应出现 nginx 相关行











