在服务器运维过程中,软件的安装与卸载是基础且频繁的操作,当您不再需要 Nginx 和 PHP 服务,或者需要重新安装、升级到不同版本时,彻底、干净地将它们从 CentOS 系统中移除就显得尤为重要,一个不彻底的卸载可能会导致文件残留、端口冲突,甚至影响新软件的安装,本文将详细介绍如何在 CentOS 系统中,针对不同的安装方式,安全、完整地删除 Nginx 和 PHP。
第一步:准备工作——安全第一
在执行任何卸载操作之前,必须做好充分的准备工作,以防数据丢失或系统异常。
停止相关服务
这是卸载前最关键的一步,正在运行的服务可能会锁定文件,导致卸载失败或产生不完整的结果,使用 systemctl
命令停止 Nginx 和 PHP-FPM 服务。
sudo systemctl stop nginx sudo systemctl stop php-fpm
(注意:您的 PHP 服务名可能是 php-fpm
或 php73-php-fpm
等带有版本号的名称,请使用 systemctl status php*
查询准确的服务名。)
备份重要数据
卸载过程通常不会主动删除您的网站数据(如 /var/www/html
目录下的文件)和配置文件,但为了绝对安全,强烈建议您进行备份。
- 备份网站目录:
sudo cp -r /var/www/html /home/user/website_backup
- 备份 Nginx 配置:
sudo cp -r /etc/nginx /home/user/nginx_config_backup
- 备份 PHP 配置:
sudo cp /etc/php.ini /home/user/php.ini_backup sudo cp -r /etc/php-fpm.d /home/user/php-fpm.d_backup
确认安装方式
这是决定后续卸载方法的核心,在 CentOS 中,软件主要通过两种方式安装:YUM/RPM 包管理器或源码编译。
- YUM/RPM 安装:这是最常见的方式,通过
yum install
或rpm -ivh
命令安装。 - 源码编译安装:通过下载源代码,手动执行
./configure
,make
,make install
命令安装。
您可以通过以下命令来判断 Nginx 的安装方式:
rpm -qa | grep nginx
如果该命令返回了类似 nginx-1.20.1-9.el7.x86_64
的包名,说明是通过 YUM/RPM 安装的,如果没有任何输出,则很可能是源码编译安装的,PHP 的判断方式类似。
安装方式 | 判断命令 | 特点 |
---|---|---|
YUM/RPM | rpm -qa | grep 软件名 | 易于管理,可通过包管理器一键卸载 |
源码编译 | rpm -qa 无结果,ps aux 查看进程路径 | 灵活性高,但卸载相对复杂,需手动处理 |
第二步:卸载通过 YUM/RPM 安装的软件
如果您的 Nginx 和 PHP 是通过 YUM 或 RPM 安装的,卸载过程将非常直接。
查找已安装的相关软件包
为了确保卸载干净,我们需要列出所有与 Nginx 和 PHP 相关的包。
- 查找 Nginx 包:
yum list installed | grep nginx
- 查找 PHP 包(通常会有很多,如 php-common, php-cli, php-fpm 等):
yum list installed | grep php
使用 yum remove 命令卸载yum remove
命令会自动处理软件包之间的依赖关系,将主程序及其依赖的一并卸载。
卸载 Nginx:
sudo yum remove nginx
卸载 PHP 及其所有模块:
sudo yum remove php*
(使用
php*
通配符可以方便地卸载所有以 “php” 开头的软件包,在执行前,请再次确认列表,避免误卸载其他不相关的软件。)
清理残留文件
尽管 yum remove
会删除大部分程序文件,但一些配置文件和日志目录可能会被保留(系统为了防止用户误删配置),您需要手动检查并删除它们。
Nginx 常见残留目录:
/etc/nginx/
(主配置目录)/var/log/nginx/
(日志目录)/var/cache/nginx/
(缓存目录)/usr/share/nginx/
(默认网站目录)
PHP 常见残留目录:
/etc/php.ini
(主配置文件)/etc/php-fpm.d/
(FPM 配置目录)/var/lib/php/
(Session 目录等)
使用 rm -rf
命令删除这些目录(请务必确认您已备份!):
sudo rm -rf /etc/nginx sudo rm -rf /var/log/nginx sudo rm -rf /etc/php.ini sudo rm -rf /etc/php-fpm.d # ... 根据您的实际情况删除其他目录
第三步:卸载通过源码编译安装的软件
源码编译安装的软件没有注册到系统的包管理器中,因此无法使用 yum
或 rpm
命令卸载,卸载过程需要更细致的手动操作。
找到安装目录
您需要找到当初编译安装时指定的路径,默认情况下,Nginx 和 PHP 通常被安装在 /usr/local/nginx
和 /usr/local/php
。
您可以通过以下方式确认:
- 查看进程信息:
ps aux | grep nginx ps aux | grep php-fpm
进程路径通常会透露安装位置。
- 查看 Nginx 可执行文件路径:
which nginx
尝试 make uninstall
如果您保留了编译时的源码目录,这是最理想的卸载方式,进入源码目录,执行 make uninstall
。
cd /path/to/nginx-source-code sudo make uninstall cd /path/to/php-source-code sudo make uninstall
这个命令会读取 Makefile
文件,执行预定义的卸载规则,删除所有安装的文件。
手动删除(make uninstall 不可用)
如果源码目录已被删除,或者 Makefile
中没有 uninstall
规则,那么只能手动删除,这需要您非常清楚哪些文件和目录是被安装的。
删除安装目录:
sudo rm -rf /usr/local/nginx sudo rm -rf /usr/local/php
删除系统服务文件(如果创建了):
检查/etc/systemd/system/
或/usr/lib/systemd/system/
目录下是否有nginx.service
或php-fpm.service
文件,并将其删除。sudo rm -f /etc/systemd/system/nginx.service sudo rm -f /etc/systemd/system/php-fpm.service
删除后,执行
sudo systemctl daemon-reload
重新加载 systemd 配置。删除软链接和可执行文件:
检查/usr/local/bin
、/usr/sbin
等目录下是否有相关可执行文件的软链接,并删除。sudo rm -f /usr/local/bin/nginx sudo rm -f /usr/local/sbin/php-fpm
第四步:验证与最终清理
完成卸载后,进行最后的验证,确保没有遗漏。
检查进程
再次运行 ps
命令,确认 Nginx 和 PHP-FPM 进程已不存在。
ps aux | grep nginx ps aux | grep php-fpm
正常情况下,应该只返回 grep
命令自身的进程。
检查端口占用
使用 netstat
或 ss
命令检查 80 (HTTP)、443 (HTTPS) 和 9000 (PHP-FPM 默认端口) 是否还被占用。
sudo netstat -tlnp | grep :80 sudo netstat -tlnp | grep :9000 # 或者使用更现代的 ss 命令 sudo ss -tlnp | grep :80
没有任何输出表示端口已释放。
清理 YUM 缓存(可选)
如果您是通过 YUM 卸载的,可以清理一下缓存,释放空间。
sudo yum clean all
至此,您已经成功地在 CentOS 系统中彻底删除了 Nginx 和 PHP,整个过程的核心在于:事前充分备份,准确判断安装方式,并采用对应的方法进行卸载和清理。
相关问答 (FAQs)
问1:卸载 Nginx 和 PHP 后,我放在网站目录下的项目文件(WordPress)会丢失吗?
答: 不会,无论是 yum remove
还是手动删除,默认操作都只针对程序本身、配置文件和日志,您的网站数据(通常位于 /var/www/html
或 /usr/local/nginx/html
)不会被自动删除,这绝不意味着可以掉以轻心,在执行任何卸载操作前,强烈建议将整个网站目录打包备份,以防误操作或后续需要恢复,这是最稳妥、最安全的做法。
问2:我如何确保卸载得“最彻底”,不留任何痕迹?
答: 要实现“最彻底”的卸载,需要遵循“识别、删除、验证”的原则,通过 rpm -qa
或 ps aux
识别所有相关的软件包、进程和文件路径,除了删除程序主体,还要手动清理所有残留的配置目录(如 /etc/nginx
)、日志目录(如 /var/log/nginx
)、库文件和系统服务文件(.service
),使用 ps
、netstat
和 find
命令进行全面验证,确保没有相关进程运行、没有端口被占用、系统中没有残留的文件或目录,尽管如此,要达到 100% 的“无痕”是极其困难的,系统日志中可能仍会记录过往的运行信息,但这通常对系统无任何影响,上述流程已经可以满足绝大多数场景下的“彻底卸载”需求。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复