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
반응형