Redmine

[Redmine] Linux 에 Redmine 설치 하기

다크엔지니어 2021. 5. 15. 15:06
반응형

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

레드마인의 디자인은 비슷한 기능을 가지는 오픈 소스 프로그램인 Trac에 영향을 많이 받았으며 루비 온 레일즈에 기반하여 작성되었고 멀티 플랫폼을 지원하며 여러가지 종류의 데이터베이스 및 34개의 언어를 지원한다.

 

먼저 Ubuntu 20.04 LTS 버전에서 진행을 해 볼 것이다.

 

mariadb를 사용할 경우

udo apt-get install mariadb-server

진행이 정상적으로 진행이 잘 안된다면 아래 명령어를 통해 update 를 진행해봐도 좋다.

sudo apt-get update

 

 

 

apache 버전 확인

 

redmine 설치

sudo apt-get install redmine redmine-mysql

 

 

gem 업데이트, bundler 설치

gem -v
sudo gem update

/var/lib/gems 하위 디렉터리에 접근하기 위해서는

파일 permission 을 chmod 로 수정하거나, sudo 로 명령어를 지시하는 것이다.

sudo gem install bundler

 

apache 설정

sudo vi /etc/apache2/mods-available/passenger.conf

<IfModule mod_passenger.c>
  PassengerRoot /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini
  PassengerDefaultRuby /usr/bin/ruby
  PassengerDefaultUser www-data
  PassengerRuby /usr/bin/ruby
</IfModule>

 

레드마인 웹 인터페이스를 아파치에 연결한다.

그리고 apache 의 000-default.conf 를 수정한다.

sudo ln -s /usr/share/redmine/public /var/www/html/redmine
sudo ll /var/www/html/redmine

sudo vi /etc/apache2/sites-available/000-default.conf

<Directory /var/www/html/redmine>
    RailsBaseURI /redmine
    PassengerResolveSymlinksInDocumentRoot on
</Directory>

 

 

이제 apache 의 www-data 사용자가 엑세스 할 수 있도록 Gemfile.lock 을 생성하고 권한을 부여한다.

touch /usr/share/redmine/Gemfile.lock
sudo chown -R www-data:www-data /usr/share/redmine/
sudo chmod -R 755 /usr/share/redmine/

구성한 설정을 통해 apache 를 재시작 한다.

sudo service apache2 restart

아파치 재시작 과정에서 error 가 발생한다면

systemctl status apache2.service
sudo journalctl -xe

 

Port 변경

sudo vi /etc/apache2/ports.conf

Listen xxxx

 

 

Ruby gem bundler 버전 확인

 

Redmine

 

 

아래 스크립트를 통해 플러그인 및 여러 설정들이 가능하다.

Gamfile

source 'https://rubygems.org'

gem "bundler", ">= 1.5.0"

gem "rails", "5.2.4.1"
gem "rouge", "~> 3.12.0"
gem "request_store", "~> 1.4.1"
gem "mini_mime", "~> 1.0.1"
gem "actionpack-xml_parser"
gem "roadie-rails", (RUBY_VERSION < "2.5" ? "~> 1.3.0" : "~> 2.1.0")
gem "mimemagic"
gem "mail", "~> 2.7.1"
gem "csv", "~> 3.1.1"
gem "nokogiri", "~> 1.10.0"
gem "i18n", "~> 1.6.0"
gem "rbpdf", "~> 1.20.0"

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin]

# Optional gem for LDAP authentication
group :ldap do
  gem "net-ldap", "~> 0.16.0"
end

# Optional gem for OpenID authentication
group :openid do
  gem "ruby-openid", "~> 2.9.2", :require => "openid"
  gem "rack-openid"
end

# Optional gem for exporting the gantt to a PNG file
group :minimagick do
  gem "mini_magick", "~> 4.9.5"
end

# Optional Markdown support, not for JRuby
group :markdown do
  gem "redcarpet", "~> 3.5.0"
end

# Include database gems for the adapters found in the database
# configuration file
require 'erb'
require 'yaml'
database_file = File.join(File.dirname(__FILE__), "config/database.yml")
if File.exist?(database_file)
  database_config = YAML::load(ERB.new(IO.read(database_file)).result)
  adapters = database_config.values.map {|c| c['adapter']}.compact.uniq
  if adapters.any?
    adapters.each do |adapter|
      case adapter
      when 'mysql2'
        gem "mysql2", "~> 0.5.0", :platforms => [:mri, :mingw]
      when /postgresql/
        gem "pg", "~> 1.1.4", :platforms => [:mri, :mingw]
      when /sqlite3/
        gem "sqlite3", "~> 1.4.0", :platforms => [:mri, :mingw]
      when /sqlserver/
        gem "tiny_tds", "~> 1.0.5", :platforms => [:mri, :mingw]
        gem "activerecord-sqlserver-adapter", :platforms => [:mri, :mingw]
      else
        warn("Unknown database adapter `#{adapter}` found in config/database.yml, use Gemfile.local to load your own database gems")
      end
    end
  else
    warn("No adapter found in config/database.yml, please configure it first")
  end
else
  warn("Please configure your config/database.yml first")
end

group :development do
  gem "yard"
end

group :test do
  gem "rails-dom-testing"
  gem 'mocha', '>= 1.4.0'
  gem "simplecov", "~> 0.17.0", :require => false
  gem "ffi", platforms: [:mingw, :mswin]
  # For running system tests
  gem 'puma', '~> 3.7'
  gem "capybara", (RUBY_VERSION < "2.4" ? "~> 3.15.1" : "~> 3.25.0")
  gem "selenium-webdriver"
  # RuboCop
  gem 'rubocop', '~> 0.76.0'
  gem 'rubocop-performance', '~> 1.5.0'
  gem 'rubocop-rails', '~> 2.3.0'
end

local_gemfile = File.join(File.dirname(__FILE__), "Gemfile.local")
if File.exists?(local_gemfile)
  eval_gemfile local_gemfile
end

# Load plugins' Gemfiles
Dir.glob File.expand_path("../plugins/*/{Gemfile,PluginGemfile}", __FILE__) do |file|
  eval_gemfile file
end
dohyeon@ftrd:/disk1/redmine$ cat Gemfile
Gemfile       Gemfile.lock
dohyeon@ftrd:/disk1/redmine$ cat Gemfile
Gemfile       Gemfile.lock
dohyeon@ftrd:/disk1/redmine$ cat Gemfile
Gemfile       Gemfile.lock
GIT
  remote: https://github.com/a-ono/rich.git
  revision: f5b5b07f10af3e5a8947f87a94ddc350dffb38bd
  tag: 1.5.2
  specs:
    rich (1.4.8)
      jquery-rails
      kaminari
      mime-types
      rack-raw-upload
      rails (>= 3.2.0)

