Redmine 3 설치
DB(MySQL) 생성
CREATE DATABASE redmine CHARACTER SET utf8;
CREATE USER 'redmine'@'%' IDENTIFIED BY '***';
GRANT ALL PRIVILEGES ON redmine. TO 'redmine'@'%';
가급적 DB 생성 시 character set 을 utf8 로 하세요. byte 크기 때문에 DB 초기화 때 오류가 발생할 수 있습니다.
redmine 소스 다운로드 및 압축 해제
4.x 은 지원되지 않는 플러그인이 많아서 3.x 로 설치하였습니다.
글을 작성하는 시점에 3.x 최신버전은 3.4.10입니다.
$ cd /data
$ sudo curl -O http://www.redmine.org/releases/redmine-3.4.10.tar.gz
다운로드 받은 소스를 압축 해제합니다.
$ sudo tar zxvf redmine-3.4.10.tar.gz
ruby 패키지 설치
CentOS 7 공식 저장소에서 기본 제공되는 ruby 는 2.0 버전입니다. redmine 의 많은 플러그인들이 2.4 이상을 요구하는 경우가 많아 기본 제공되는 ruby 2.0 을 사용하지 않고 2.4 을 이용하기 위해 SCL 저장소를 설치하여 2.4 버전을 설치합니다.
검색을 하면 rbenv, rvm 을 이용한 설치 방법이 많이 소개되어 있는데, 이 방법들은 소스를 내려받아 사용해야 하기 때문에 소스 컴파일 없이 패키지로만 설치하기 위해 SCL 을 이용하는 방식을 소개합니다.
먼저 SCL 저장소를 설치합니다.
$ sudo yum install centos-release-scl
이후 ruby 2.4 을 설치합니다.
$ sudo yum install rh-ruby24-ruby rh-ruby24-ruby-devel rh-ruby24-rubygem-bundler
설치 후 bash 에 ruby 환경 설정(임시) 후 ruby 버전을 확인해봅니다.
$ scl enable rh-ruby24 bash
$ ruby -v
부팅 시 자동으로 적용하기 위해 아래 명령 실행(EOF 까지 한 번에 입력)
$ sudo bash <<EOF
echo '#!/bin/bash
source /opt/rh/rh-ruby24/enable
export X_SCLS="scl enable rh-ruby24 'echo $X_SCLS'
"' > /etc/profile.d/rh-ruby24.sh
EOF
redmine 설치 도중 ruby 의 경로를 /usr/bin/ruby 에서 찾는 경우가 있습니다. 이를 해결하기 위해 해당 위치에 심볼릭 링크를 생성해줍니다. (위 스크립트가 이 작업으로 인해 필요없을 수도 있습니다)
$ sudo ln -s /opt/rh/rh-ruby24/root/usr/bin/ruby /usr/bin/ruby
$ sudo ln -s /opt/rh/rh-ruby24/root/usr/lib64/libruby.so.2.4 /usr/lib64/libruby.so.2.4
기타 프로그램 설치
git, subversion, ImageMagick(이미지 변환), MySQL devel(=MariaDB devel), 기타등등, 많은 프로그램들이 redmine 운영 시 필요합니다. 이 프로그램들을 한 번에 설치해줍니다.
$ sudo yum install git subversion ImageMagick mysql-devel ImageMagick-devel gcc-c++ libcurl-devel
redmine 설정에 DB 연결정보 추가
redmine 에서 사용할 DB 의 연결정보를 입력합니다.
$ sudo cp /data/redmine-3.4.10/config/database.yml.example /data/redmine-3.4.10/config/database.yml
$ sudo vi /data/redmine-3.4.10/config/database.yml
database.yml 파일의 production 항목에 DB 연결 정보를 기입합니다.
production:
adapter: mysql2
database: redmine
host: (database address/ip)
username: redmine
password: "****"
encoding: utf8
redmine 설치
redmine 은 ruby 의 bundler 을 이용해 프로그램에 필요한 라이브러리를 자동으로 내려받아 설치합니다. bundler 에 필요한 라이브러리를 다운로드 받고 세션 토큰을 생성해줍니다.
$ cd /data/redmine-3.4.10
$ bundle install --without development test
$ bundle exec rake generate_secret_token
redmine DB 구성
redmine 에서 이용할 DB 를 마이그레이션 합니다.
$ cd /data/redmine-3.4.10
$ RAILS_ENV=production bundle exec rake db:migrate
기본 데이터를 적재합니다.
$ cd /data/redmine-3.4.10
$ RAILS_ENV=production bundle exec rake redmine:load_default_data
적재 중 언어를 선택하라는 질의가 나올 경우 ko 를 입력하여 한국어를 기본언어로 지정할 수 있습니다. 물론 추후 설정에서 변경할 수 있습니다.
Web Server 설정
ruby 을 Web 으로 서비스하기 위해 nginx 와 passenger 가 필요합니다.
여기서 passenger 와 nginx 는 ruby gem 으로 설치하는 방법을 이용하겠습니다. 아마도 yum 으로 설치하려고 하면 기본 제공되는 ruby 2.0 와 연동하려고 할 것으로 예상됩니다.
먼저 passenger 을 설치합니다.
$ mkdir /opt/gem
$ chown centos:centos /opt/gem
$ gem install passenger -i /opt/gem
설치 후 passenger module 을 nginx 설치하고 설정에 passenger module 을 활성화해주는 스크립트를 삽입해주는 명령을 실행해야 합니다.
보통 일반계정일 경우 자신의 홈 디렉토리, root 일 경우 /usr/local/share/gems 이하에 존재할 것으로 예상됩니다.
$ sudo find / -name "passenger-install-nginx-module" -print
nginx 는 passenger 에서 제공하는 스크립트를 이용해서 설치합니다.
설치되는 위치는 기본값인 /opt/nginx 을 유지하도록 합니다.
$ sudo mkdir /opt/nginx; sudo chown centos:centos /opt/nginx
$ passenger-install-nginx-module
스크립트의 질문에 모두 기본값으로 대답하고 설치를 마무리합니다.
nginx 설정 변경
passenger 을 활성화하고 redmine 이 설치된 디렉토리를 nginx 에 설정합니다.
$ vi /opt/nginx/conf/nginx.conf
파일 내용 중 http 섹션에 자동 추가된 passenger_root, passenger_ruby 설정을 살펴봅니다.
두 값 아래에 include 을 아래와 같이 추가하여 추가 설정들을 따로 관리할 수 있게 합니다.
include host/*.conf;
이후 host/ 디렉토리를 생성하고 remine 을 위한 설정파일인 redmine.conf 파일을 생성합니다.
$ mkdir /opt/nginx/conf/host
$ vi redmine.conf
redmine.conf 파일에 아래 내용을 추가
server {
listen 80;
location / {
root /data/redmine-3.4.10/public;
passenger_enabled on;
}
client_max_body_size 10m; # Max attachemnt size
마지막으로 systemctl 에 nginx 등록합니다.
$ sudo vi /usr/lib/systemd/system/nginx.service
아래와 같이 내용 추가된
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/opt/nginx/logs/nginx.pid
ExecStartPre=/opt/nginx/sbin/nginx -t
ExecStart=/opt/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
파일을 추가한 이후 nginx 을 활성화하고 서버를 시작하면 설치가 마무리됩니다.
$ sudo systemctl daemon-reload
$ sudo systemctl enable nginx
$ sudo systemctl restart nginx