그동안 개인적으로 PC에 설치해서 사용하던 Redmine을 업그레이드를 해야할 상황이 발생했다.

(정기적으로 밀어줘야 하는 윈도우의 특성으로 인해 어쩔수 없이..)

 

구글링을 통해 몇몇 업그레이드 방법을 찾아서 따라해 보았으나 시원찮던 차에 결국 레퍼런스라 할수 있는 bitnami 가이드대로 성공.

 

1. mysql dump &  복구

2. 관련 첨부file 디렉토리 복사

3. 2.2에서 3.3으로 업그레이드됨에 따라 마이그레이션 수행 (이부분에서 다른 블로그 따라하니 오류)

 

자세한 방법은 다음 링크 참조

 

https://wiki.bitnami.com/Applications/BitNami_Redmine#How_to_upgrade_Redmine.3f


https://docs.bitnami.com/general/apps/redmine/administration/upgrade/

 

 요약 ( 아래는 리눅스 개념으로 설명하지만 Windows에서도 동일하게 적용됨 )


I. On the original Redmine server, follow the steps below:


 1. Create a database backup file named bitnami_redmine.sql:

$ mysqldump -u root -p --databases bitnami_redmine --add-drop-database > bitnami_redmine.sql

 2. Compress Redmine application and plugin files from the directory /opt/bitnami/apps/redmine/htdocs/files:

$ tar czf redmine_files.tar.gz -C /opt/bitnami/apps/redmine/htdocs/files .
$ tar czf redmine_plugins.tar.gz -C /opt/bitnami/apps/redmine/htdocs/plugins .

II. Launch a new Redmine server and follow the steps below:

 1. Stop Apache:

$ sudo /opt/bitnami/ctlscript.sh stop apache

 2. Upload the file redmine_files.tar.gz to the new server.

 3. Restore the database backup:

$ mysql -u root -p < bitnami_redmine.sql

 4. Copy the Redmine application files to /opt/bitnami/apps/redmine/htdocs/files, by copying redmine_files.tar.gz to the new instance and extract its contents:

$ sudo tar xzf redmine_files.tar.gz -C /opt/bitnami/apps/redmine/htdocs/files

5. Temporarily give full write permissions to the Redmine log file:  (Window의 경우 생략가능)

$ sudo chmod 666 /opt/bitnami/apps/redmine/htdocs/log/production.log

6. Migrate the database to the latest version:

$ cd /opt/bitnami/apps/redmine/htdocs/
$ sudo ruby bin/rake db:migrate RAILS_ENV=production


자세한 내용은 아래 링크 참조 

(본인은 Redmine2.x에서 3.3 업그레이드 성공함)

https://docs.bitnami.com/general/apps/redmine/administration/upgrade/ 






Nexus를 사용하기 위해 공유기에서 외부로 포트포워딩을 설정하여 사용해 왔습니다. 

그러다가 Redmine이 도입되고 각각의 포트포워딩보단 하나로 합쳐야할 필요가 생겼습니다.

Nexus를 설치하는 방법은 두가지입니다.

첫째는 jetty를 포함한 설치, 두번째는 war 형태의 프로젝트로 기존 설치된 was에 추가하는 방법.

저는 첫번째 jetty를 포함한 설치로 진행했습니다.


1. Redmine ==> /

2. SVN    ==> /svn

3. Nexus  ==> /nexus


설정 및 연동해야할 부분은 위와 같습니다.


이렇게 되면 공유기 포트포워딩은 하나만 설정해도 끝납니다.


1. Redmine설치 및 SVN 연동에 대한 부분은 이전 포스팅을 참고하면 됩니다.


==> http://gubok.tistory.com/351

 ==> http://gubok.tistory.com/352

 ==> http://gubok.tistory.com/370



2. Nexus 연동

우선 nexus설치는 특별한 이상이 없는한 한번에 설치가 끝나기 때문에 이에 대한 설명은 Pass~

apache-jetty 연동방법은 크게 세가지가 있습니다. (jetty wiki 사이트에 나왔있습니다.)


1. Using Apache mod_proxy and an normal Jetty HTTP connector. 

2. Using Apache mod_proxy_ajp and the Jetty AJP connector. 

3. Using Apache mod_jk and the Jetty AJP connector. 


이중에서 첫번째 proxy를 이용한 연동방법으로 설정하도록 하겠습니다. (권장이라고 하네요.)