GEM
  remote: https://rubygems.org/
  specs:
    actioncable (5.2.4.1)
      actionpack (= 5.2.4.1)
      nio4r (~> 2.0)
      websocket-driver (>= 0.6.1)
    actionmailer (5.2.4.1)
      actionpack (= 5.2.4.1)
      actionview (= 5.2.4.1)
      activejob (= 5.2.4.1)
      mail (~> 2.5, >= 2.5.4)
      rails-dom-testing (~> 2.0)
    actionpack (5.2.4.1)
      actionview (= 5.2.4.1)
      activesupport (= 5.2.4.1)
      rack (~> 2.0, >= 2.0.8)
      rack-test (>= 0.6.3)
      rails-dom-testing (~> 2.0)
      rails-html-sanitizer (~> 1.0, >= 1.0.2)
    actionpack-xml_parser (2.0.1)
      actionpack (>= 5.0)
      railties (>= 5.0)
    actionview (5.2.4.1)
      activesupport (= 5.2.4.1)
      builder (~> 3.1)
      erubi (~> 1.4)
      rails-dom-testing (~> 2.0)
      rails-html-sanitizer (~> 1.0, >= 1.0.3)
    activejob (5.2.4.1)
      activesupport (= 5.2.4.1)
      globalid (>= 0.3.6)
    activemodel (5.2.4.1)
      activesupport (= 5.2.4.1)
    activerecord (5.2.4.1)
      activemodel (= 5.2.4.1)
      activesupport (= 5.2.4.1)
      arel (>= 9.0)
    activestorage (5.2.4.1)
      actionpack (= 5.2.4.1)
      activerecord (= 5.2.4.1)
      marcel (~> 0.3.1)
    activesupport (5.2.4.1)
      concurrent-ruby (~> 1.0, >= 1.0.2)
      i18n (>= 0.7, < 2)
      minitest (~> 5.1)
      tzinfo (~> 1.1)
    addressable (2.7.0)
      public_suffix (>= 2.0.2, < 5.0)
    arel (9.0.0)
    ast (2.4.0)
    builder (3.2.4)
    capybara (3.25.0)
      addressable
      mini_mime (>= 0.1.3)
      nokogiri (~> 1.8)
      rack (>= 1.6.0)
      rack-test (>= 0.6.3)
      regexp_parser (~> 1.5)
      xpath (~> 3.2)
    childprocess (3.0.0)
    climate_control (0.2.0)
    concurrent-ruby (1.1.6)
    crass (1.0.6)
    css_parser (1.7.1)
      addressable
    csv (3.1.2)
    database_cleaner (1.8.5)
    diff-lcs (1.4.4)
    docile (1.3.2)
    erubi (1.9.0)
    erubis (2.7.0)
    globalid (0.4.2)
      activesupport (>= 4.2.0)
    haml (5.1.2)
      temple (>= 0.8.0)
      tilt
    haml-rails (2.0.1)
      actionpack (>= 5.1)
      activesupport (>= 5.1)
      haml (>= 4.0.6, < 6.0)
      html2haml (>= 1.0.1)
      railties (>= 5.1)
    html2haml (2.2.0)
      erubis (~> 2.7.0)
      haml (>= 4.0, < 6)
      nokogiri (>= 1.6.0)
      ruby_parser (~> 3.5)
    htmlentities (4.3.4)
    httpclient (2.8.3)
    i18n (1.6.0)
      concurrent-ruby (~> 1.0)
    jaro_winkler (1.5.4)
    jquery-rails (4.3.5)
      rails-dom-testing (>= 1, < 3)
      railties (>= 4.2.0)
      thor (>= 0.14, < 2.0)
    json (2.3.0)
    kaminari (1.2.0)
      activesupport (>= 4.1.0)
      kaminari-actionview (= 1.2.0)
      kaminari-activerecord (= 1.2.0)
      kaminari-core (= 1.2.0)
    kaminari-actionview (1.2.0)
      actionview
      kaminari-core (= 1.2.0)
    kaminari-activerecord (1.2.0)
      activerecord
      kaminari-core (= 1.2.0)
    kaminari-core (1.2.0)
    liquid (2.6.3)
    loofah (2.4.0)
      crass (~> 1.0.2)
      nokogiri (>= 1.5.9)
    mail (2.7.1)
      mini_mime (>= 0.1.1)
    marcel (0.3.3)
      mimemagic (~> 0.3.2)
    method_source (0.9.2)
    mime-types (3.3.1)
      mime-types-data (~> 3.2015)
    mime-types-data (3.2019.1009)
    mimemagic (0.3.4)
    mini_magick (4.9.5)
    mini_mime (1.0.2)
    mini_portile2 (2.4.0)
    minitest (5.14.0)
    mocha (1.11.2)
    multi_json (1.14.1)
    mysql2 (0.5.3)
    net-ldap (0.16.2)
    nio4r (2.5.2)
    nokogiri (1.10.8)
      mini_portile2 (~> 2.4.0)
    pandoc-ruby (2.0.2)
    paperclip (6.1.0)
      activemodel (>= 4.2.0)
      activesupport (>= 4.2.0)
      mime-types
      mimemagic (~> 0.3.0)
      terrapin (~> 0.6.0)
    parallel (1.19.1)
    parser (2.7.0.3)
      ast (~> 2.4.0)
    public_suffix (4.0.3)
    puma (3.12.2)
    rack (2.2.2)
    rack-openid (1.4.2)
      rack (>= 1.1.0)
      ruby-openid (>= 2.1.8)
    rack-raw-upload (1.1.1)
      multi_json
    rack-test (1.1.0)
      rack (>= 1.0, < 3)
    rails (5.2.4.1)
      actioncable (= 5.2.4.1)
      actionmailer (= 5.2.4.1)
      actionpack (= 5.2.4.1)
      actionview (= 5.2.4.1)
      activejob (= 5.2.4.1)
      activemodel (= 5.2.4.1)
      activerecord (= 5.2.4.1)
      activestorage (= 5.2.4.1)
      activesupport (= 5.2.4.1)
      bundler (>= 1.3.0)
      railties (= 5.2.4.1)
      sprockets-rails (>= 2.0.0)
    rails-dom-testing (2.0.3)
      activesupport (>= 4.2.0)
      nokogiri (>= 1.6)
    rails-html-sanitizer (1.3.0)
      loofah (~> 2.3)
    railties (5.2.4.1)
      actionpack (= 5.2.4.1)
      activesupport (= 5.2.4.1)
      method_source
      rake (>= 0.8.7)
      thor (>= 0.19.0, < 2.0)
    rainbow (3.0.0)
    rake (13.0.1)
    rbpdf (1.20.1)
      htmlentities
      rbpdf-font (~> 1.19.0)
    rbpdf-font (1.19.1)
    redcarpet (3.5.0)
    redmine_crm (0.0.52)
      liquid (< 2.6.4)
      rails
    regexp_parser (1.7.0)
    request_store (1.4.1)
      rack (>= 1.4)
    roadie (4.0.0)
      css_parser (~> 1.4)
      nokogiri (~> 1.8)
    roadie-rails (2.1.1)
      railties (>= 5.1, < 6.1)
      roadie (>= 3.1, < 5.0)
    rouge (3.12.0)
    rspec (3.9.0)
      rspec-core (~> 3.9.0)
      rspec-expectations (~> 3.9.0)
      rspec-mocks (~> 3.9.0)
    rspec-core (3.9.2)
      rspec-support (~> 3.9.3)
    rspec-expectations (3.9.2)
      diff-lcs (>= 1.2.0, < 2.0)
      rspec-support (~> 3.9.0)
    rspec-mocks (3.9.1)
      diff-lcs (>= 1.2.0, < 2.0)
      rspec-support (~> 3.9.0)
    rspec-rails (4.0.1)
      actionpack (>= 4.2)
      activesupport (>= 4.2)
      railties (>= 4.2)
      rspec-core (~> 3.9)
      rspec-expectations (~> 3.9)
      rspec-mocks (~> 3.9)
      rspec-support (~> 3.9)
    rspec-support (3.9.3)
    rubocop (0.76.0)
      jaro_winkler (~> 1.5.1)
      parallel (~> 1.10)
      parser (>= 2.6)
      rainbow (>= 2.2.2, < 4.0)
      ruby-progressbar (~> 1.7)
      unicode-display_width (>= 1.4.0, < 1.7)
    rubocop-performance (1.5.2)
      rubocop (>= 0.71.0)
    rubocop-rails (2.3.2)
      rack (>= 1.1)
      rubocop (>= 0.72.0)
    ruby-openid (2.9.2)
    ruby-progressbar (1.10.1)
    ruby_parser (3.15.0)
      sexp_processor (~> 4.9)
    rubyzip (2.2.0)
    selenium-webdriver (3.142.7)
      childprocess (>= 0.5, < 4.0)
      rubyzip (>= 1.2.2)
    sexp_processor (4.15.1)
    simplecov (0.17.1)
      docile (~> 1.1)
      json (>= 1.8, < 3)
      simplecov-html (~> 0.10.0)
    simplecov-html (0.10.2)
    sprockets (4.0.0)
      concurrent-ruby (~> 1.0)
      rack (> 1, < 3)
    sprockets-rails (3.2.1)
      actionpack (>= 4.0)
      activesupport (>= 4.0)
      sprockets (>= 3.0.0)
    temple (0.8.2)
    terrapin (0.6.0)
      climate_control (>= 0.0.3, < 1.0)
    thor (1.0.1)
    thread_safe (0.3.6)
    tilt (2.0.10)
    tzinfo (1.2.6)
      thread_safe (~> 0.1)
    unicode-display_width (1.6.1)
    websocket-driver (0.7.1)
      websocket-extensions (>= 0.1.0)
    websocket-extensions (0.1.4)
    xpath (3.2.0)
      nokogiri (~> 1.8)
    yard (0.9.24)

