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

2019年6月17日11:32:35 发表评论 8,883 ℃

最近使用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已经可以自启动。

【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: