Etc
5 Apr 2019

프로젝트 관리를 위한 레드마인 서버 구축 및 플러그인 설치

이 포스트는 프로젝트 관리와 이슈트래킹을 위한 오픈소스 툴인 Redmine 서버를 구축하기 위한 일련의 작업들에 대한 기록지가 될 것이다.

이 지식이 필요한 모든이에게 도움이 되었으면 좋겠다고 생각한다.
진부한 멘트라고요? ㅎㅎ;;

아무튼 시작해보자! 먼저, 레드마인이 무엇인지부터 알아보는 것부터!.

레드마인?

redmine-logo

  • 위키백과에 의하면..

    레드마인은 오픈 소스 프로그램으로 웹 기반프로젝트 관리 와 버그 추적 기능을 제공하는 도구이다.
    화면기반의 프로젝트 관리에 도움이 되도록 달력과 간트 차트를 제공하고 일정관리 기능을 제공한다.
    또한 레드마인은 통합된 프로젝트관리 기능과 이슈추적, 여러가지 형상 관리 기능을 제공한다.

프로젝트를 시작하면, 앞으로 내가 해야할 일, 앞으로 팀원들이 진행해야 할 일, 지금 껏 내가 해온 일의 기록, 지금껏 프로젝트 팀원들이 해온 일의 기록, 우리 프로젝트의 진척상황, 갑작스레 생긴 hotfix 이슈, 등등.. 후.. 모두 말할 수 없을 정도로 많은 관리가 필요한 장면들이 넘쳐난다.

레드마인은 이러한 협업상황에서의 이슈들에 대한 효과적인 해결책이 될 수 있다.

기능들이 IT 프로젝트에 매우 효율적으로 사용할 수 있지만, 기타 장르의 프로젝트 및 심지어는 학교 과제에 까지도 사용할 수 있다고 생각이 들 때도 있다.

유사한 프로그램으로 atlassian 사의 jira 를 꼽을 수 있는데, 직관적이고 예쁜 UI 와, 자사의 다른 프로그램들(Confluence, bamboo, trello, 등등)과의 연동성이 매우 좋으며, 다른 여러 프로그램과의 공식적인 플러그인을 사용할 수 있다는 점에서 매우 훌륭하다. 하지만 jira 는 상용화 프로그램으로 유료 프로그램이다. 프로젝트의 크기가 커질 수록 프로그램 사용에 대한 구독료가 증가한다.

서론은 여기까지로 하고, 이제 레드마인 서버를 어떻게 구축했는지에 대한 이야기를 해볼까 한다.

도커 🐳 컨테이너를 이용한 서버 구축

레드마인을 설치하기 위해서는 데이터베이스(mysql), 루비 온 레일즈(ruby on rails)와 그에 따르는 라이브러리 및 여러 requirements들, 아파치 웹서버(apache)등을 설치하고, 환경설정을 통해 서로 이어주어야 한다. bitnami 는 이러한 환경을 하나의 패키지로서 제공해준다. (감격! ㅜㅜ😄)

팀원들이 함꼐 사용할 수 있는 레드마인 서버를 운영하기 위해 우리는 기존에 사용하던 AWS EC2 인스턴스에 도커를 이용한 레드마인 서버 컨테이너를 올리기로 결정했다.

또한, 레드마인만을 위한 단일의 서버 컨테이너를 생성하기를 원했다. 여러 많은 이미지 중 우리는bitnami-docker-redmine 을 이용하여 우리가 원했던 요구사항을 만족할 수 있었다.
이 레파지토리와 제공하는 이미지는 bitnami-redmine 을 위한 CentOS 서버를 구축할 수 있도록 도와준다.

레드마인은 데이터베이스와 함께 실행 되어야 한다. 따라서 잠깐 도커 컴포즈에 대한 언급을 해야할 듯 싶다.

Docker Compose는 둘 이상의 컨테이너가 하나의 애플리케이션으로 구동되는 경우에 매우 효율적으로 사용될 수 있는 환경을 제공한다. 여러개의 컨테이너를 묶어 하나의 애플리케이션으로 다룰 수 있다. 컨테이너 개별을 단일 서비스로 정의하고, 여러 서비스의 묶음을 한번에 관리할 수 있도록 만들어 준다.