아래 링크는 apache 사이트에서 제공하는 mod_proxy 설정방법입니다.
http://httpd.apache.org/docs/2.2/mod/mod_proxy.html



1번의 과정을 정상적으로 거쳤다면 연동에 필요한 xxx.so 파일은 모두 로딩되어 있다는 전제로 진행합니다.


Proxy설정을 별도의 파일로 저장해서 생성합니다.


ProxyPass /nexus http://127.0.0.1:8787/nexus

ProxyRequests On

ProxyVia On


<Proxy *>

 Order deny,allow

 Allow from all

</Proxy>


ProxyPreserveHost On

ProxyStatus On


httpd.conf 에 위의 설정파일을 include해줍니다.


# Proxy Setting for Jetty

Include conf/extra/httpd-proxy-jetty.conf



/nexus로 들어오는 요청을 :8787/nexus로 처리하겠다는 의미입니다.






계속 window에만 설치를 하다가 CentOS에 설치해봤습니다.

윈도우와는 또다른 문제가 발생했습니다. 특히 권한부분에서...

 

Linux 버전 2.2.2 다운로드 : http://bitnami.org/ko/stack/redmine 

다운받은 파일이 설치파일이고 Text 기반 wizard 형식이라 어렵지는 않습니다.

실행권한을 부여한 다음 실행한다.

 

 

1. 언어선택 : 영어나 한국어를 선택. Default 는 영어입니다.

2. phpMyAdmin 설치여부선택 : Y (혹시 dB를 들여다봐야 할지 몰라 선택했습니다.)

3. Redmine 여부 : Y 

4. 상단의 선택이 맞는지 확인질문

5. 설치 위치 지정(Default를 선택함)

6. Login User 생성 : (처음 레드마인 실행후 관리자로 실행할 사용자를 의미합니다.)

7. 메일주소 입력

8. 레드마인 Default 언어선택(생성한 User가 레드마인을 어떤언어로 사용할것인지 선택합니다. 나중에 레드마인 페이지에서 변경 가능합니다.)

9. 메일발송세팅

(Gmail을 선택하면 Gmail 인증 입력후 자동으로 해줍니다. 별도의 메일서버를 사용중이라면 Custom을 선택후 메일정보를 입력합니다. 나중에 레드마인 설정파일에서 변경가능합니다.)

10. 계속해서 설치하겠냐고 질문합니다. Y

11. 설치 진행바가 100% 될때까지 기다립니다.

(설치하는 PC/Server 사양에 따라서 차이가 발생할 것입니다. 가상서버에 설치하느라 꽤 걸렸습니다.)

 

---------------------------------------------

CentOS 5.x 라면 여기까시 설치후 바로 사용가능했겠으나 CentOS 6.x 부터 추가된 보안강화 때문에 몇가지 설정을 해야 합니다.

 

1. iptables 를 확인합니다.

꺼놓았다면 상관없겠으나 기본적으로 켜져있으므로 다음의 항목을 추가합니다.

 

vi /etc/sysconfig/iptables

 

-I INPUT -p tcp --dport 80 -j ACCEPT
-I INPUT -p tcp --dport 443 -j ACCEPT

 

아파치 Root 디렉토리를 변경할 경우 CentOS 6 에서 권한을 해제해 주어야 한다.

 

phpmyadmin 을 Y로 했다면 다음의 파일을 변경합니다.

리눅스에 설치할 경우 대부분 서버모드일 것이고 접속하는 PC는 다른 IP일 것이기 때문에 접속 가능 IP를 바꿔줍니다.

 

vi /opt/redmine-2.2.2-0/apps/phpmyadmin/conf/phpmyadmin.conf

<IfVersion < 2.3 >
Order allow,deny
Allow from 192.168.0.130   <== 접근하려는 IP를 입력합니다.
Satisfy all

 

여기까지 설정하고 http://server-ip/  로 접속하면 레드마인이 보여집니다.

http://server-ip/redmine 으로 접속하면 바로 레드마인 화면이 나옵니다.

 

다음으로  svn 을 설정합니다.

기본적으로 http로 svn을 사용하는것이 편하기에 아파치에 subversion 을 연동합니다.

 

httpd.conf 파일을 수정합니다.

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

 

...

 

# Virtual hosts
Include conf/extra/httpd-vhosts.conf 

 

httpd-vhosts.conf 파일을 수정합니다.

