php-fpm 启动失败,php-fpm自启动失败问题排查
在 vagrant ubuntu 14.04 环境中配置的 php-fpm 总是自启动失败,每次都需要 vagrant ssh 上去切换到 root 手动起来
sudo su -
/etc/init.d/php-fpm start
非常不专业
排查思路
首先,确认 init.d 是否有统一的日志文件,看 centos - Is there an init.d start log? - Unix & Linux Stack Exchange,并没有。
然后,确认一下,php-fpm 的日志文件是否记录了启动错误。从 /etc/init.d/php-fpm 启动脚步文件中
php_fpm_CONF=/usr/share/php52/etc/php-fpm.conf
得知 php-fpm.conf 的位置,然后找到对应的错误文件的位置
/usr/share/php52/logs/php-fpm.log
然而从 php-fpm.log 中,并没有找到启动失败的日志
Nov 24 09:12:49.308395 [NOTICE] fpm_unix_init_main(), line 284: getrlimit(nofile): max:4096, cur:1024
Nov 24 09:12:49.325857 [NOTICE] fpm_event_init_main(), line 88: libevent: using epoll
Nov 24 09:12:49.326117 [NOTICE] fpm_init(), line 52: fpm is running, pid 2374
Nov 24 09:12:49.326845 [NOTICE] fpm_children_make(), line 352: child 2375 (pool default) started
Nov 24 09:12:49.327193 [NOTICE] fpm_children_make(), line 352: child 2376 (pool default) started
Nov 24 09:12:49.327337 [NOTICE] fpm_children_make(), line 352: child 2377 (pool default) started
Nov 24 09:12:49.327525 [NOTICE] fpm_children_make(), line 352: child 2378 (pool default) started
Nov 24 09:12:49.327707 [NOTICE] fpm_children_make(), line 352: child 2379 (pool default) started
Nov 24 09:12:49.327726 [NOTICE] fpm_event_loop(), line 107: libevent: entering main loop
使用默认的 vagrant 用户启动
vagrant@vagrant-ubuntu-trusty-64:~$ /etc/init.d/php-fpm start
Starting php_fpm Nov 24 11:20:09.272806 [ERROR] fpm_stdio_open_error_log(), line 266: open("/usr/share/php52/logs/php-fpm.log") failed: Permission denied (13)
failed
然后这个错误信息,并没有出现在 php-fpm.log 中,说明 init.d 如果是因为权限问题启动失败,那么对应的错误信息也不会出现在日志中。
那么 init.d/php-fpm 到底是由哪个用户启动的呢?将 logs 目录的权限进行了修改
chown vagrant:vagrant -R /usr/share/php52/logs/
仍然启动失败,说明也并不是由 vagrant 启动的。那么如何让启动脚本由 root 账户开机自启动呢?参考 How to run a script during boot as root - Ask Ubuntu
第一次知道 init.d 中的脚步并不会被自动执行,需要软链到 rcX.d 中才能被执行,突然感觉这么多年 Linux 是白玩了!
于是
ln -s /etc/init.d/php-fpm /etc/rc3.d/S99php-fpm
启动之后,依然没有发现 php-fpm 进程,突然发现这句话
Note that under Ubuntu Server 14.04, I needed to use /etc/rc2.d, instead of rc3.d as indicated in the example.
于是把 rc3.d 换成 rc2.d
ln -s /etc/init.d/php-fpm /etc/rc2.d/S99php-fpm
vagrant halt & vagrant up, 哈哈 php-fpm 可以正常自启动了!
runlevel 2 与 3 的区别
3 is used when a system is in full production. Take it as the runlevel your software will run. 2 is historical and is like 3, but without NFS.
那为何 Ubuntu 中使用的是 runlevel 2 而不是 runlevel 3 呢?
The Debian distribution (and hence Ubuntu, which is derived from it) does not define any differences between runlevels 2-5 as a matter of policy. It is up to the local system administrator to make use of runlevels as they see fit. Since there is no difference between runlevels 2-5, a default runlevel 2 was chosen.
我觉得 Debian 系很实在,搞得简单点挺好!
php-fpm 启动失败,php-fpm自启动失败问题排查相关推荐
- Android应用如何开机自启动、自启动失败原因
2019独角兽企业重金招聘Python工程师标准>>> Android应用如何开机自启动.自启动失败原因 本文主要介绍Android应用如何开机自启动.自启动失败的原因.adb命令发 ...
- Visual Studio 2017启动x86的Android模拟器失败
Visual Studio 2017启动x86的Android模拟器失败 Visual Studio 2017默认提供多个Android模拟器.其中,x86模拟器运行较快.但是由于和Hyper-V服 ...
- 在eclipse中启动Tomcat访问localhost:8080失败项目添加进Tomcat在webapp中找不到
软件环境:Eclipse oxygen, Tomcat8.5 #在eclipse中启动Tomcat访问localhost:8080失败 在eclipse中配置tomcat后,打开tomcat后访问lo ...
- Interllij IDEA启动Jrebe因为中文路径失败
Interllij IDEA启动Jrebe因为中文路径失败,因为电脑的用户名是中文,所以需要修改当前用户名. 首先,这个文件夹是根据用户账户名来创建的,可能用户账户的名字就拼写错了.我们可以通过以下的 ...
- 无法激活windows应用商店应用程序,应用进程已启动,但激活请求失败,错误为“应用未启动”
无法激活windows应用商店应用程序,应用进程已启动,但激活请求失败,错误为"应用未启动" 使用VS2017配置环境时出错,不是C#版本. 原因 部署和调试打不开是因为依赖库不全 ...
- 双系统装完只能u盘启动_双系统引导失败如何修复教程?用NTBootAutofix一键修复...
因为出了win10系统,但由于是新系统可能怕有问题或者想尝鲜,这时候很多朋友会选择安装双系统,也就是说在win7系统存在的情况下再安装一个win10,比如win7在c盘,而win10我们装到新的分区F ...
- android 6.0关闭开机启动器,Android实现开机自启动及开机自启动失败原因
1.开机自启动实现代码 BroadcastReceiver开机自启动实现,MainActivity.class为自启动显示的页面. public class BootBroadcastReceiver ...
- 英雄联盟服务器维护 启动游戏失败,英雄联盟手游登陆失败该怎么办 登陆失败的解决办法...
英雄联盟手游作为当下最热门的游戏,相信很多的玩家都遇到登陆失败的时候吧,那么英雄联盟手游登陆失败我们该怎么办呢?接下来小编带来了英雄联盟手游登陆失败的解决方法,一起来看看吧! 英雄联盟手游登陆失败该怎 ...
- php fpm 统计,php实现fpm开启状态统计的方法
这篇文章主要给大家介绍了php-fpm开启状态统计的方法,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧. 本文主要给大家介绍了关于php-fpm开启状态统计的相关内容 ...
最新文章
- python向mysql中添加数据标签_用python在MySQL中写入数据和添加数据
- Android Stdio报错Caused by: org.gradle.api.internal.plugins.PluginApplicationException: Failed
- Oracle Rman 命令详解(List report backup configure)
- 1.今日标签:视频价值一千字
- vue生成带签名的apk
- hibernate5(8)操纵对象入门[3]操控对象封装方法
- Linux 之 CentOS 7.2 安装 Java JDK
- 论文笔记:针对盲化的 RSA算法的水平聚类侧信道攻击
- 分享一大波高清电子元器件矢量图,速速下载收藏!
- 职称论文通过查重之后就能发表吗?
- 网络分析仪自动化测试软件,高效矢量网络分析仪自动测试方法
- 谷歌浏览器SwitchyOmega插件下载安装
- 转换IC CD7833CZ:4x41W汽车音响功率放大电路
- HDMI Type A、B、C、D接口图
- 成 功 的 背 后 !( 致给所有IT人员)
- 中兴微型计算机,超乎想象的视觉享受,中兴天机Axon 9 Pro
- 华为OD机试 - 硬件产品销售方案(Java JS Python)
- LeetCode:第13题 罗马数字转整数 python语言实现 2020.2.3
- 调程序的小女孩(我转我转我转转转)
- 股票配资网站常用词!!!