개요
redmine을 활용함에 있어서 실제로 repository의 커밋과 일감(티켓, 이슈...)과의 연관관계를 지정하며 프로젝트 운용을 하고싶음. 따라서 redmine과 git/svn과의 연동을 시험해봄.
전제
redmine과 각 scm(source code management) 시스템은 1개의 물리적 서버에서 공존하는 형태로 구성(redmine이 로컬에 있는 scm밖에 지원하지 않음, 따로 떼어낼 이유도 없는 고로)
기능
특정 커밋과 이슈의 연관관계의 성립
-> 커밋할 때 메세지에 IssueID #0000과 같은형태로 연관지어주면 됨.
IssueID와 같은 키워드의 설정은 [관리->설정->저장소] 의 [일감 참조에 사용할 키워드들]에서 지정함.
간단한 diff 확인기능
커밋 통계기능
2014년 12월 10일 수요일
linux locale 설정문제
개요
gitolite도입 과정에서 발생하는 문제
svn접근시에도 발생
특정 유저로 접근시, 로케일이 설정되지 않아 LANG설정시에 문제가 발생함.
locale설정문제
gitolite의 설정을 한차례 마치고, 로케일 설정을 하지 않은 상태에서
ssh로 gitolite유저로 접근했을 경우, 다음과 같은 에러메세지를 확인하는 경우가 있음
혹은, svn co등을 통해 체크아웃을 실시하려 했을 경우에도 하단과 같은 문제가 발생함
참고자료
https://github.com/cou929/please-sleep/blob/master/posts/gitolite-setup-and-locale-warn-on-centos.md
해결책
결론적으로 로케일 설정을 실시하면 문제는 해결됨.
/etc/sysconfig/i18n에서 수정을 실시.
gitolite도입 과정에서 발생하는 문제
svn접근시에도 발생
특정 유저로 접근시, 로케일이 설정되지 않아 LANG설정시에 문제가 발생함.
locale설정문제
gitolite의 설정을 한차례 마치고, 로케일 설정을 하지 않은 상태에서
ssh로 gitolite유저로 접근했을 경우, 다음과 같은 에러메세지를 확인하는 경우가 있음
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_CTYPE = "UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
혹은, svn co등을 통해 체크아웃을 실시하려 했을 경우에도 하단과 같은 문제가 발생함
svnserve: warning: cannot set LC_CTYPE locale
svnserve: warning: environment variable LC_CTYPE is UTF-8
svnserve: warning: please check that your locale name is correct
https://github.com/cou929/please-sleep/blob/master/posts/gitolite-setup-and-locale-warn-on-centos.md
해결책
결론적으로 로케일 설정을 실시하면 문제는 해결됨.
locale -a | grep ko_KR
/etc/sysconfig/i18n에서 수정을 실시.
LANG="ko_KR.utf8"
LC_CTYPE="ko_KR.utf8"
localdef를 통한 설정은 효과를 볼 수가 없었음.
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
여타 투고상에서 권한을 맞춰주어라, 그룹을 맞춰주어라 하는 문제점이 지적되고 있는데, 근본적으로 이번의 경우 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행을 추가해줄것.
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행을 추가해줄것.
2014년 12월 5일 금요일
Redmine2를 Apache2 환경하에 구축하기
개요
Redmine은 ruby-on-rails-application이므로, 혹여 apache가 80/443포트를 점거하고 있는 상황하에 있어서 기본포트의 http/https를 이용하려 할 경우는 apache와의 연계가 필요함전제
ImageMagickImageMagick-devel
mysql
mysql-devel
ruby
ruby-devel
rake
상기 모듈들이 인스톨된 상태일 필요가 있음.(그냥 redmine설치에만 필요)
redmine의 인스톨
아래 참고자료 페이지를 참조.
http://www.redmine.org/projects/redmine/wiki/redmineinstall
순서대로 인스톨을 진행하면 큰 문제없이 ruby서버를 통한 기동까지 도달할 수 있음.
redmine 의 passenger모듈을 통한 rails<->apache의 연계
아래 참고자료 페이지를 참조.
http://redmine.jp/tech_note/apache-passenger/
redmine유저로 아래 커맨드를 순서대로 실행
아래의 명령 실행시, AWS기준으로 micro인스턴스에서는 메모리가 부족하여 빌드에 실패할 수가 있으니, 인스턴스를 large이상으로 일시적으로 설정하여 인스톨을 진행할것.
gem update
gem install passenger
passenger-install-apache2-module
(이 과정에서 특정 패스에 대한 권한이 요구됨. root로 일시적으로 설치를 진행하거나, 인스톨러가 권한이 필요한 패스를 알려주므로 해당 패스에 대한 접근권한을 일시적으로 설치를 진행할 유저가 가지게끔 설정해 줄 필요가 있음)
이후에 passenger-install-apache2-module의 마지막에서 알려주는대로 아파치의 설정을 실시함.
구체적으로는 모듈을 로드하는 부분을 추가하고, virtual host설정을 실시함.
이때 주의해야할것이 virtualhost의 documentRoot인데
예를들어 /??/redmine에 redmine의 소스가 배치되었다고 한다면
documentRoot로 지정되어야할 경로는
/??/redmine/public일 필요가 있음.
참고자료
http://www.redmine.org/projects/redmine/wiki/redmineinstallhttp://www.redmine.org/boards/2/topics/5254?r=40570
http://redmine.jp/tech_note/apache-passenger/
트러블슈팅
https://gist.github.com/satzz/261b4cba289a4b2ff3a9mysql, RMagick등의 관련의 에러가 발생할시 각 서버환경하의 패키지 매니저(yum, apt-get 등)를 통해 전제에 적혀있는 모듈이 인스톨 되어있는지 확인 및 시험을 해볼것.
2014년 12월 4일 목요일
Mac OSX에서 sshfs로 원격 스토리지 mount하기
참조
http://stackoverflow.com/questions/24309293/why-cant-i-setup-an-sshfs-share-osxfuse-file-system-is-not-available-error
전제
ssh-agent를 통해 타 원격지에 접근 가능한상태일것.
수순
http://stackoverflow.com/questions/24309293/why-cant-i-setup-an-sshfs-share-osxfuse-file-system-is-not-available-error
전제
ssh-agent를 통해 타 원격지에 접근 가능한상태일것.
수순
brew install sshfs
이 과정에서 confilict가 발생시 --force를 붙여줌.
mount하기
sshfs {id@hostname}:{path} {dir_path}
예를들면
sshfs ruel: local_dir_name/
호스트명 뒤에는 :를 붙여줄것. (아니면 인식안함)
경로는 필요없으면 생략가능, id마저도 /.ssh/config에 해결되어있을경우 불필요.
이 과정에서 OSX의 경우 아래와같은 메세지를 목격한바 있는데, 이는 위의 참조자료를 참고로해
brew info osxfuse
를 입력시 나오는 안내문중 가장 마지막 실행줄
sudo /bin/cp -RfX /usr/local/opt/osxfuse/Library/Filesystems/osxfusefs.fs /Library/Filesystems/
sudo chmod +s /Library/Filesystems/osxfusefs.fs/Support/load_osxfusefs
를 수행해둘 필요가 있음.
라벨:
linux,
osx,
remote-mount,
ssh,
sshfs
Mac OSX에서 AWS S3를 mount하기
참고자료
http://qiita.com/isaoshimizu/items/c9d0f88ce30ae2079dfa
준비
brew가 인스톨 되어있을것.
aws iam에 s3에 접근가능한 유저를 작성해둘것
수순
brew를 통한 패키지 인스톨
fuse4x의 설정
이하 명령을 수행하기에 앞서 fuse의 버전이 변하지 않았는지를 위 brew설치 과정중에 확인할것. 혹은
ls /usr/local/Cellar/fuse4x-kext/
명령을 통해 버전을 확인할것. 아래에 0.9.2로 되어있는 버전이 다를경우 그 부분은 변경.
AWS접근 권한의 설정
AccessToken / SecretKey를 설정
내용물
그냥 accesskey/secretkey를 :로 이어붙임.
permission은 아래와 같이 설정
마운트하기
언마운트하기
http://qiita.com/isaoshimizu/items/c9d0f88ce30ae2079dfa
준비
brew가 인스톨 되어있을것.
aws iam에 s3에 접근가능한 유저를 작성해둘것
수순
brew를 통한 패키지 인스톨
brew update brew install curl libxml2 fuse4x fuse4x-kext brew install s3fs
fuse4x의 설정
이하 명령을 수행하기에 앞서 fuse의 버전이 변하지 않았는지를 위 brew설치 과정중에 확인할것. 혹은
ls /usr/local/Cellar/fuse4x-kext/
명령을 통해 버전을 확인할것. 아래에 0.9.2로 되어있는 버전이 다를경우 그 부분은 변경.
sudo cp -rfX /usr/local/Cellar/fuse4x-kext/0.9.2/Library/Extensions/fuse4x.kext /System/Library/Extensions/ sudo chmod +s /System/Library/Extensions/fuse4x.kext/Support/load_fuse4x sudo kextload /System/Library/Extensions/fuse4x.kext/
AWS접근 권한의 설정
AccessToken / SecretKey를 설정
vi ~/.passwd-s3fs
내용물
ACCESS_KEY:SECRET_KEY
그냥 accesskey/secretkey를 :로 이어붙임.
permission은 아래와 같이 설정
chmod 600 ~/.passwd-s3fs
마운트하기
mkdir ~/s3 s3fs BUCKET_NAME ~/s3
언마운트하기
umount ~/s3
라벨:
AWS,
osx,
remote-mount,
S3,
s3fs
AWS S3를 Route53에서 루팅하기
메모성 포스팅입니다.
참고자료
http://stackoverflow.com/questions/11711781/hosting-static-website-with-aws-s3-and-route-53
수순
1. S3상에서 도메인명으로 버킷을 작성
2. S3버킷의 Properties > Static Website Hosting > Enable Website Hosting 에서 index.html 를 인덱스 파일로 입력.
3. S3버킷의 Properties > Permissions > Edit Bucket Policy 에서 아래와 같은 버킷 폴리시를 입력.
4. Route53의 Select your domain > Go to record sets > create record set 을 통해 신규 레코드를 작성
타입은 앨리어스인 이상에 뭐든 상관없으나 일단 A로, Alias를 활성화 하여 목록에서 뜨는 S3의 버킷을 선택(도메인이 아닌것도 시험하였으나 여기서 연결하기 위해서는 도메인명과 일치하는 버킷명이어야 하는듯, 도메인이 안맞으면 여기서 뜨지 않음)
이후에 해당 도메인이하 파일에 접근하면 파일이 수신됩니다.
참고자료
http://stackoverflow.com/questions/11711781/hosting-static-website-with-aws-s3-and-route-53
수순
1. S3상에서 도메인명으로 버킷을 작성
2. S3버킷의 Properties > Static Website Hosting > Enable Website Hosting 에서 index.html 를 인덱스 파일로 입력.
3. S3버킷의 Properties > Permissions > Edit Bucket Policy 에서 아래와 같은 버킷 폴리시를 입력.
{
"Version":"2008-10-17",
"Statement":[{
"Sid":"PublicReadForGetBucketObjects",
"Effect":"Allow",
"Principal": {
"AWS": "*"
},
"Action":["s3:GetObject"],
"Resource":["arn:aws:s3:::example-bucket/*"
]
}
]
}
단, example-bucket는 작성한 버킷의 버킷명을 입력.4. Route53의 Select your domain > Go to record sets > create record set 을 통해 신규 레코드를 작성
타입은 앨리어스인 이상에 뭐든 상관없으나 일단 A로, Alias를 활성화 하여 목록에서 뜨는 S3의 버킷을 선택(도메인이 아닌것도 시험하였으나 여기서 연결하기 위해서는 도메인명과 일치하는 버킷명이어야 하는듯, 도메인이 안맞으면 여기서 뜨지 않음)
이후에 해당 도메인이하 파일에 접근하면 파일이 수신됩니다.
피드 구독하기:
글 (Atom)




