본문 바로가기

기술

Redmine 단독 서버 구축 (AWS EC2)

개요

이 문서에서는 Amazon AWS의 가상서버 EC2를 활용하여 Redmine 단독 서버를 구축하는 방법에 대해 설명합니다.

구축 환경

AWS EC2 instance, Docker, docker-compose

목차

1. AWS EC2 인스턴스 생성

2. Redmine (on docker) 설치

3. Redmine 메일 발송 설정

1. AWS EC2 인스턴스 생성

이 단원에서는 스크린샷 위주로 간단하게 설명하므로 AWS EC2에 대한 자세한 내용은 공식 문서를 참고하시기 바랍니다.

먼저 Amazon AWS에 가입된 계정으로 로그인합니다. (AWS 가입에는 결제 가능한 카드가 필요합니다.)

EC2 콘솔에서 [인스턴스 시작]으로 새 인스턴스를 생성
RHEL 계통인 "Amazon Linux 2 AMI"를 사용
t3.micro 인스턴스 선택 (프리티어를 사용할 경우 t2.micro도 무관)
네트워크와 서브넷은 기본으로 세팅된 VPC를 사용해도 무관

[퍼블릭 IP 자동 할당]을 "활성화"로 해주셔야 외부에서 접근 가능한 공인 IP를 할당받을 수 있습니다.

 

추가요금을 방지하기 위헤 [크레딧 사양]의 "무제한"을 해제

CPU 버스트에 대한 크레딧 설정은 추후에도 변경할 수 있으므로 여기서는 해제하겠습니다.

 

gp3 유형의 파일첨부를 고려하여 20GB 사용

인스턴스 종료 시 데이터를 보존하려면 "종료 시 삭제"를 체크 해제합니다.
다음으로 진행하며 [단계 5: 태그 추가]는 건너뛰고 그 다음으로 이동합니다.

 

새로운 보안그룹을 설정하여 외부 트래픽을 허용하여야 합니다.

제가 자주 하는 실수인데 default 정책을 적용하여 실행할 경우 외부에서 ssh 등의 접속이 불가합니다.
새로운 보안그룹을 생성하여 ssh 포트를 열거나 전체 포트를 열어주시기 바랍니다.

 

위 사양대로 인스턴스를 [시작하기] 클릭
ssh에 접속하기 위한 key pair가 필요합니다.

새로 생성하여도 무방하며 기존에 있는 경우에는 그대로 사용하실 수 있습니다.

 

생성된 인스턴스의 ID를 확인
인스턴스 목록에서 방금 생성한 항목을 클릭하고 상단에 [연결] 클릭
SSH 접속 명령을 확인할 수 있습니다.

SSH 접속 시 key pair 설정에서 생성하거나 다운로드 한 pem 파일이 필요합니다.

Secure Shell 접속 화면

접속에 성공하면 위와 같은 환영 메시지가 표시됩니다.

 

2. Redmine (on docker) 설치

