解決nginx重啟open() “/var/run/nginx/nginx.pid” failed (2: No such file or directory)問題

2019年6月17日11:32:35 發(fā)表評論 10,495 ℃

最近使用centos7.4編譯安裝的NGINX,重啟服務(wù)器老是出現(xiàn)無法自啟動,查看錯誤日志提示打開文件失?。?/span>

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

于是手動創(chuàng)建了/var/run/nginx,測試啟動正常,馬上又重啟服務(wù)器,啟動以后NGINX日志還是未啟動,日志還是報(bào)錯:

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

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

于是網(wǎng)上找了下資料,大部分的內(nèi)容都是粘貼復(fù)制的,都是讓修改nginx.conf文件,把

#pid logs/nginx.pid;去掉注釋或者修改為一個自定義的目錄。

試了下這個方法,會導(dǎo)致start nginx的時候,一直卡主不動,一直沒找到原因,然后把pid logs/nginx.pid又注釋掉,啟動又正常了,懷疑可能是在編譯的時候指定了--pid-path=/var/run/nginx/nginx.pid的原因。

于是想著每次重啟服務(wù)器就會刪除/var/run/nginx目錄,那在啟動nginx服務(wù)的時候加一個判斷/var/run/nginx是否存在的條件,不存在創(chuàng)建就可以了。

找到/etc/init.d/nginx啟動腳本的start()函數(shù),在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

}

再次重啟服務(wù)器,nginx已經(jīng)可以自啟動。

【騰訊云】云服務(wù)器、云數(shù)據(jù)庫、COS、CDN、短信等云產(chǎn)品特惠熱賣中

發(fā)表評論

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