바로 적용하여, 아래의 docker-compose.yml 스크립트가 데이터베이스(mariadb)컨테이너와 redmine 컨테이너를 서비스로서 정의한 bitnami-redmine 환경을 쉽게 구축할 수 있도록 해 준다.

version: '2'

services:
  mariadb:
    image: 'bitnami/mariadb:latest'
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
    volumes:
      - 'mariadb_data:/bitnami'
  redmine:
    image: 'bitnami/redmine:latest'
    ports:
      - '80:3000'
    volumes:
      - 'redmine_data:/bitnami'
    depends_on:
      - mariadb
volumes:
  mariadb_data:
    driver: local
  redmine_data:
    driver: local

이 yml 스크립트를 docker-compose up -d 로 실행하게 되면 services에 명시된 image를 없다면 도커허브에서 pull 받아온다. 두 서비스가 모두 pull이 되면, 기존의 docker run 명령의 행위까지 실행되어 레드마인 서버가 구축되게 된다.

아래의 volumes 에 정의된 것은 컨테이너와 로컬 컴퓨터의 mount 폴더를 설정하는 것이다. 지금의 스크립트 그대로 사용한다면 var/lib/docker/volumes/root_redmine_redmine_data/_data/redmine 폴더에 마운트되어 있을 것이다. 이 폴더를 이용해 레드마인 컨테이너와 데이터를 공유할 수 있으므로, 향후 플러그인을 설치하는 과정에서도 이 폴더를 사용하게 될 것이다.

또한 docker-compose.yml 파일에 redmine 서비스에는 environment: 아래에 다음과 같은 변수를 설정할 수 있다

  • REDMINE_USERNAME: 관리자 이름. Default: user
  • REDMINE_PASSWORD: 관리자 비밀번호. Default: bitnami1
  • REDMINE_EMAIL: 관리자 이메일 주소. Default: user@example.com
  • REDMINE_LANG: 레드마인의 기본 언어. Default: en
  • REDMINE_DB_USERNAME: 데이터베이스의 root 유저이름. Default: root
  • REDMINE_DB_PASSWORD: root 유저의 비밀번호.
  • REDMINE_DB_MYSQL: MySQL server의 Hostname. Default: mariadb
  • REDMINE_DB_PORT_NUMBER: 데이터베이스 서버 포트번호. Default: 3306

bitnami-docker-redmine 에서 더욱 자세하고 명확히 설명해 주고 있으니 읽어보고 적용하기를 바란다.

레드마인의 감초! plugin 설치하기

레드마인을 더욱 멋지게, 더욱 효율적으로 사용하기 위해서는 테마와 플러그인을 설치하는 것이 좋을것이다. 플러그인은 여기에 무수히 많이 찾을 수 있고, 지속적으로 업데이트되고 있다.

플러그인을 설치하는 것은 plugin 폴더에 플러그인 폴더를 다운로드만 받아 넣은 뒤, gemfile이 있는 폴더에 가서
bundle install --no-deployment 을 수행한 이후
rake redmine:plugins:migrate RAILS_ENV=production 를 수행하고, 레드마인 컨테이너를 재시작하면 된다.

하지만 지금 우리의 컨테이너는 redmine을 위한 최소한의 운영파일만 들어있어, 곧바로 설치시 무수한 에러를 만나게 된다. 따라서, bundle install 명령을 실행하기 위한 c컴파일러, make 등을 설치하여야 한다.
이 과정은 길고 복잡한데다, 오류를 잡기위해 지속적으로 gem 을 설치하는 등의 일을 하여야 하는데, 이 모든 과정을 끝낸 이미지를 내 도커허브에 올려놓았다.
이 이미지를 사용하고자 한다면, docker-compose.yml 파일에서 redmine 이미지 이름을 hwasurr/redmine-onad 로 수정하면 된다. (참고로 이 이미지에는 애자일, 체크리스트, 여러 테마가 설치되어 있을 것이다.)

redmine:
    image: 'hwasurr/redmine-onad:190317'

이 이미지를 이용해 레드마인을 생성하였다면, local의 도커 볼륨 폴더의 레드마인 폴더의 plugins 폴더에 받은 플러그인(폴더 형태)을 붙여넣고, 레드마인 컨테이너를 재시작 하기만 하면 플러그인을 사용할 수 있다.

