Bitnami를 이용한 Redmine + Agile 설치 (on Ubuntu)

|

여분 PC가 생겨 어떻게 쓸까 고민하던중 사내에서 쓰는 Jira 대신 사이트 구축 나가서 쓸 IssueTracking 시스템을 설치해 연습삼아 써보기로 했습니다.
그래서 선택한건 OpenSource중 가장 유명한 Redmine.
하지만 설치하다가 지옥을 맛보기로도 유명하더군요 ㅠㅠ
2~3시간 삽질하다가 Bitnami를 통해 쉽게 설치 가능함을 발견하고 10여분 만에 설치를 완료했습니다.

Bitnami

Bitnami 바로가기

기존에 복잡하게 설치해야만 했던 환경을 단번에 구성해 줍니다. 심지어 각 OS별로 설치 할 수 있도록 제공 할 뿐만 아니라, Docker Container 및 Bitnami에서 제공하는 cloud환경에서 사용할 수도 있는것 같습니다.
Applications메뉴를 눌러보면 다양한 설치할 수 있는 다양한 항목이 표시됩니다.

Bitnami Applications Page

그 중에 설치할 항목인 “Redmine + Agile” 선택.

Redmine Install

설치할 파일을 다운로드하고 실행권한을 준 후 바로 실행하면 설치가 진행됩니다.

Redmine 설치파일의 경우 비로그인 상태에서도 다운을 받을수 있어 wget명령어를 통해 바로 다운로드가 가능하나 Redmine+Agile 설치파일의 경우에는 반드시 로그인이 필요하여 파일을 다운받아 옮기도록 해야합니다.

$ sudo chmod 775 ./redmineplusagile-3.3.1-1-linux-x64-installer.run
$ sudo ./redmineplusagile-3.3.1-1-linux-x64-installer.run

Windows Installer처럼 쉽게 선택만 하면 설치과정이 끝납니다.

Please select the installation language
[1] English - English
[2] Spanish - Español
[3] Japanese - 日本語
[4] Korean - 한국어
[5] Simplified Chinese - 简体中文
[6] Hebrew - עברית
[7] German - Deutsch
[8] Romanian - Română
[9] Russian - Русский
Please choose an option [1] : 4

설치를 진행할 언어를 선택합니다.

----------------------------------------------------------------------------
Redmine+Agile 설치 마법사를 시작합니다.

----------------------------------------------------------------------------
설치할 구성 요소를 선택하십시오. 설치하지 않을 구성 요소는 선택을 취소하십시오. 계속할 준비가 되면클릭하십시오.

Subversion [Y/n] :y

PhpMyAdmin [Y/n] :n

Redmine : Y (Cannot be edited)

Agile plugin : Y (Cannot be edited)

Git [Y/n] :y

위의 선택이 정확합니까? [Y/n]: y

같이 설치될 Plugin을 선택합니다.
SVN, GIT을 같이 설치할 수 있어서 SCM연동을 별도로 해야하는 수고를 덜어주는군요

----------------------------------------------------------------------------
설치 경로

Redmine+Agile의 설치 경로를 선택하세요.

폴더 선택 [/opt/redmineplusagile-3.3.1-1]:

----------------------------------------------------------------------------
Admin 계정 생성

Redmine+Agile 관리자 계정을 생성합니다.

이름 [User Name]: jistol

이메일 주소 [user@example.com]: kimjh@spectra.co.kr

로그인 계정명 [user]: kimjh

패스워드 :
패스워드를 재입력 :
----------------------------------------------------------------------------
웹 서버 포트 번호

Choose a port that is not currently in use, such as port 81.

Apache 서버 포트 번호 [81]: 8080

----------------------------------------------------------------------------
MySQL 정보

MySQL 데이터베이스 정보를 입력하세요.

Choose a port that is not currently in use, such as port 3307.

MySQL 서버 포트 번호 [3307]:

웹 서버가 기존 Apache에서 80을 쓰고 있어 8080으로 설정했습니다

----------------------------------------------------------------------------
기본 데이터 설정에 사용할 언어

기본 데이터 설정 시 사용할 언어를 선택하세요.

[1] Bosnian
[2] 불가리아어
[3] Catalan
[4] 체코어
[5] Danish
[6] 독일어
[7] 영어
[8] 스페인어
[9] 프랑스어
[10] Galician
[11] 히브리어
[12] Hungarian
[13] 이탈리아어
[14] 일본어
[15] 한국어
[16] Lithuanian
[17] 네덜란드어
[18] Norwegian
[19] 폴란드어
[20] 포르투갈어
[21] 루마니아어
[22] 러시아어
[23] Slovak
[24] Slovenian
[25] 세르비아어
[26] 스웨덴어
[27] Turkish
[28] Ukrainian
[29] Vietnamese
[30] 중국어
옵션을 선택하십시오. [15] : 15

사용하시겠습니까? [y/N]: n

Redmine 기본 언어를 선택합니다.

