오픈소스 이슈트래커 redmine 5 설치 방법을 공유합니다.
Redmine 과 비교한 프로그램은 Jira, Trac, 네이버 yona 였는데 최종 Redmine 을 선정한 이유는
일단은 공통적으로 (1) Git / SVN 을 지원해야 합니다. (2) 그리고 과거 5년간 1년에 1회 이상 꾸준한 업데이트가 있었어야 합니다. (3) 또한, 메이저 버전 업데이트시 (예:4.*→5.*) 공식적으로 마이그레이션 방법을 지원해야 합니다.
Jira 는 10명 까지는 무료 사용이고, 추후라도 10명이내라면 무료로 사용할 수 있을것 같고, 또 대기업들에서 많이 사용하나, 상용버전과 무료버전 사이에 기능 차이가 있는 점이 마음에 안들었습니다. 스타트업의 지속 가능한 경쟁력은 오픈소스에서 온다고 믿기 때문에, 비록 쟁쟁한 프로그램이지만 기능 차이 때문에 탈락입니다. 가령 Centos 와 Redhat 은 기술 지원 차이만 있을뿐 기능상에 전혀 차이가 없죠. 바로 이런 점을 말하는 것입니다. Centos 가 Redhat 의 기능을 축소 배포했다면 안썼을 것입니다. 오픈 소스와 상용 버전은 차별을 두어서는 안됩니다.
네이버 Yona 도 쟁쟁한 비교 대상이었습니다. Git / SVN 을 모두 지원하고, 오픈 소스로만 배포하는 점은 좋았습니다. 하지만, 네이버가 오픈 소스를 위해 공헌하고 노력하는 점은 인정하는데 5년 이상 장기적으로 지속하는 오픈 소스 프로그램을 찾기 어려웠습니다. 가령 과거에 네이버에서 배포하던 HTML 디자인 목업 프로그램이 있었는데, 이게 참 좋았거든요. 실 프로젝트에서도 디자인 제안을 위해 사용할 정도로 활용했었습니다. 그런데, 시간이 흐르며 어느 순간 개발이 중단되었습니다. 그래도 마지막 버전을 쓸 수 있게 링크를 그냥 두기라도 하지, 이젠 다운로드도 받을 수도 없습니다. 또, 네이버에서 진행되던 그당시에는 아주 유용하게 썼던 오픈소스가 지금은 사라진 것들이 많습니다. 그래서 과연 Yona 를 장기적으로 믿고 쓸수 있을까 주저되었습니다. 네이버는 이점을 숙고해야 할 것입니다.
그다음 강력한 후보가 Trac 이었고, Git / SVN 모두 활용하고, Trac 은 실 프로젝트에서 몇차례 활용한 적도 있었습니다. 그리고 Trac 은 국내 대기업 LG Uxxxx 에서 프로젝트 관리 툴로 활용되고 있기도 합니다. 가벼우며 초기에 쉽고 빠르게 익힐수 있고, 버그 관리를 넘어 충분한 이슈관리가 가능합니다. 위키도 지원합니다. 그런데, 물론 지금도 업데이트 되고 있으나 과거 5년간 업데이트가 너무 적었습니다. Trac을 써본지 10년이 넘었는데 아직도 버전 넘버가 낮더군요. 그래서 최종 탈락되었습니다.
Redmine 을 선정한 이유는, 기능 제약이 없는 오픈소스 이며, 최근 5년간 꾸준한 업데이트가 있었으며, 또한 메이저 버전이 올라갈 때(예:4→5) 자체적으로 마이그레이션 방법을 제공하고 있습니다. 이점이 대단히 중요합니다. 최신 트랜드에 맞춰 계속 업데이트를 제공하며 메이저 버젼이 올라갈때는 마이그레이션 방법을 제공하면 완벽하죠. 그리고 SVN/GIT 을 모두 지원합니다. 사실 외국의 비교 리뷰에서는 Redmine 과 Trac 이 아주 유사하다고 합니다. 그래서, Trac 을 쓰던 사용자들은 Redmine 도 적응이 빠를거라 생각됩니다. 단, 단점으로 Redmine 은 설치 난이도가 너무 어렵다는 평이 많았습니다. 만약 linux 설치가 실패한다면 윈도우 redmine 설치도 좋은 대안이라고 생각됩니다.
정말 설치에 9시간 정도 걸린것 같고, 설치 난이도 극상 이었습니다. 여러분은 이런 삽질을 안하길 바라며 이 삽질을 메모로 남겨 놓습니다.
설치 환경 : Centos stream 9 + apache 2.4 + Mysql Community 8
apache 나 mysql 은 이미 설치했다고 가정하고 시작하겠다.
mysql 대신 postgresql 도 가능하다고 하는데, 이 글에선 mysql 로 진행하겠다.
설치가 필요한 분들은 내 블로그를 참고하기 바란다.
[필수 유틸리티 설치]
dnf -y install zlib-devel curl-devel openssl-devel httpd-devel apr-devel apr-util-devel mysql-devel
dnf -y install ruby ruby-devel
Centos 낮은 버전인 분들은 dnf 대신 yum 으로 한다.
※어떤 글에서는 mod_fastcgi.so 를 생성해야 한다고 나와서 설치하려고 많이 삽질했는데, 결국 실패하고, 위의 내 환경에서는 딱히 생성하지 않아도 설치가 성공했다. (허무...)
[redmine 다운로드 및 권한 수정]
- apache:apache 권한은 자신의 환경에 맞게 수정하면 된다. 또한 설치하는 과정에서 파일이 root 권한으로 새로 생성되며 소유자 권한 문제가 계속 발생하는데, 로그를 보고 이 문제가 발생할 때마다 chown 을 실행해서 권한을 수정해주고 넘어간다.
- 다른 웹경로를 할 사람들은 이하 관련 설정에서 경로를 계속 동일하게 맞춰야 한다
- wget 주소는 redmine 홈페이지에서 최신 버전에 맞게 수정해준다. 현재는 redmine 5 버전 설치 방법이다.
cd /var/www
wget https://www.redmine.org/releases/redmine-5.0.5.tar.gz
tar xvf redmine-5.0.5.tar.gz
ln -s /var/www/redmine-5.0.5 /var/www/redmine
chown -R apache:apache /var/www/redmine-5.0.5
chmod -R 770 /var/www/redmine-5.0.5
chcon -R -t httpd_modules_t /var/www/redmine-5.0.5
[mysql redmine DB를 생성] - 자세한 방법은 생략한다.
※ database : redmine / user : redmine / 모든 권한 지정
[bundler 설치]
bundler 를 이용한 것들 설치. 뭘 설치할거냐고 물으면 y 를 누른다. 반드시 아래처럼 /var/www/redmin 웹경로에서 실행해야 한다. 아래에서, bundle exec rake db:migrate ~ 는 redmine DB 에 기본 테이블 들을 생성해 주는 것이고, 만약 테이블들을 모두 삭제하게 되는 경우 이 줄을 다시 실행해 주면 된다.
cd /var/www/redmine
gem install bundler
bundle install --without development test mysql sqlite
bundle exec rake generate_secret_token
bundle exec rake db:migrate RAILS_ENV=production
[mod_passenger.so 생성]
마찬가지로 /var/www/redmin 웹경로에서 실행해야 한다. 여기 시간이 제일 많이 걸린다. 컴파일 하는데 시간이 오래 걸리는데, redmine 은 passenger 엔진을 이용해서 돌아가기 때문에 중요한 부분이다.
gem install passenger
#경고는 무시해도 된다. 시간이 오래 걸리는데, 기다린다.
passenger-install-apache2-module
#파일이 생성 되었는지 확인
find / -name mod_passenger.so
/usr/local/share/gems/gems/passenger-6.0.17/buildout/apache2/mod_passenger.so
#아파치 경로로 복사 (*.so 가 지정된 경로 외에 있으면 selinux 때문에 안 읽힐수도 있다.)
cp /usr/local/share/gems/gems/passenger-6.0.17/buildout/apache2/mod_passenger.so /etc/httpd/modules/
#selinux 권한 부여 (만약 실행이 안되면, httpd-passenger.pp 가 생성된 경로로 한다)
cd /etc/httpd/conf.d
semodule -i httpd-passenger.pp
#이 부분을 기억해 뒀다가 추후 실행시 Gemfile.lock 권한 문제가 발생하면 root 로 생성되서 그러니 소유자를 바꿔준다. 정확히 어느 지점에서 오류가 났는지는 모르겠는데, 좌우간 이 파일 오류 발생시 한번만 실행히 주면 된다.
chown apache:apache /var/www/redmine/Gemfile.lock
[apache 환경 설정 추가]
- apache 2.4 이며 apache 2.2 인 경우 2.4 를 # 주석하고 2.2 의 # 주석을 푼다.
- 도메인 입력 부분에, 운영할 도메인을 입력하고, 도메인이 없다면 localhost 를 넣는다.
- 운영할 포트가 80이 아니라면 변경한다. (방화벽, selinux 허용 필요)
vi /etc/httpd/conf.d/redmine.conf
LoadModule passenger_module /etc/httpd/modules/mod_passenger.so
PassengerRoot /usr/local/share/gems/gems/passenger-6.0.17
PassengerDefaultRuby /usr/bin/ruby
SetEnv LD_LIBRARY_PATH /usr/lib64
<Directory "/var/www/redmine/public/">
#apache 2.4
AllowOverride None
Require all granted
#apache 2.2
#Options Indexes ExecCGI FollowSymLinks
#Order allow,deny
#Allow from all
#AllowOverride all
</Directory>
<VirtualHost *:80>
ServerName redmine.<YOUR-DOMAIN>.com
ServerAdmin webmaster@<YOUR-DOMAIN>.com
DocumentRoot /var/www/redmine/public/
ErrorLog logs/redmine_error_log
#If you are using mod_fcgid and are going to upload files larger than
#131072 bytes you should consider adding the following line
#that allows to upload files up to 20 mb
<IfModule mod_reqtimeout.c>
#apache 2.4
LimitRequestBody 20971520
#apache 2.2
#MaxRequestLen 20971520
</IfModule>
</VirtualHost>
[redmine 환경 파일 수정]
vi /var/www/redmine/config/settings.yml
mail_from:
default: admin@mydomain.com ← 관리자 메일로 사용할 진짜 사용할 수 있는 주소를 입력해야 한다.
host_name:
default: localhost ← 위 apache 에 설정한 도메인 이름으로 변경하면 된다.
관리자 메일을 아무렇게 적으면 오류가 발생한다. 실제로 사용되는 이메일 주소를 입력해야 한다.
mv /var/www/redmine/config/configuration.yml.example /var/www/redmine/config/configuration.yml
vi /var/www/redmine/config/configuration.yml
# email_delivery:
delivery_method: :smtp
smtp_settings:
enable_starttls_auto: true
address: "mail.mydomain.com" #SMTP 도메인
port: 587
domain: "mail.mydomain.com" #SMTP 도메인
authentication: login
user_name: "(smtp 계정)"
password: "(smtp 비밀번호)"
# email_delivery: 부분이 맨위와 아래 두번 작성되지 않도록 주의한다. 이 부분을 실수로 주석을 풀었다가 위에도 선언되어 있어서 오류가 발생할 수 있다.
예를들어, 사용자가 가입 신청을 하면 위 관리자 메일로 승인하라고 메일을 발송하게 되는데, SMTP 서버 정보를 입력해 줘야 한다. 위 파일을 자세히 보면 SMTP 인증 유형별로 입력 양식을 주석으로 준비해 놓았다. 딱 위에 예제대로가 아니라, 자신에게 맞는 SMTP 전송 방식을 주석을 해제해서 위 처럼 SMTP 정보를 입력해 줘야 한다. 필자의 경우 smtp 에서 starttls 를 이용하고 587 포트 번호이고 login 인증을 사용하기에 위 양식을 선택했다. SMTP 정보는 회사라면 담당자에게 문의하거나, 자신의 서버라면 SMTP 를 설치하거나, 또는 naver 라면 naver mail 에 맞는 SMTP 정보를 넣으면 된다.
이메일이 전송이 안된다면, tail -f /var/log/maillog 를 확인한다.
그다음, DB 정보를 입력한다.
mysql db 에 들어가 보면 production 과 development 두가지 database 가 생성되었을 것이다. 계정은 동일하다.
cp /var/www/redmine/config/database.yml.example /var/www/redmine/config/database.yml
vi /var/www/redmine/config/database.yml
production:
adapter: mysql2
database: redmine
host: localhost
username: redmine
password: "(비밀번호)"
# Use "utf8" instead of "utfmb4" for MySQL prior to 5.7.7
encoding: utf8mb4
development:
adapter: mysql2
database: redmine_development
host: localhost
username: redmine
password: "(비밀번호)"
# Use "utf8" instead of "utfmb4" for MySQL prior to 5.7.7
encoding: utf8mb4
아래는 확실하지 않은데 로그를 확인후 selinux 관련 오류라면 실행해 본다.
setsebool -P httpd_use_opencryptoki 1
setsebool -P httpd_run_stickshift 1
setsebool -P httpd_setrlimit 1
apache 를 재시작한다.
systemctl restart httpd
관련 로그 확인 방법
#apache
tail -f /etc/httpd/logs/error_log
#redmine
tail -f /var/www/redmine/log
#email (postfix)
tail -f /var/log/maillog
초기에 설치시 오류 때문에 필요하다면 임시로 tmp 권한을 최대로 주고, 나중에 원래대로 한다.
#권한 최대
chmod -R 777 /var/www/redmine/tmp
#권한 원복
chmod -R 770 /var/www/redmine/tmp
selinux 관련 오류인지 불확실 한 경우 selinux 를 임시로 비활성화 했다가, 정상적으로 실행되면 selinux 문제인것이니, 이경우 selinux 문제를 해결하고 꼭 나중에 원래대로 한다. setenforce 0 상태로 운영하면 해커들의 놀이터가 되니 꼭 위에서 제시한 방법들을 해보고 환경은 사람마다 다르니 안되면 로그들을 유심히 보고 인터넷 검색을 해서 해결하고 꼭 setenforce 1 로 해야 한다.
# selinux 현재 상태 확인
getenforce
# selinux 비활성화 (로그만 남김)
setenforce 0
# selinux 활성화
setenforce 1
만약, 설치 당시에 이메일이 잘 안가서 가입 신청한 사용자를 삭제해야 한다면, 일단 관리자 메뉴에서 등록 신청한 사용자를 삭제해 보도록 하고, 여의치가 않은 상황이라면 아래 테이블 3곳에서 등록 신청한 사용자 ROW를 삭제하면 된다. 단, admin 관리자는 절대 삭제해선 안된다. 등록 신청한 사용자만 삭제한다. 자신의 이메일 개수가 제한이 있으니 계속 새로운 메일을 넣을수도 없고, 매번 DB를 지웠다 깔고 초기화 하기도 번거로운 일이다. 단, 이 방법은 초기 설치에만 사용해야 한다. 사용중에 삭제하면 어떤일이 벌어질지 모른다.
email_addresses
users
user_preferences
다 되었으면 웹으로 로그인을 해본다.
default ID : admin / PASS : admin
이 화면이 뜬다면 어느 정도 설정은 된 것인데, admin 계정으로 로그인 해서 비밀번호 변경 까지 성공해야 하고, 그다음 로그아웃하고 새로운 사용자로 등록 하고, 관리자 메일을 받고 승인해야 하는데 이때 관리자 메일과 달라야 한다. 그리고 로그인 성공하고, 다시 관리자로 로그인해서 새로운 사용자를 관리자로 변경하고, 최종적으로 관리자로 변경된 새로운 사용자로 로그인 하는 것 까지 성공해야 설치가 모두 끝난 것이다. 마지막엔 보안상 알려진 계정명인 admin 을 삭제한다. (삭제하지 않으면 브투투스 공격을 당하게 된다.)
admin 이 아닌 새로운 사용자로 여기까지 왔다면 설치가 완료된 것이다.
Sandbox 연습 프로젝트를 만들어 보았다.
휴대폰에서 모바일 화면까지 깔끔하게 지원한다.
삽질이 많았을텐데, 포기하지 않고 여기까지 왔다면 축하드립니다.
도움이 되었다면 공감과 댓글 한번 부탁드리고,
도움이 많이 되었다면 비밀댓글로 커피한잔 사주시면 감사히 먹겠습니다.
참조1 : https://www.redmine.org/projects/redmine/wiki/HowTo_configure_Apache_to_run_Redmine
참조2 : https://www.server-world.info/en/note?os=CentOS_Stream_8&p=redmine
(위 참조1, 참조2 가 모든 것이 맞는 내용은 아니었습니다. 제가 최대한 보충했습니다.)
'Linux' 카테고리의 다른 글
Centos 7 에 Glassfish 3.1.2.2 설치하기 (0) | 2023.03.16 |
---|---|
Centos 7 에 PostgreSQL 9.6 설치하기 (0) | 2023.03.16 |
오픈소스 위키 xwiki 설치 - CentOS Stream 9 + Tomcat 8.5 + Mysql 8 (0) | 2023.03.06 |
이메일 관련 포트 정리 (0) | 2023.03.04 |
집에서 ipTIME DDNS와 미니PC로 무제한 용량 개인 이메일 서버 만들기 (0) | 2023.03.03 |