這篇文章主要是關(guān)于Nginx在編譯安裝時(shí),可能出現(xiàn)的錯(cuò)誤的解決方法。Nginx正確的編譯安裝操作見(jiàn)前文 《2015博客升級(jí)記(三):CentOS 7.1編譯安裝Nginx1.9.0》 。
1 Nginx啟動(dòng)腳本錯(cuò)誤:env: /etc/init.d/nginx: No such file or directory
明明上傳了Nginx服務(wù)控制腳本 nginx ,但是在執(zhí)行 service nginx start 命令時(shí),卻會(huì)報(bào)上面的錯(cuò)誤。
解決方法:?jiǎn)?dòng)腳本的格式有問(wèn)題,例如該腳本是dos格式,在Linux系統(tǒng)是中無(wú)法識(shí)別的。可以通過(guò)vim打開(kāi)該文件,如果可以看到出現(xiàn) ^M 的字符,就可以確定是DOS格式的了。那么可以在vim中執(zhí)行命令 :%s/\r\+$//e ,將其轉(zhuǎn)換成Unix格式即可。
2 啟動(dòng)Nginx服務(wù)失敗
安裝完Nginx后,執(zhí)行命令 service nginx start 失敗,即無(wú)法正常啟動(dòng)Nginx服務(wù)。
[root@typecodes init.d]# service nginx start
Starting nginx (via systemctl): Warning: Unit file of nginx.service changed on disk, 'systemctl daemon-reload' recommended.
Job for nginx.service failed. See 'systemctl status nginx.service' and 'journalctl -xn' for details.
[FAILED]
解決方法:主要通過(guò)命令 systemctl status nginx.service 來(lái)分析,如下圖所示。
很明顯是由于下面這個(gè)錯(cuò)誤,導(dǎo)致Nginx服務(wù)啟動(dòng)失敗。
Apr 11 21:43:07 typecodes nginx[4026]: Starting nginx: nginx: [emerg] mkdir() "/var/tmp/nginx/client/" failed (2: No such file or directory)
這種錯(cuò)誤一般都是目錄不存在或者權(quán)限不足,所以直接執(zhí)行下面兩條命令即可。
[root@typecodes ~]# cd /var/tmp/
[root@typecodes ~]# mkdir -p /var/tmp/nginx/{client,proxy,fastcgi,uwsgi,scgi}
3 啟動(dòng)Nginx服務(wù)時(shí),界面卡住
在敲入命令 service nginx restart 后,終端界面能卡住,也就是Nginx服務(wù)控制腳本 nginx 沒(méi)有正常執(zhí)行完畢。在停止Nginx服務(wù)后,發(fā)現(xiàn)Nginx進(jìn)程還存在。
#######啟動(dòng)Nginx服務(wù)出現(xiàn)警告
[root@typecodes init.d]# service nginx restart
Restarting nginx (via systemctl): Warning: Unit file of nginx.service changed on disk, 'systemctl daemon-reload' recommended.
Restarting nginx (via systemctl): Warning: Unit file of nginx.service changed on disk, 'systemctl daemon-reload' recommended.
^C ######終端界面卡住,使用ctrl+c命令強(qiáng)制結(jié)束
#######停掉Nginx服務(wù)
[root@typecodes init.d]# service nginx stop
Stopping nginx (via systemctl): [ OK ]
#######查看Nginx進(jìn)程是否已被停止(可以看到未停止)
[root@typecodes init.d]# ps -aux|grep nginx
root 7796 0.0 0.2 84184 2044 ? Ss 21:14 0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx 7798 0.0 0.3 86656 3380 ? S 21:14 0:00 nginx: worker process
root 7981 0.0 0.0 112644 964 pts/0 S+ 21:19 0:00 grep --color=auto nginx
解決方法:可能是Nginx服務(wù)控制腳本(/etc/init.d/nginx)代碼不正確,推薦使用文章 《Nginx服務(wù)啟動(dòng)、停止和重啟等操作的SHELL腳本》 中的shell腳本。最后再重新執(zhí)行下面的腳本即可。
[root@typecodes init.d]# chkconfig --add nginx
[root@typecodes init.d]# chkconfig nginx on
[root@typecodes init.d]# service nginx restart
還有一種在啟動(dòng)Nginx服務(wù)時(shí),終端界面會(huì)卡住的情況:那就是Nginx的配置文件 /etc/nginx/nginx.conf 不正確,但是使用 nginx -t 命令顯示正常。這種情況只能對(duì)nginx.conf文件中的每一個(gè)配置進(jìn)行檢查了。
4 Compilation failed in require或者perl_parse() failed
在使用命令 service nginx start 啟動(dòng)Nginx服務(wù)時(shí)報(bào)錯(cuò),于是通過(guò) systemctl status nginx.service 查看具體的錯(cuò)誤信息。
然后使用命令 nginx -t 查看配置是否正常,如下圖所示,同樣報(bào)錯(cuò)。
解決方法:從圖中可以看出由于 Can't load '/usr/local/lib64/perl5/auto/nginx/nginx.so' for module nginx: /usr/local/lib64/perl5/au...m line 68. 的錯(cuò)誤,導(dǎo)致了Nginx在調(diào)用函數(shù)時(shí)失?。?perl_parse() failed 。也就是證明是之前沒(méi)有安裝perl依賴包,于是通過(guò)執(zhí)行命令 yum -y install perl-devel perl-ExtUtils-Embed 后,再次編譯安裝Nginx解決。
|