언어 선택후 “사용하시겠습니까?”라는 질문이 나오는데 국문 설치시 당할수 있는 함정입니다. 저 선택은 언어를 선택하겠냐는 얘기가 아니라 SMTP메일 서버를 설정하여 메일을 발송 하겠냐는 얘기인데 국문 설치엔 앞뒤 다 짜르고 저렇게 나오네요.(영문에서는 설명이 잘 나옵니다.)

----------------------------------------------------------------------------
이제 컴퓨터에 Redmine+Agile을(를) 설치할 준비가 되었습니다.

계속하시겠습니까? [Y/n]: y

----------------------------------------------------------------------------
컴퓨터에 Redmine+Agile을(를) 설치하는 동안 기다려 주십시오.

 설치
 0% ______________ 50% ______________ 100%
 ########################################

 ----------------------------------------------------------------------------
 컴퓨터에 Redmine+Agile 설치를 완료했습니다.

 Redmine 어플리케이션 구동 [Y/n]: Y

 정보: To access the Redmine+Agile, go to
 http://127.0.0.1:8080 from your browser.
 계속하려면 [Enter] 키 누르기:

모든 설치가 끝나면 Redmine을 구동해주고 웹페이지에 접속하여 확인할 수 있습니다.

설치완료 화면

관리화면에 가면 위와 같이 Agile Plugin이 추가되어 있는것을 확인할 수 있습니다.
설치된 Agile버전은 무료버전인 Light버전으로 자세한 사항은 아래 링크에서 확인 가능합니다.

Redmineup - Agile 바로가기

Redmine Uninstall 하기

설치된 폴더에 가보면 uninstall 파일이 존재합니다. 해당 파일 실행하면 Uninstall됩니다.

kimjh@kimjh:/opt/redmineplusagile-3.3.1-1$ ls
README.txt     ctlscript.sh           perl            sqlite
apache2        git                    php             subversion
apps           img                    postgresql      uninstall
changelog.txt  licenses               properties.ini  uninstall.dat
common         manager-linux-x64.run  ruby            use_redmineplusagile
config         mysql                  scripts

GitHub Page 개발환경 구축하기

|

에버노트가 계정당 접속 제한을 두면서 너무 불편해저서 이 기회에 탈 에버노트겸 개발 관련 내용을 정리할 블로그를 찾던 중 GitHub Page에 대해 알게 되었고 이를 쓰기 위한 기본 환경 구축한 방법을 정리합니다.

구성

  • Windows 10 Home
  • Docker toolbox
    • Ubuntu
    • Jekyll
  • Dropbox
  • Editor : Atom

집 PC에 Linux를 설치 할 순 없고 Docker Windows용은 Windows 10 (Professional / Enterprise 64-bit) 부터 지원하기 때문에 하위 버전에서 사용 가능한 Docker-toolbox를 설치하고 Ubuntu를 띄워 Jekyll을 돌리기로 했습니다.
블로그 소스는 Git으로 관리하면 되긴하지만 혹시나 다른 곳에서 안올리고 이동했을때 편하게 쓰려고 저장소를 Dropbox에 위치 시켰습니다. 그리고 Markdown 안드로이드 앱이 Dropbox 저장소 연동을 지원하기 때문에 PC없이 모바일에서 작성하고 서버에 올릴 수 있는 장점도 있습니다.

설치

Dropbox 설치

Dropbox 바로가기

Docker와의 공유설정을 쉽게 하려면 사용자 기본폴더 (“C:\User”)하위에 공유폴더를 위치 시키면 좋습니다.

Docker toolbox 설치

Docker toolbox 바로가기

설치 후 공유폴더 설정을 진행합니다.

docker-toolbox는 Oracle Virtual Box를 이용하기 때문에 공유폴더를 따로 설정해 두어야 Docker내/외부에서 파일 공유가 가능합니다.

toolbox 설치시 “default” 이미지가 생성되며 VM관리자 화면에 접속하여 다음과 같이 공유폴더를 설정합니다.

VM관리자 설정-공유폴더

docker-machine 명령어를 통해 접속하여 해당 공유폴더를 mount합니다.

$ docker-machine ssh default
$ cd /var/lib/boot2docker/
$ sudo vi bootlocal.sh

#!/bin/sh
mkdir /dropbox
chmod 777 /dropbox
mount -t vboxsf dropbox /dropbox
  • bootlocal.sh파일을 만들어 설정하면 machine 재시작시에도 공유폴더 설정이 날아가지 않습니다.
  • 공유할 파일에 권한을 주지 않을 경우 Protocol Error를 반환합니다.
  • mount시 VM설정에서 설정한 공유폴더명을 그대로 써야 합니다.

Ubuntu Image 다운로드

docker-toolbox를 실행하고 아래 명령어를 통해 다운로드할 docker image를 찾습니다.

$ docker search ubuntu
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
ubuntu                            Ubuntu is a Debian-based Linux operating s...   5289      [OK]
ubuntu-upstart                    Upstart is an event-based replacement for ...   69        [OK]
rastasheep/ubuntu-sshd            Dockerized SSH service, built on top of of...   61                   [OK]
consol/ubuntu-xfce-vnc            Ubuntu container with "headless" VNC sessi...   34                   [OK]

