我正在嘗試使用 PHP-FPM 在 NGiNX 上設定 Nagios。
我安裝了fcgiwrap
並且能夠從該cgi-bin
資料夾執行 Perl 腳本,但是當我嘗試存取 Nagios 時,我在 NGiNX 錯誤日誌中收到以下錯誤:
2012/08/23 16:40:21 [error] 8319#0: *1 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 10.1.1.1, server: my.server.tld, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "my.server.tld"
我使用預設位置時遇到了相同的錯誤,因此我將所有內容複製到不同的資料夾中,以保持原始安裝檔案完好無損。
cp -R /usr/lib/cgi-bin/nagios3 /var/www/cgi-bin
cp -R /usr/share/nagios3/htdocs /var/www/html
這就是我所設定的/etc/nginx/sites-available/default
server {
listen 80;
server_name my.domain.tld;
access_log /var/log/nginx/my.domain.tld.access.log;
error_log /var/log/nginx/my.domain.tld.error.log;
index index.php index.html index.htm;
location / {
root /var/www/html/;
auth_basic "Restricted";
auth_basic_user_file /etc/nagios3/.htpasswd-users;
}
# Pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
fastcgi_pass localhost:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_intercept_errors on;
}
# FastCGI Wrapper
location /cgi-bin/ {
gzip off;
root /var/www/;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
這就是我在我的設定中設定的/etc/nagios3/cgi.cfg
physical_html_path=/var/www/html
url_html_path=/
這就是我正在運行的 PHP 明智的:
PHP 5.3.16-1~dotdeb.0 with Suhosin-Patch (cli) (built: Aug 17 2012 22:03:18)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
with the ionCube PHP Loader v4.2.2, Copyright (c) 2002-2012, by ionCube Ltd.
with Suhosin v0.9.33, Copyright (c) 2007-2012, by SektionEins GmbH
關於什麼會導致此問題和/或如何解決它有什麼想法嗎?
答案1
澄清艾莉卡的回答:
它是在說“主要腳本未知”因為NGiNX做不是支持跑步電腦圖形影像處理直接地。一個幫助程序必須安裝來處理電腦圖形影像處理文件並將輸出返回到NGiNX。
這就是我安裝的原因fcgiwrap
,它處理電腦圖形影像處理文件並將輸出傳遞到PHP-FPM,然後由NGiNX,AFAI使用者介面。
雖然我以為我已經開始寫init.d
劇本了fcgiwrap
,但我並沒有。
我能夠通過運行來確定這一點netstat -alnp | grep cgi
,在我啟動腳本之前它不會返回任何輸出;/etc/init.d/fcgiwrap start
啟動後,我netstat -alnp | grep cgi
再次運行,得到以下輸出:
unix 2 [ ACC ] STREAM LISTENING 18955 11251/fcgiwrap /var/run/fcgiwrap.socket
一旦腳本運行,並且電腦圖形影像處理正在工作,我不再收到此錯誤,並且納吉奧斯工作了。
為那些因為思維混亂和愚蠢的小錯誤而導致的偏頭痛歡呼吧!
答案2
除非最近的版本發生了重大變化,否則 Nagios 不是一個 PHP 應用程式。