最近使用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)可以自啟動。