cd /path/to/redmine  # redmine 의 docker-compose.yml 이 있는경로
docker-compose restart

예뻐야 손이 간다! UI를 예쁘게.. (테마설정하기)

우리 팀원중에는 예쁜 UI가 아니면 사용하기 싫어하는 친구가 있다. 컴공과가 가지는 하나의 고집인건지..(이 친구는 lol 챔피언도 두가지밖에 안한다.)
아무튼, 레드마인은 직접 커스터마이징이 가능하고, 세계각지의 개발자들이 만들어 배포하는 theme 를 통해 UI 를 변경시킬 수 있다. 우리팀에서 사용하는 테마는 Purplemine 인데, 여러 테마를 적용시켜 본 결과 이것이 가장 마음에 들었기 때문이다.. 😍

테마별로 테마를 적용시키는 방법이 다를 수 있지만, 대부분의 경우 github repository 를 clone 한 다음, redmine 의 themes 폴더에 집어넣은 뒤, 레드마인 서버를 재시작하면된다.

레드마인 컨테이너의 themes 폴더는 /opt/bitnami/redmine/theme 폴더에 있다. 이 폴더에 접근하기 위해 우리는 레드마인 컨테이너의 배쉬쉘에 들어간다.

> docker exec -it your_redmine_container_name bin/bash

이후 위의 레드마인 폴더에 접근하여, git clone 명령을 통해 테마 폴더를 받을 수 있다.

> git clone https://github.com/mrliptontea/PurpleMine2.git

이후 레드마인 컨테이너에서 exit명령을 통해 접속 종료하고, docker-compose.yml 파일이 있는 폴더에 가서, 재시작해주면 테마를 지정할 수 있게 된다.

> cd /path/to/redmine  # redmine 의 docker-compose.yml 이 있는경로
> docker-compose restart

그래서, 설정은 어떻게 하는데?

지금껏, 플러그인을 다운받거나 테마를 다운받는것만 설명했지 어떻게 설정하는지는 말하지 않았다… ㅎㅎ..;;🙄
레드마인은 운영자로 접속했을 때 관리 탭에서 여러가지 기능을 키거나 끌 수 있고, 테마를 설정하거나, 언어를 설정하는 등의 여러 많은 환경설정을 건드릴 수 있다.
아무런 설정 없이 docker-compose 를 실행하였다면, 관리자계정은 user/bitnami1 이다.

관리자 계정으로 로그인 한 후, 관리 > 설정 > 표시방식에서 테마와 기본언어 등을 변경할 수 있다.
관리 > 플러그인 탭으로 들어가면 플러그인의 자세한 설정을 할 수 있다.
또한, 관리 탭에서 많은 것들을 만지고 사용하고자 하는 목적에 알맞게 레드마인의 기능을 수정할 수 있으므로 이를 적극 활용하는 것이 좋다.
생활코딩 페이지에서도 레드마인 설정에 대한 내용을 공유하며, 구글에 여러 형님들께서 좋은 자료들 많이 올려 두셨으니 그것을 보고 설정을 해 나가면 프로젝트를 효율적으로 다룰 수 있을 것이다.

슬랙과 연동하여 팀원 괴롭히기 관리하기!

먼저 슬랙과 연동을 지원해주는 플러그인을 위에서 설명했던 plugins 폴더에 git clone 받은 후 레드마인 컨테이너를 재시작한다.
이후 슬랙의 레드마인을 연동하고자 하는 채널에서 +Add an app or custom integration 링크를 클릭 한 후, Incoming Webhooks 를 추가한다. 여기서 Webhoos url 을 복사해 둔 후, 레드마인의 관리 > 플러그인 > redmine-slack 설정에 들어가 slack url 칸에 복사해 둔 url을 집어넣고, 슬랙 채널을 명시하면 된다.

TL;DR;

bitnami-redmine 이미지와 docker compose 를 통해 쉽게 레드마인 서버를 구축할 수 있다.

> curl -sSL https://raw.githubusercontent.com/bitnami/bitnami-docker-redmine/master/docker-compose.yml > docker-compose.yml
> docker-compose up -d

저자 : 강화수 (hwasurr)


Tags: