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

2019年6月17日11:32:35 發表評論 10,646 ℃

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

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: