2014년 12월 10일 수요일

Redmine을 이용해 git연동시 유의점

개요

redmine에서 제공하는 git연동기능을 이용함에 앞서 구성시 트러블 슈팅.

참고자료
http://qiita.com/isaac-otao/items/1e6b57809e3841d600c2
http://tanyaolinux.blogspot.jp/2011/09/redminegit.html
https://www.phusionpassenger.com/documentation/Users%20guide%20Apache.html#PassengerUserSwitching
https://www.phusionpassenger.com/documentation/Users%20guide%20Apache.html#PassengerUser

전제

apache+redmine을 이용해서 passenger을 통해 구성.
mod_dumpio를 이용해서 웹에서의 접근시의 상태를 모니터링함
이하의 에러 로그들은 이후 /var/log/httpd/error.log에서 확인된 것들

케이스1

App 4589 stderr: sh: /usr/local/bin/git: No such file or directory

git의 패스가 인식되지 않음. 패스가 정상적으로 설정이 안된경우.
이 경우는 서버의 구성이 샘플들과는 다른 경우이므로
redmine혹은 적절한 계정으로

[redmine@ip-***.***.***.*** /]$ which git
/usr/bin/git

과 같이 확인하여

/...redmine path.../config/configuration.yml


scm_git_command: /usr/bin/git
과 같은 형태로 절대경로로 수정해줌.

케이스2
App 3836 stderr: fatal: Not a git repository: '/git/gitscripts.git'


지정경로가 git-bare-repository가 아니거나, 경로를 인식할 수 없음 (권한문제)
지정 repository가 bare-repository임이 확실하다면, 권한문제를 해결한것.
기본적으로 웹에서 접근하는 경우 apache2.4의 경우는 유저그룹이 apache로 설정되어줄 필요가 있음. 그 이전에 관해서는  www-data일거라 사료됨.

케이스3

App 4750 stderr: fatal: Failed to resolve HEAD as a valid ref.

git-bare-repository까지인지는 확인했으나, 내부 권한문제 등으로 접근이 불가함.
redmine의 유저(apache그룹이 설정된)로, 로컬상에서 git clone을 실시. 내부 파일들의 퍼미션 상태상 발생하는 문제를 확인함. 이후 내부의 퍼미션을 조정.

여타 투고상에서 권한을 맞춰주어라, 그룹을 맞춰주어라 하는 문제점이 지적되고 있는데, 근본적으로 이번의 경우 apache+passenger을 이용한 구성이기 때문에 신경써야 할점은

gitolite (ssh)를 통해서 접근했을 경우와 그 외의 여타 요인으로 인한 bare-repository등에서의 접근과, 실질적으로 redmine 이 이용하고있는 passenger가 어떤 유저로서 로컬파일에 접근하는지가 관건이 됨.

passenger는 리눅스 계정(유저)를 다음과같이 정의하고있음.

https://www.phusionpassenger.com/documentation/Users%20guide%20Apache.html#PassengerUserSwitching

If user switching support is enabled, then Phusion Passenger will by default run the web application as the owner of the file config/environment.rb (for Rails apps) or config.ru (for Rack apps). This option allows you to override that behavior and explicitly set a user to run the web application as, regardless of the ownership of environment.rb/config.ru.

따라서, user switching support를 enable해줄 필요가 있음.

구체적으로 이 설정은 passenger-config 이라는 설정파일상에 PassengerUserSwitching on이라는 행을 넣어 줌으로서 상기 environment.rb파일 등의 오너설정(그룹)을 변경해 줌으로서 마무리됨.

passenger-config은 모듈을 인스톨했을때 위치가 틀려질거라 생각되므로

sudo find / -name "passenger-config"

과 같은 커맨드로 대상 파일을 찾아 상기의 1행을 추가해줄것.

댓글 없음:

댓글 쓰기