여러가지 ubuntu버전을 찾을수 있는데 가장 기본 버전을 다운 받아 설치하도록 합니다.

$ docker pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu
b3e1c725a85f: Pull complete
4daad8bdde31: Pull complete
63fe8c0068a8: Pull complete
4a70713c436f: Pull complete
bd842a2105a8: Pull complete
Digest: sha256:7a64bc9c8843b0a8c8b8a7e4715b7615e4e1b0d8ca3c7e7a76ec8250899c397a
Status: Downloaded newer image for ubuntu:latest    

docker pull <이미지명>:<태그> 태그 미포함시 가장 최신버전을 다운받습니다.(latest)

Docker Container 생성

다운 받은 이미지를 통해 실제 구동할 Docker Container를 생성합니다.
생성 시 아래와 같은 설정을 추가합니다.

  • jekyll을 통해 외부에서 웹페이지에 접근할 수 있어야 하므로 4000포트를 열어줍니다.
  • dropbox를 통해 파일을 업로드 할 수 있도록 공유폴더를 선택합니다.

위 조건에 맞게 docker container를 생성하기 위해 아래와 같이 명령어를 실행합니다.

$ docker run -i -t -v /dropbox:/opt/dropbox -p 4000:4000 --name jekyll ubuntu /bin/bash  
root@6ef6ea062b7a:/#
  • Docker Container의 4000번 포트를 외부 환경으로 연결하기 위해 -p 옵션으로 설정합니다.
  • “VM - Docker”간 연결한 공유폴더(/dropbox)를 -v 옵션을 통해 Container에 연결해줍니다.

-i, –interactive=false: 표준 입력(stdin)을 활성화하며 컨테이너와 연결(attach)되어 있지 않더라도 표준 입력을 유지합니다. 보통 이 옵션을 사용하여 Bash에 명령을 입력합니다.
-t, –tty=false: TTY 모드(pseudo-TTY)를 사용합니다. Bash를 사용하려면 이 옵션을 설정해야 합니다. 이 옵션을 설정하지 않으면 명령을 입력할 수는 있지만 셸이 표시되지 않습니다.
-p, –publish=[]: 호스트에 연결된 컨테이너의 특정 포트를 외부에 노출합니다. 보통 웹 서버의 포트를 노출할 때 주로 사용합니다.
-v 외부와 공유할 포트를 설정 합니다.

Ubuntu 기본설정

  1. jekyll을 운용할 계정을 추가합니다.

     $ adduser [userid]
    
  2. 기본적으로 사용할 패키지들을 추가합니다.

     $ apt-get update
     $ apt-get install net-tools sudo vim bzip2
    
  3. sudo 사용을 위해 아래와 같이 설정합니다.

     chmod +w /etc/sudoers
     vi /etc/sudoers
    
     => userid          ALL=(ALL)          NOPASSWD:ALL
    
     chmod -w /etc/sudoers
    

Ruby 설치

jekyll은 ruby로 작성된 프로그램입니다. jekyll을 띄우기 위해서는 ruby를 설치해야하는데 이 부분에서 가장 많이 헤맸네요.
애초에 ruby설치법을 찾았으면 덜 헤맸을 것을 jekyll 설치 메뉴얼에 적힌 ruby설치법을 따라갔더니 계속 무언가 문제가 생겼었습니다.
각 OS별 정확한 ruby 설치 방법은 GoRails에 친절하게 설명되어 있으니 참고 하시기 바랍니다.

Go Rails 바로가기
Go Rails Setup Page

설치방법들중 권장 방법인 rbenv를 이용하여 설치하였습니다.

$ su userid
$ sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties libffi-dev nodejs
$ cd
$ git clone git://github.com/sstephenson/rbenv.git .rbenv
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(rbenv init -)"' >> ~/.bashrc  
$ git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
$ echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc
$ exec $SHELL

$ rbenv install 2.3.3
$ rbenv global 2.3.3
$ ruby -v

bundler, jekyll 설치

$ gem install bundler
$ gem install jekyll

jekyll 예제 서버 생성

$ cd /opt/dropbox
$ jekyll new myblog  
$ cd myblog
$ ifconfig  // local ip 확인
$ jekyll serve -H [local-IP]
  • jekyll 구동시 -H 으로 local IP를 지정하지 않을 경우 127.0.0.1로 구동하면서 외부 웹페이지에서 접근할 수 없습니다.
  • 외부 연결 포트를 다르게 지정했을 경우 -P 옵션으로 변경 가능합니다.

PC 웹페이지에서 서버 동작 확인

CMD창을 열고 docker-machine이 떠 있는 IP를 확인합니다.

$ docker-machine ls
NAME      ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER    ERRORS
default   -        virtualbox   Running   tcp://192.168.99.100:2376           v1.12.5

확인된 IP로 접속하면 아래와 같이 정상적으로 서버가 구동하고 있는것을 확인 할 수 있습니다.
Jekyll Server 구동화면