<VirtualHost *:80>
  <Location /svn>
    DAV svn
    SVNParentPath "/opt/redmine-2.2.2-0/apps/repos"

    AuthType Basic
    AuthName "SVN Repository"
    AuthUserFile "/opt/redmine-2.2.2-0/apps/repos/htpasswd"
    Require valid-user
  </Location>
</VirtualHost> 

 

htpasswd파일을 생성합니다.

/opt/redmine-2.2.2-0/apache2/bin/htpasswd -cm ./svn.htpasswd [svnuser] [svnpasswd]

 

이후 사용자 추가는 -b옵션 대신 -c 옵션을 사용합니다.

shell script 파일로 만들어 두면 나중에 새로운 사용자 추가시 편합니다.

 

 

이렇게 세팅후 아파치를 재시작하면 이상하게 Syntax error가 나옵니다.

httpd: Syntax error on line 113 of /opt/redmine-2.2.2-0/apache2/conf/httpd.conf: Cannot load /opt/redmine-2.2.2-0/apache2/modules/mod_dav_svn.so into server: /opt/redmine-2.2.2-0/apache2/modules/mod_dav_svn.so: undefined symbol: svn_relpath_join

 

본인의 경우는 기본적으로 제공되는 .so파일이 뭔가 문제가 있었는지(혹시 32bit/64bit 차이?) 제대로 작동을 하지 않아 다른곳에서 사용중인 .so파일을 가져다가 교체했습니다.

 

아래 64bit CentOS 테스트에서 정상 작동한  모듈파일입니다.   

 mod_authz_svn.so mod_dav_svn.so

 

혹시 권한관련 오류가 발생할 경우 아래의 명령어를 실행합니다.

 

chcon -R -t httpd_sys_content_t /opt/redmine-2.2.2-0/apps/repos

chcon -R -t httpd_sys_rw_content_t /opt/redmine-2.2.2-0/apps/repos

 

레드마인 전체를 재시작 합니다.

다음의 명령어를 사용하면 apache, subversion, mysql 전체를 재시작합니다.

/opt/redmine-2.2.2-0/ctlscript.sh [start/stop/restart]

 

저장소를 생성합니다.

cd  /opt/redmine-2.2.2-0/apps/repos

svnadmin create test

 

브라우저에서 생성된 위치를 확인합니다. http://server-ip/svn/test  를 입력할 경우 사용자 계정정보를 물어봅니다.

 

하위 폴더를 생성합니다.

export SVN_EDITOR='/bin/vi'

svn mkdir http://server-ip/svn/test/trunk

처음엔 root 의 비밀번호와 생성할 사용자의 계정정보를 물어봅니다. 이후부터는 root는 물어보지 않습니다.

 

vi editor가 실행되면

:q

취소(C) 합니다.

revision 정보가 나옵니다.

branches, tags 도 같은 방법으로 처리합니다.

 

혹시 Permission 관련 오류가 발생한다면

svn: Can't open file '/opt/redmine-2.2.2-0/apps/repos/spring/db/txn-current-lock': Permission denied

 

chmod -R 777 test 를 줍니다.

 

그런데 본인의 경우 위와같이 했음에도 불구하고 초기에 생성한 svn 계정으로 디렉토리가 생성되지 않는 문제가 발생했습니다.

그래서 새로운 사용자를 생성했더니 정상 작동합니다. 이유가 참...

 

Bitnami 로고페이지 변경하기

뭐 간단하지만 그래도 혹시나 해서 ....

 

첫페이지가 Bitnami 로고 및 설명페이지가 나옵니다. index.html 파일을 수정합니다.

 

vi /opt/redmine-2.2.2-0/apache2/htdocs/index.html

<meta http-equiv="refresh" content="0; url=/redmine">

이후부터는 접속하면 자연스럽게 초기페이지가 /redmine로 변경됩니다.

 

이방법 외에 다른 방법은 아직 찾지 못했습니다.  혹시 방법 아시는 분 알려주세요.

 

 

끝.

 

 

P.S. 이전 윈도우에서 사용하던 svn 저장소를 덤프받는 방법

 

svnadmin dump "d:\subversion\dev > d:\dev_dump.svn

 

특정 리비전을 받고자 한다면 -r 옵션을 사용합니다.

svnadmin dump "d:\subversion\dev -r 1:1000> d:\dev_dump.svn