trac에서 좀더 향상된 기능의 redmine은 각종 프로젝트 등을 병행(multiful)진행 할때 유용한 툴이다. 단순 개발뿐만 아니라. 중소규모 회사에서도 따로 비용을 들이지 않고, 업무관리를 할때 유용하다.
여기 나온 방법은 redmine 혹은 그 외 툴들(rubygems)이 버젼업을 할때마다 달라질수 있습니다. 그러니 정도(正道)로 보지 마시고 더 다양한 문서들을 찾아보세요. 여기 인스톨 되는 버젼은 rails 2.3.11에서 작동되는 trunk버젼이다. r2887~r4903버젼의 경우 rails, rack 버젼을 잘 맞추길 바란다.
case : centos 5.5~6
1-1. 일단 centos의 ruby패키지 버젼이 낮으니 1.8.6까지 올려준다. (root 계정)
vi /etc/yum.repos.d/ruby.repo # i386 [ruby] name=ruby baseurl=http://repo.premiumhelp.eu/ruby/ gpgcheck=0 enabled=0 # x86_64 [ruby] name=ruby baseurl=http://centos.karan.org/el5/misc/testing/x86_64/RPMS/ gpgcheck=0 enabled=0 yum --enablerepo=ruby install ruby ruby-devel ruby-irb ruby-libs ruby-rdoc
1-2. ruby 1.8.7 를 직접 컴파일 하는 방법도 쓸만하다. (먼저 기존 ruby 패키지들은 지워준다.)
sudo yum install gcc zlib zlib-devel wget https://rubyforge.org/frs/download.php/74321/ruby-1.8.7-p334.tar.gz tar xvfz ruby-1.8.7-p334.tar.gz cd ruby-1.8.7-p334 ./configure --enable-pthread make sudo make install
직접 소스를 컴파일 할 경우 기본 ruby가 깔리는 경로는 /usr/local/ 이다. .installed.list 를 보면 깔려있는 파일의 전체를 볼수 있다.
2. ImageMagick 를 깔아주는데, centos 패키지버젼이 너무 낮으니 직접 깔아준다.
sudo yum install libjpeg-devel libpng-devel glib2-devel fontconfig-devel zlib-devel libwmf-devel freetype-devel libtiff-devel sudo yum install ghostscript-fonts #options wget ftp://ftp.kddlabs.co.jp/graphics/ImageMagick/ImageMagick-6.6.9-6.tar.gz tar xvfz ImageMagick-6.6.9-6.tar.gz cd ImageMagick-6.6.9-6 ./configure make sudo make install
3. rubygems 을 최신으로 깔아준다.
wget http://production.cf.rubygems.org/rubygems/rubygems-1.7.2.tgz tar xvfz rubygems-1.7.2.tgz cd rubygems-1.7.2 ruby setup.rb
4. rails를 깔아준다. 현재 trunk상의 버젼에서는 rails 2.3.11다. (참조 : http://www.redmine.org/wiki/redmine/RedmineInstall)
sudo gem install rails -v=2.3.11 sudo gem install -v=0.4.2 i18n sudo gem install -v=1.1.0 rack sudo gem install mysql passenger rmagick
5. redmine 설치 및 셋팅을 해야한다. (설치할 개인계정 test, 도메인 redmine.test.com, 경로 /home/test)
svn co http://redmine.rubyforge.org/svn/trunk redmine
mysql 계정을 만들어주고
create database redmine character set utf8; create user 'redmine'@'localhost' identified by 'my_password'; grant all privileges on redmine.* to 'redmine'@'localhost';
vi redmine/config/database.xml production: adapter: mysql database: redmine host: localhost username: redmine password: my_password
redmine 기본 DB/세션/데이타 셋팅을 한다.
rake generate_session_store RAILS_ENV=production rake db:migrate RAILS_ENV=production rake redmine:load_default_data
redmine 디렉토리 권한 셋팅을 한다.(passenger의 경우 셋팅할 필요없다.)
chmod -R 777 files log tmp public/plugin_assets
일단 WEBBrick으로 테스트를 먼저 해본다. 접근주소는 다음과 같다. http://localhost:3000/ (id/pw = admin)
ruby script/server webrick -e production
6. 추가 환경 셋팅을 한다.
– LOG
cp redmine/config/additional_environment.rb.example redmine/config/additional_environment.rb vi redmine/config/additional_environment.rb #Logger.new(PATH,NUM_FILES_TO_ROTATE,FILE_SIZE) config.logger = Logger.new(config.log_path, 2, 1000000) config.logger.level = Logger::INFO
– SMTP
cp redmine/config/configuration.yml.example redmine/config/configuration.yml vi redmine/config/configuration.yml default: email_delivery: delivery_method: :smtp smtp_settings: address: localhost port: 25 domain: redmine.test.com
7. apache + passenger
cp redmine/public/dispatch.cgi.example redmine/public/dispatch.cgi chmod 755 public/dispatch.cgi vi config/environment.rb ENV['RAILS_ENV'] ||= 'production' #uncomment (remove #)
sudo vi /etc/httpd/host.d/00_redmine.test.com.conf <VirtualHost *:80> ServerName redmine.test.com DocumentRoot /home/test/redmine/public/ ErrorLog logs/redmine.test.com-error_log CustomLog logs/redmine.test.com-access_log common env=!DoNotLog <Location "/home/test/redmine/public"> AllowOverride all Options -MultiViews </Location> # use 'autocreate svn repository' # <Location "/sys"> # Order deny,allow # Allow from ip.of.my.svn.server #change this # Deny from all # </Location> </VirtualHost>
apache와 rails를 연결할 passenger gem을 깔도록 한다.
sudo gem install passenger sudo passenger-install-apache2-module sudo vi /etc/httpd/conf.d/passenger.conf LoadModule passenger_module /usr/local/lib/ruby/gems/1.8/gems/passenger-x.x.xx/ext/apache2/mod_passenger.so PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-x.x.xx PassengerRuby /usr/local/bin/ruby
passenger-install-apache2-module를 깔때의 나오는 메세지대로 apache모듈을 설정해주면 된다. passenger가 업그레이드 되면 알맞게 그때그때마다 버젼을 수정해야 할듯 하다.
일단 여기까지는 웹서버에 올리는 것이 완료된다. 도메인상으로 확인하여 문제점을 찾아봐야 한다.
8. subversion 연결 및 인증 설정
yum install mod_dav_svn mod_perl perl-Digest-SHA1 perl-DBD-mysql perl-Apache-DBI
일단 http://redmine.test.com/svn 으로 접속하게 설정
sudo vi /etc/httpd/cond.f/00_redmine.test.com.conf <Location "/svn"> DAV svn SVNParentPath /home/test/svn SVNListParentPath on </Location>
일단 http://redmine.test.com/svn 으로 확인해본다. 그리고 subversion 인증을 이용하자.
현재 centos 5.4 패키지에서는 perl-Apache-DBI가 없으므로 직접 구해서 깐다.(있다면 다음으로 넘어가자)
wget http://packages.sw.be/perl-Apache-DBI/perl-Apache-DBI-1.08-1.el5.rf.noarch.rpm sudo rpm -Uvh perl-Apache-DBI-1.08-1.el5.rf.noarch.rpm sudo ln -s redmine/extra/svn/Redmine.pm /usr/lib/perl5/vendor_perl/5.8.8./Apache/
그리고 Location “/svn”을 수정한다.
sudo vi /etc/httpd/host.d/00_redmine.test.com.conf PerlLoadModule Apache::Redmine <Location "/svn"> DAV svn SVNParentPath /home/test/svn/ Order deny,allow Deny from all Satisfy any PerlAccessHandler Apache::Authn::Redmine::access_handler PerlAuthenHandler Apache::Authn::Redmine::authen_handler AuthType Basic AuthName 'Redmine subversion repository' #read-only access <Limit GET PROPFIND OPTIONS REPORT> Require valid-user Allow from ip.of.my.svn.server Satisfy any </Limit> # write access <LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user </LimitExcept> RedmineDSN "DBI:mysql:database=redmine;host=localhost" RedmineDbUser "redmine" RedmineDbPass "my_password" </Location>
일단 이렇게 설정하고 테스트 해보자. redmine계정상 권한에 따라 checkout은 가능하나 commit을 할경우 아이디/비번을 요구하게 된다. 일단 설정완료 되었다. 그런데 non-member, anonymous를 ‘저장소 보기’ 권한등을 빼도 repository를 보는게 가능한데 이게 맞는지는 좀 생각해봐야겠다.
9. create repository or autocreate 설정
mkdir svn
redmine에는 repository를 쉽게 생성해서 redmine에 등록할수 있는 명령어 extra/svn/reposman.rb가 있다. 프로젝트 생성후, 다음과 같은 명령어로 svn repository를 생성할수 있다. 도메인과 경로등에 주의하자. APIKEY는 redmine.test.com 사이트 들어가서 Administration → Settings → Repository 에서 Enable WS 하고 APIKEY를 만들어준자. 이렇게 해주면 알아서 svn폴더에 알아서 repository가 생긴다.
sudo redmine/extra/svn/reposman.rb --redmine redmine.test.com --svn-dir /home/test/svn -k APIKEY --owner test --url file:///home/test/svn --verbose sudo chgrp -R apache svn sudo chmod -R g+w svn
7번 웹 셋팅에서 Location “/sys” 부분의 주석을 빼고 위의 구문을 script로 구성해서 root cron으로 등록해두면 프로젝트에 맞게 자동으로 repository를 구성한다. repository 생성 빈도가 낮다면 굳히 cron에 등록할 필요는 없을듯 없다.
case : ubuntu
솔직히 제일 편한 방법은 다음과 같이 깔아주는 것이다.
sudo apt-get install redmine redmine-mysql
그렇지만, 일단 redmine 최신버젼을 사용할수가 없고, 어떻게 셋팅되었는지 모르겠다. 그래서 centos경우 처럼 깔기로 한다. (그리고 rubygems을 이용하면 ubuntu패키지 버젼보다 빠르기 때문에 유용하다. ruby rails의 경우에는 리눅스 배포본 패키지를 이용하는 것보다 rubygems등을 이용하는게 좋다.)
1. ruby 최신버젼을 인스톨한다.
sudo aptitude install ruby irb rdoc ri libopenssl-ruby ruby1.8-dev build-essential sudo apt-get install libmysqlclient-dev # for mysql gem
2. ImageMagick 최신버젼을 인스톨한다.
sudo apt-get install imagemagick libmagick9-dev
3. 4. 5. 6. centos 5.4 부분과 동일
gem을 못찾겠으면 다음과 같이 심볼릭 링크를 만들어준다.
ln -s /usr/bin/gem1.8 /usr/bin/gem
단 webrick 실행시 다음과 같이 warning이 나오면
/usr/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/rails/gem_dependency.rb:119:Warning: Gem::Dependency#version_requirements is deprecated and will be removed on or after August 2010. Use #requirement
다음을 119번째줄을 수정해준다.
vi /usr/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/rails/gem_dependency.rb r = version_requirements → r = super
7. apache + passenger
cp redmine/public/dispatch.cgi.example redmine/public/dispatch.cgi chmod 755 public/dispatch.cgi vi config/environment.rb ENV['RAILS_ENV'] ||= 'production' #uncomment (remove #)
sudo vi /etc/apache2/sites-available/test <VirtualHost *:80> ServerName redmine.test.com DocumentRoot /home/test/redmine/public/ ErrorLog logs/redmine.test.com-error_log CustomLog logs/redmine.test.com-access_log common env=!DoNotLog <Location "/home/test/redmine/public"> Options Indexes ExecCGI FollowSymLinks Order allow,deny Allow from all AllowOverride all </Location> # use 'autocreate svn repository' # <Location "/sys"> # Order deny,allow # Allow from ip.of.my.svn.server #change this # Deny from all # </Location> </VirtualHost> sudo a2ensite test
passenger를 깔도록 한다.
sudo apt-get install libcurl4-openssl-dev libssl-dev apache2-prefork-dev libapr1-dev libaprutil1-dev sudo gem install passenger sudo passenger-install-apache2-module sudo vi /etc/apache2/mods-available/passenger.load LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.15/ext/apache2/mod_passenger.so sudo vi /etc/apache2/mods-available/passenger.conf PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-3.0.0 PassengerRuby /usr/bin/ruby1.8 a2enmod passenger a2enmod rewrite
passenger-install-apache2-module를 깔때의 나오는 메세지대로 apache모듈을 설정해주면 된다. passenger가 업그레이드 되면 알맞게 그때그때마다 버젼을 수정해야 할듯 하다.
일단 여기까지는 웹서버에 올리는 것이 완료된다. 도메인상으로 확인하여 문제점을 찾아봐야 한다.
8. subversion 연결 및 인증 설정
sudo aptitude install libapache2-svn libapache-dbi-perl libapache2-mod-perl2 libdbd-mysql-perl libdigest-sha1-perl libapache2-mod-perl2
일단 http://redmine.test.com/svn 으로 접속하게 설정
sudo vi /etc/apache/sites-available/test <Location "/svn"> DAV svn SVNParentPath /home/test/svn SVNListParentPath on </Location>
일단 http://redmine.test.com/svn 으로 확인해본다. 그리고 subversion 인증을 셋팅 및 이용해보자.
참조 문서 : http://www.redmine.org/wiki/redmine/Repositories_access_control_with_apache_mod_dav_svn_and_mod_perl
sudo mkdir /usr/lib/perl5/Apache;mkdir /usr/lib/perl5/Apache/Authn; sudo ln -s redmine/extra/svn/Redmine.pm /usr/lib/perl5/Apache/Authn sudo vi /etc/apache2/sites-available/test PerlLoadModule Apache::Authn::Redmine <Location "/svn"> DAV svn SVNParentPath /home/test/svn/ Order deny,allow Deny from all Satisfy any PerlAccessHandler Apache::Authn::Redmine::access_handler PerlAuthenHandler Apache::Authn::Redmine::authen_handler AuthType Basic AuthName 'Redmine subversion repository' #read-only access <Limit GET PROPFIND OPTIONS REPORT> Require valid-user Allow from ip.of.my.svn.server Satisfy any </Limit> # write access <LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user </LimitExcept> RedmineDSN "DBI:mysql:database=redmine;host=localhost" RedmineDbUser "redmine" RedmineDbPass "my_password" </Location>
일단 이렇게 설정하고 테스트 해보자. redmine계정상 권한에 따라 checkout은 가능하나 commit을 할경우 아이디/비번을 요구하게 된다. 일단 설정완료 되었다. 그런데 non-member, anonymous를 ‘저장소 보기’ 권한등을 빼도 repository를 보는게 가능한데 이게 맞는지는 좀 생각해봐야겠다.
9. centos 부분이랑 같다.
단 프로젝트당 자동으로 svn이 생성되는 것이 좋지 않다면 다음의 스크립트로 필요한 프로젝트만 생성해서 들록해서 사용한다.
vi create_svn_repository.sh #!/bin/sh if [ -z $1 ]; then echo "Usage: $0 [project]" 1>&2 exit 1 fi PATH=/home/test/svn/$1 /usr/bin/svnadmin create $PATH /usr/bin/sudo chgrp -R www-data $PATH /usr/bin/sudo chmod -R g+w $PATH
이상과 같다. 유용한 플러그인으로는 코드의 highlight기능을 위한 Ultraviolet Syntax Highlighting Engine , 접근 통계를 위한 Google Analytics plugin 등이 유용하다.