nginx와 fcgiwrap을 사용하여 Alpine Linux에서 git-daemon(git-http-backend)을 실행하고 싶습니다. 그러나 nginx 및 fcgiwrap의 기본 설치로 인해 502 잘못된 게이트웨이 오류가 발생합니다. 분명히 그룹 액세스에는 fcgiwrap 소켓에 대한 쓰기 권한이 누락된 것 같습니다.
fcgiwrap 소켓의 그룹에 쓰기 액세스 권한을 부여하면 모든 것이 잘 작동합니다. 작동시키는 올바른 방법은 무엇입니까? fcgiwrap이 시작될 때 소켓 파일이 생성되므로 실행하기 전에 권한을 조정할 수 없습니다.
세부 사항:
저는 알파인 리눅스 3.10을 사용하고 있습니다. 그 중 nginx, fcgiwrap, git-daemon 및 기타 소프트웨어 패키지를 설치했습니다. 간단한 fcgiwrap 테스트를 위해 Perl과 테스트 스크립트를 추가했습니다 f.pl
.
서비스가 시작된 후 fcgiwrap 소켓에 대한 권한은 다음과 같습니다.
gitsrv-dev:~# ls -la /run/fcgi*
total 0
drwxrwsr-x 2 fcgiwrap www-data 60 Feb 21 08:52 .
drwxr-xr-x 7 root root 320 Feb 17 19:03 ..
srwxr-xr-x 1 fcgiwrap www-data 0 Feb 21 08:52 fcgiwrap.sock
이러한 서비스는 다음 사용자로 실행됩니다.
gitsrv-dev:~# ps axu | grep -E '(nginx|fcgiwrap)'
3436 root 0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
3443 nginx 0:00 nginx: worker process
3490 fcgiwrap 0:00 /usr/bin/fcgiwrap -f -c 1 -s unix:/run/fcgiwrap/fcgiwrap.sock
3554 root 0:00 grep -E (nginx|fcgiwrap)
내 테스트 Perl 스크립트는 fcgiwrap에 의해 실행됩니다.
gitsrv-dev:~# cat /repos/f/f.pl
#!/usr/bin/perl
print "Content-Type: text/html\n\n";
print "<h1>f.pl is working</h1>";
nginx에서 f.pl 스크립트를 실행하기 위한 구성:
gitsrv-dev:~# vi /etc/nginx/conf.d/f.conf
server {
listen *:82;
location ~ /f(/.*) {
gzip off;
root /repos/f;
client_max_body_size 0;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /repos/f/f.pl;
fastcgi_param PATH_INFO $1;
fastcgi_param REMOTE_USER $remote_user;
fastcgi_pass unix:/run/fcgiwrap/fcgiwrap.sock;
}
}
앞서 언급한 대로 이 기본 구성으로 인해 502 잘못된 게이트웨이 오류(URL http://192.168.1.221:82/f/
)가 발생합니다.
권한을 부여하면 g+w
작동합니다.
gitsrv-dev:~# chmod g+w /run/fcgiwrap/fcgiwrap.sock
gitsrv-dev:~# ls -la /run/fcgi*
total 0
drwxrwsr-x 2 fcgiwrap www-data 60 Feb 21 08:52 .
drwxr-xr-x 7 root root 320 Feb 17 19:03 ..
srwxrwxr-x 1 fcgiwrap www-data 0 Feb 21 08:52 fcgiwrap.sock
이제 브라우저를 다시 로드하면 출력이 표시됩니다 f.pl is working
.
저는 일부 내부 서버에서 Alpine Linux를 사용하고 있습니다. 모두 가상 머신에서 정상적으로 실행됩니다. 이것들은 vagrant/puppet을 사용하여 설정되었으며 이제 git 서버를 만들고 싶습니다. 그래서 저는 기본 스크립트 파일을 수정하지 않고 간단하게 만들고 싶습니다. fcgiwrap과 nginx가 함께 잘 작동하도록 하기 위한 몇 가지 확실한 구성 옵션이 누락되었습니까?
답변1
이것은 단지 약간의 추측일 뿐입니다...
이것fcgiwrap 매뉴얼이것은 언급되었습니다 :
다음과 같은 구성으로 fcgiwrap을 시작하려면 generate-fcgi를 사용하는 것이 가장 좋습니다.
FCGI_SOCKET=/var/run/fcgiwrap.sock FCGI_PROGRAM=/usr/sbin/fcgiwrap FCGI_USER=nginx FCGI_GROUP=www FCGI_EXTRA_OPTIONS="-M 0700" ALLOWED_ENV="PATH"
주위를 둘러보면 이미 알파인에 fcgiwrap
구성 파일이 설치되어 있는 것 같습니다.알프스에서예 /etc/conf.d/spawn-fcgi
(언급됨여기). 귀하의 질문에서 fcgiwrap을 시작하는 방법을 언급하지 않았으므로 그것이 시작한 방법인 것 같습니다.
따라서 이 파일을 편집하고 주석 처리된 행을 찾으십시오.
# Additional options you might want to pass to spawn-fcgi
#
#FCGI_EXTRA_OPTIONS=
다음으로 변경하세요.
# Additional options you might want to pass to spawn-fcgi
#
FCGI_EXTRA_OPTIONS="-M 0770"
그러면 소켓에 대한 권한(모드)이 변경됩니다. 이 옵션은 -m
문서화되어 있습니다.여기.