在 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自启动失败问题排查相关推荐

  1. Android应用如何开机自启动、自启动失败原因

    2019独角兽企业重金招聘Python工程师标准>>> Android应用如何开机自启动.自启动失败原因 本文主要介绍Android应用如何开机自启动.自启动失败的原因.adb命令发 ...

  2. Visual Studio 2017启动x86的Android模拟器失败

     Visual Studio 2017启动x86的Android模拟器失败 Visual Studio 2017默认提供多个Android模拟器.其中,x86模拟器运行较快.但是由于和Hyper-V服 ...

  3. 在eclipse中启动Tomcat访问localhost:8080失败项目添加进Tomcat在webapp中找不到

    软件环境:Eclipse oxygen, Tomcat8.5 #在eclipse中启动Tomcat访问localhost:8080失败 在eclipse中配置tomcat后,打开tomcat后访问lo ...

  4. Interllij IDEA启动Jrebe因为中文路径失败

    Interllij IDEA启动Jrebe因为中文路径失败,因为电脑的用户名是中文,所以需要修改当前用户名. 首先,这个文件夹是根据用户账户名来创建的,可能用户账户的名字就拼写错了.我们可以通过以下的 ...

  5. 无法激活windows应用商店应用程序,应用进程已启动,但激活请求失败,错误为“应用未启动”

    无法激活windows应用商店应用程序,应用进程已启动,但激活请求失败,错误为"应用未启动" 使用VS2017配置环境时出错,不是C#版本. 原因 部署和调试打不开是因为依赖库不全 ...

  6. 双系统装完只能u盘启动_双系统引导失败如何修复教程?用NTBootAutofix一键修复...

    因为出了win10系统,但由于是新系统可能怕有问题或者想尝鲜,这时候很多朋友会选择安装双系统,也就是说在win7系统存在的情况下再安装一个win10,比如win7在c盘,而win10我们装到新的分区F ...

  7. android 6.0关闭开机启动器,Android实现开机自启动及开机自启动失败原因

    1.开机自启动实现代码 BroadcastReceiver开机自启动实现,MainActivity.class为自启动显示的页面. public class BootBroadcastReceiver ...

  8. 英雄联盟服务器维护 启动游戏失败,英雄联盟手游登陆失败该怎么办 登陆失败的解决办法...

    英雄联盟手游作为当下最热门的游戏,相信很多的玩家都遇到登陆失败的时候吧,那么英雄联盟手游登陆失败我们该怎么办呢?接下来小编带来了英雄联盟手游登陆失败的解决方法,一起来看看吧! 英雄联盟手游登陆失败该怎 ...

  9. php fpm 统计,php实现fpm开启状态统计的方法

    这篇文章主要给大家介绍了php-fpm开启状态统计的方法,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧. 本文主要给大家介绍了关于php-fpm开启状态统计的相关内容 ...

最新文章

  1. python向mysql中添加数据标签_用python在MySQL中写入数据和添加数据
  2. Android Stdio报错Caused by: org.gradle.api.internal.plugins.PluginApplicationException: Failed
  3. Oracle Rman 命令详解(List report backup configure)
  4. 1.今日标签:视频价值一千字
  5. vue生成带签名的apk
  6. hibernate5(8)操纵对象入门[3]操控对象封装方法
  7. Linux 之 CentOS 7.2 安装 Java JDK
  8. 论文笔记:针对盲化的 RSA算法的水平聚类侧信道攻击
  9. 分享一大波高清电子元器件矢量图,速速下载收藏!
  10. 职称论文通过查重之后就能发表吗?
  11. 网络分析仪自动化测试软件,高效矢量网络分析仪自动测试方法
  12. 谷歌浏览器SwitchyOmega插件下载安装
  13. 转换IC CD7833CZ:4x41W汽车音响功率放大电路
  14. HDMI Type A、B、C、D接口图
  15. 成 功 的 背 后 !( 致给所有IT人员)
  16. 中兴微型计算机,超乎想象的视觉享受,中兴天机Axon 9 Pro
  17. 华为OD机试 - 硬件产品销售方案(Java JS Python)
  18. LeetCode:第13题 罗马数字转整数 python语言实现 2020.2.3
  19. 调程序的小女孩(我转我转我转转转)
  20. 股票配资网站常用词!!!

热门文章

  1. 两台局域网电脑大数据传输详细教程
  2. 武汉大学计算机电气,武汉大学电气与自动化学院
  3. 【系统分析师之路】第七章 系统分析架构篇记忆敲出
  4. 使用pyecharts绘制地图
  5. 利用vbs维护qtp的虚拟对象的坐标
  6. 主成分分析实战篇:南极考察站检测数据降维
  7. 显卡功耗天梯图 2023年显卡功耗排行天梯图
  8. ArangoDB AQL中的图形绘制遍历
  9. 虚拟机文件过多,如何删除?vmdk文件能删除吗?
  10. 如何甄别有价值的数据