PLATFORMS
  ruby

DEPENDENCIES
  actionpack-xml_parser
  bundler (>= 1.5.0)
  capybara (~> 3.25.0)
  csv (~> 3.1.1)
  database_cleaner
  ffi
  haml
  haml-rails
  htmlentities
  httpclient
  i18n (~> 1.6.0)
  kaminari
  mail (~> 2.7.1)
  mimemagic
  mini_magick (~> 4.9.5)
  mini_mime (~> 1.0.1)
  mocha (>= 1.4.0)
  mysql2 (~> 0.5.0)
  net-ldap (~> 0.16.0)
  nokogiri (~> 1.10.0)
  pandoc-ruby
  paperclip (~> 6.1.0)
  puma (~> 3.7)
  rack-openid
  rails (= 5.2.4.1)
  rails-dom-testing
  rake
  rbpdf (~> 1.20.0)
  redcarpet (~> 3.5.0)
  redmine_crm
  request_store (~> 1.4.1)
  rich!
  roadie-rails (~> 2.1.0)
  rouge (~> 3.12.0)
  rspec (~> 3.6)
  rspec-rails
  rubocop (~> 0.76.0)
  rubocop-performance (~> 1.5.0)
  rubocop-rails (~> 2.3.0)
  ruby-openid (~> 2.9.2)
  selenium-webdriver
  simplecov (~> 0.17.0)
  tzinfo-data
  yard

BUNDLED WITH
   2.1.4

 

반응형