在 CentOS 8 系统上折腾 php 的时候,是不是总遇到这种情况:改了配置文件,网站却没啥变化?输了重启命令,要么提示 “找不到服务”,要么重启后网站直接打不开?小编前阵子帮朋友维护服务器,就因为重启 php-fpm 的命令输错了,折腾了快一小时,后来才发现是自己没搞懂 CentOS 8 的特性。今天就把正确的重启命令和要注意的地方说清楚,新手也能照着做,一起往下看吧!
先搞懂:CentOS 8 里的 php-fpm 叫啥名?
别上来就输命令,CentOS 8 里的 php-fpm 服务名和老版本不太一样,弄错了肯定失败。
- 如果你装的是 php7.4,服务名叫 “php74-php-fpm”;
- 装的是 php8.0,那就是 “php80-php-fpm”;
- 小编提醒:名字里的版本号千万别漏,朋友就是输成 “php-fpm”,结果提示 “Unit not found”,白白浪费时间。
想知道自己装的是哪个版本?输 “php -v” 就行,比如显示 “PHP 7.4.30”,那就对应 “php74-php-fpm”,记不住的话,输 “systemctl list-unit-files | grep php-fpm”,系统会把所有 php-fpm 相关的服务名列出来,找你在用的那个就行。
正确的重启命令:就这两条,记牢了
CentOS 8 用 systemctl 管理服务,重启 php-fpm 的命令其实很简单,分两步走:
第一步:先检查服务状态
输这条命令:systemctl status php74-php-fpm
(把版本号换成你自己的),看看服务是不是在运行。
- 如果显示 “active (running)”,说明正在运行,可以重启;
- 要是显示 “inactive (dead)”,那就不是重启,得用 “start” 命令启动。
小编上次就没检查状态,直接用了重启命令,结果服务本来就没开,白操作了一次。
第二步:重启服务
确认服务在运行后,输重启命令:sudo systemctl restart php74-php-fpm
。
- 注意前面要加 “sudo”,不然会提示 “权限不够”,新手常忘这个;
- 输完后没提示就是成功了,想确认的话,再用 “status” 命令看看,显示 “active (running)” 就没问题。
如果是第一次启动,用sudo systemctl start php74-php-fpm
,停止的话用 “stop”,这三个命令(start、stop、restart)记牢了,基本能应对大部分情况。
这些坑,新手十有八九会踩
重启 php-fpm 时遇到的问题,多半是这些原因,小编总结了几个常见的,提前避开:
命令输错:服务名里的版本号别瞎写
比如你装的是 php8.0,却输成 “php74-php-fpm”,系统肯定不认识。解决办法很简单,用 “php -v” 查清楚版本,再对应着改服务名,别凭感觉瞎猜。朋友就因为记错版本号,输了三次命令都错,急得直拍桌子。
权限不够:别忘加 sudo
普通用户没权限重启系统服务,输命令时前面一定要加 “sudo”,然后输你的用户密码(输密码时屏幕上不显示,输完回车就行)。小编第一次帮人操作,就忘了加 sudo,提示 “Failed to restart”,还以为是命令错了,折腾半天。
配置文件出错:重启后服务起不来
改了 php.ini 或者 www.conf 后,要是有语法错误(比如少个分号、括号不闭合),重启 php-fpm 会失败。这时候别慌,输journalctl -xe | grep php-fpm
,日志里会告诉你哪行出错了,改过来再重启就行。上次朋友就是在配置文件里多打了个空格,日志里清清楚楚标出来了,改完立马好。
重启前,这几件事最好先做好
别嫌麻烦,重启前做这些准备,能少出问题:
- 备份配置文件:比如
cp /etc/opt/remi/php74/php.ini /root/php.ini.bak
,万一改乱了还能恢复,小编每次改配置都这么做,踏实; - 通知网站用户:重启会让网站卡 1-2 秒,最好选半夜人少的时候操作,朋友的论坛就因为白天重启,被用户吐槽 “突然掉线”;
- 先重载配置试试:如果只是改了小参数,输
sudo systemctl reload php74-php-fpm
,不用停服务,比重启更温柔,适合在线网站。
自问自答:新手可能会问的问题
重启后网站打不开,显示 “502 Bad Gateway”,咋整?
这多半是 php-fpm 没启动成功,先输systemctl status php74-php-fpm
看看状态,如果是 “failed”,就查日志找错误;要是状态正常,可能是 nginx 配置有问题,重启 nginx 试试:sudo systemctl restart nginx
,小编遇到过好几次,都是 nginx 没和 php-fpm 同步导致的。
能不能设成开机自动启动 php-fpm?
当然可以!输sudo systemctl enable php74-php-fpm
,以后服务器重启,php-fpm 会自己启动,不用手动操作,特别适合没人看管的服务器,朋友的云服务器就这么设的,省了不少事。
不同版本的 php-fpm 能同时装吗?重启的时候会不会冲突?
可以同时装,但重启时得指定具体版本的服务名,比如restart php74-php-fpm
和restart php80-php-fpm
,各管各的,不会冲突。小编测试环境就装了两个版本,切换着用,挺方便的。
最后说点实在的
小编觉得,在 CentOS 8 上重启 php-fpm,关键就俩字:“细心”。服务名里的版本号别漏,命令前加 sudo,重启前检查配置文件,做好这几点,基本不会出大问题。
其实新手不用怕输错命令,系统会提示错误原因,照着提示改就行。多试几次,你也能熟练操作,就像小编现在,闭着眼睛都能输对命令啦!希望这些能帮到刚接触 CentOS 8 的朋友,少走弯路。