阿汤博客-承接中小企业服务器维护和网站维护,有意者可以联系博主!

解决nginx重启open() “/var/run/nginx/nginx.pid” failed (2: No such file or directory)问题

运维问题 348℃ 0评论

最近使用centos7.4编译安装的NGINX,重启服务器老是出现无法自启动,查看错误日志提示打开文件失败:

open() "/var/run/nginx/nginx.pid" failed (2: No such file or directory)

于是手动创建了/var/run/nginx,测试启动正常,马上又重启服务器,启动以后NGINX日志还是未启动,日志还是报错:

open() "/var/run/nginx/nginx.pid" failed (2: No such file or directory)

再次去查看/var/run/nginx目录又不存在了。

于是网上找了下资料,大部分的内容都是粘贴复制的,都是让修改nginx.conf文件,把

#pid logs/nginx.pid;去掉注释或者修改为一个自定义的目录。

试了下这个方法,会导致start nginx的时候,一直卡主不动,一直没找到原因,然后把pid logs/nginx.pid又注释掉,启动又正常了,怀疑可能是在编译的时候指定了–pid-path=/var/run/nginx/nginx.pid的原因。

于是想着每次重启服务器就会删除/var/run/nginx目录,那在启动nginx服务的时候加一个判断/var/run/nginx是否存在的条件,不存在创建就可以了。

找到/etc/init.d/nginx启动脚本的start()函数,在make_dirs后面加上[ -d /var/run/nginx ] || mkdir /var/run/nginx

start() {

    [ -x $nginx ] || exit 5

    [ -f $NGINX_CONF_FILE ] || exit 6

    make_dirs

    [ -d /var/run/nginx ] || mkdir /var/run/nginx

    echo -n $"Starting $prog: "

    daemon $nginx -c $NGINX_CONF_FILE

    retval=$?

    echo

    [ $retval -eq 0 ] && touch $lockfile

    return $retval

}

再次重启服务器,nginx已经可以自启动。

转载请注明:阿汤博客 » 解决nginx重启open() “/var/run/nginx/nginx.pid” failed (2: No such file or directory)问题

喜欢 (0)or分享 (0)