레드마인 설치는 공식 사이트(https://www.redmine.org)에서 소스를 받아 Ruby, Rails 및 웹서버를 구축하여 설치하여야 합니다.

이 문서에서는 Docker를 활용하여 Redmine Image를 사용하는 방식으로 설치하도록 하겠습니다.

 

1. Amazon Linux에 Docker를 설치합니다. (자세한 내용은 공식 메뉴얼를 참고)

sudo yum update -y
sudo amazon-linux-extras install docker
sudo systemctl enable docker --now

 

2. docker를 편리하게 사용할 수 있는 툴인 docker-compose를 설치합니다.

sudo curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

 

3. 기본 위치에 redmine 디렉토리를 생성하고 docker-compose.yml 파일을 생성합니다.

cd ~
mkdir redmine
cd redmine
cat > docker-compose.yml # 입력 완료 후 Ctrl+D로 저장
version: '3.1'

services:

  redmine:
    image: redmine
    restart: always
    ports:
      - 80:3000
    volumes:
      - ./docker/redmine:/usr/src/redmine/files
      - ./docker/redmine_conf/configuration.yml:/usr/src/redmine/config/configuration.yml
      - ./docker/share:/share
      - /home/git:/git
      - /etc/localtime:/etc/localtime
    environment:
      REDMINE_DB_MYSQL: db
      REDMINE_DB_PASSWORD: dbpassword1234
      REDMINE_DB_ENCODING: utf8

  db:
    image: mysql:5.7
    restart: always
    volumes:
      - ./docker/db:/var/lib/mysql
      - ./docker/db_conf:/etc/mysql/conf.d
      - ./docker/share:/share
      - /etc/localtime:/etc/localtime
    environment:
      MYSQL_ROOT_PASSWORD: dbpassword1234
      MYSQL_DATABASE: redmine

db password는 외부로 오픈되지는 않지만 보안상의 이유로 변경하시는걸 추천합니다.

redmine은 혼자 사용한다면 sqlite로도 가능하지만 여러명에서 사용한다면 mysql같은 DBMS를 사용하셔야 합니다.

 

4. root 권한으로 redmine 디렉토리로 이동 후 docker를 실행합니다.

sudo su -
cd /home/ec2-user/redmine
docker-compose up -d

 

5. 웹브라우저를 열고 서버의 IP 혹은 도메인 주소 접속하여 레드마인이 열리는지 확인합니다.

기본으로 설정된 아이디와 비밀번호는 admin / admin 으로 로그인 하실 수 있습니다.

 

3. Redmine 메일 발송 설정

신규 issue나 기존 issue의 변경사항을 메일로 받는 건 issue tracker를 쓰는 주요 이유중 하나입니다.

기본 설치만으로는 메일이 발송되지 않으며 이 문서에서는 Gmail의 SMTP 서버를 이용하여 설정하도록 하겠습니다.

 

 

1. redmine 도커의 bash 쉘을 실행하여, 설정 예제파일을 공유폴더로 복사 합니다.

docker-compose exec redmine /bin/bash
cp config/configuration.yml.example /share/configuration.yml

 

2. 공유폴더의 설정파일을 실제 위치로 심볼릭 링크를 생성합니다.

ln -s /share/configuration.yml config/configuration.yml

 

3. docker 쉘을 종료하고 편집기를 이용해 configuration.yml 내용을 수정합니다.

exit
vi docker/share/configuration.yml

파일 내용 중 email_delivery: 다음 줄에 아래와 같이 추가합니다.

  delivery_method: :smtp
    smtp_settings:
      address: "smtp.gmail.com"
      port: 587
      enable_starttls_auto: true
      domain: "smtp.gmail.com"
      authentication: :plain
      user_name: "[구글 이메일]"
      password: "[구글 비밀번호]"

 

4. docker를 재시작합니다.

docker-compose restart

 

5. 레드마인에서 "사용자에게 계정정보 보내기" 등의 기능으로 메일을 발송하고 수신되는지 확인합니다.

로그인 후 상단 메뉴의 "관리" - "사용자" 에서 사용자를 클릭하면 해당 화면이 열립니다.

 

이메일 주소 입력 후 "사용자에게 계정정보를 보내기" 체크한 뒤에 저장해도 메일이 수신되지 않는다면

다음 명령으로 redmine 로그를 확인할 수 있습니다.

docker-compose logs redmine

 

구글 계정을 이메일 발송으로 사용할 경우 낮은 보안수준 설정 등이 필요합니다.

인증 오류가 발생한다면 아래 내용을 참고하여 진행합니다.

 

1) Login to your gmail account.

2) Go to https://www.google.com/settings/security/lesssecureapps and Turn On this feature.

3) Go to https://accounts.google.com/DisplayUnlockCaptcha and click Continue.

(by https://serverfault.com/questions/635139/how-to-fix-send-mail-authorization-failed-534-5-7-14)

 

Redmine 메일 정상 발송

 

AWS EC2 instance 위에 Redmine을 설치하고 메일 발송까지 성공적으로 완료하였습니다.

플러그인을 이용해 일감 템플릿이나 스킨, MS Teams Webhook 등을 이용하고 설정하는 방법 등은 추후 포스팅을 통해 다루도록 하겠습니다.

 

Redmine 사용법과 설치방법 등 같은 주제 내용만 연속으로 올렸는데요,

다음에는 완전 새로운 주제로 포스팅 하도록 하겠습니다. 감사합니다!