Я запускаю сервер Debian с nginx, размещенным в / var / chroot / nginx. Это прекрасно работает, но я бы хотел иметь возможность запускать cgit и размещать свои репозитории gitolite.
Когда он был вне chroot, он выдал бы мне ту же ошибку, что и сейчас, а именно:
2012/12/08 14:25:19 [error] 9179#0: *3 FastCGI sent in stderr: "Cannot get script name, is DOCUMENT_ROOT and SCRIPT_NAME set and is the script executable?" while reading response header from upstream
Я почти уверен, что это проблема с fastcgi ... вот соответствующие строки в моем nginx.conf:
server {
listen 80;
server_name git.url.tld;
access_log /var/log/nginx/cgit.access.log;
error_log /var/log/nginx/cgit.error.log;
root /var/www/htdocs/cgit;
location ~* ^.+\.(css|png|ico)$ {
root /var/www/htdocs/cgit;
expires 30d;
}
location / {
root /var/www/htdocs/cgit;
fastcgi_param SCRIPT_NAME cgit.cgi;
fastcgi_param DOCUMENT_ROOT /var/www/htdocs/cgit;
fastcgi_param PATH_INFO $uri;
fastcgi_param QUERY_STRING $args;
fastcgi_pass unix:/tmp/cgi.sock;
}
}
Какие-нибудь подсказки? Fastcgi, fcgi-wrap и т. Д. Находятся вне chroot, потому что наличие cgit, fastcgi и gitolite в chroot показалось немного чрезмерным. У fastcgi открыт сокет по адресу /var/chroot/nginx/tmp/cgi.sock.
Спасибо за вашу помощь!!
Вероятно, это ошибка версии fcgiwrap, обнаруженная в debian squeeze (1.0-1 + squeeze1). Видеть http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=698071
Обновление до fcgiwrap 1.0.3-3 решило проблему для меня.