본문 바로가기
개발(코딩) 경험 저장소/서버,유틸 설치 및 관리

[linux][redmine] rocky linux 9에 redmine 수동 설치하기

by 주니우스 2024. 11. 17.
반응형

 

[잡설]

기존에는 redmine을 시놀로지 DSM 6 버전에서 패키지 설치하여 사용하다

DSM 7 버전으로 올라가면서 redmine 패키지가 사라지면서 사용을 중단 하였다.

그러다 다시 필요해져서 시놀로지 도커에 올려서 쓸까 하다가 linux 에 설치하는걸로 결정했다.

아직도 도커 보다는 시스템에 설치하는걸 더 선호하는 편이다.

목표는 작은 pc 하나 구해서 rocky linux 9 설치하고 redmine + gitea 설치하는게 목표다.

근데 redmine 설치하는게..... 생각보다 잘 안되네....

제작년에 설치해보고 문서로 정리해놓은것도 있는데 버전업 되면서 달라진것도 많고

생각보다 참고할 문서가 별로 없다. redmine 이 일반적으로 필요한 프로그램도 아니긴 하지만...

간단히 설치하려고 bitnami 를 알아봤지만 redmine 4버전대에서 멈추가 더이상 업데이트가 없는것 같다.

뭐 물론 redmine 4 버전대로도 충분히 쓰고도 남지만...이런건... 쓰기 싫어진다 ㅋㅋ

여튼 이번에 설치했어도 나중에 또 설치해야할일 생길거고

나의 치매급 망각능력을 알기에 이곳에 과정을 남긴다.

 

 

[시작하기전 확인]

 

OS : rocky linux 9.4

redmine 버전 : 5.1.4

DB : mariadb 11.4.3

web server :  nginx 1.26.1

 

web서버로 작년 정도까지만 해도 주로 Apache httpd 를 사용했었다. 그냥 예전부터 쓰던거라 익숙하다보니~

그러다 올해부터는 주로 nginx를 사용하고 있어서 지금 구축 시스템에서도 nginx를 사용할 예정이다.

근데.. 설치하면서 제일 삽질이 많았던 부분인데...

apache냐 nginx냐의 문제는 아니겠지만... 최초 계획은 nginx가 시스템에 설치 되어있는 상태에서 redmine을 설치한다는

것이었다. 왜냐면 이미 구축되어있는 시스템에 redmine을 추가할수도 있다는 일어날지 안일어날지도 모르는 가정에~ㅋㅋ

근데 아래 글을 진행하다 보면 알겠지만 nginx 와 passenger 라는걸 연동할때 nginx source 경로 install 경로를 묻는데

기존 설치 되어있는 것과 별개로 source로 재컴파일을 해서 기존 설치에 반영이 되야 겠지만 이게 잘 안된다.

경로도 무지 헷갈리고 덮어 쓰려면 디렉토리나 파일 구조도 동일해서 필요한것만 덮어쓰던지 해야하는데 구조 자체가 달라서 여러 파일이나 디렉토리가 비슷한게 더 생기고... 여튼 그래~

 

그래서 이 설치할때는 mariadb까지만 사전 설치하고 nginx 는 redmine 설치시 컴파일 설치하는걸로 선택 하는게 좋을듯.

양심은 있는지 nginx 컴파일은 지가 알아서 하더라~^^

 

또하나 이건 지금에만 해당하겠지만 오늘 들어가서 보니 redmine 버전이 6 이 새로 나온거 같더라

그래서 6버전으로 설치를 해보려고 했는데 ruby 버전이 호환이 안된데... 그래서 ruby 버전을 최신으로 업데이트 하려했는데.... 이것도 실패했어... 하라는대로 했는데 안되네... 그래서 이글에선 5.1.4 버전 기준으로 설명함

rocky linux 9.5 나오거나 ruby 버전이 업데이트 되면 시도해 볼거임.

 

설치하면서 ChatGPT를 많이 활용하긴 했지만~  역시 믿을건 못되더군... 참고 정도만~

 

 

[시작 준비]

 

패키지 설치~

 

우선 EPEL 저장소 부터 추가

[root@ROCKYLINUX94 opt]# dnf install epel-release

 

설치 과정에 필요한 패키지들을 설치한다.

[root@ROCKYLINUX94 opt]# dnf install wget redhat-rpm-config automake libcurl-devel gcc g++ cpp gcc-c++ make libtool ImageMagick ImageMagick-devel MariaDB-devel ruby ruby-devel rubygems nodejs openssl-devel readline-devel zlib-devel curl-devel git libffi-devel libxml2-devel libxslt-devel pcre-devel valgrind-devel ghostscript

Install  299 Packages 쯤 뜨네 ^^;;

설치 패키지 이유는 다 모르지만 make 나 gcc g++ cpp 등은 nginx 컴파일에 필요한것들 같고

설치 자체에는 문제 없지만 redmine 에서 지원기능에 대한 패키지들도 있다.

예를 들면 ghostscript 같은 경우는 pdf 지원과 관련이 있다.

 

redmine 설치 파일을 다운 받는다.(redmine 설치 경로가 /opt/redmine 으로 할거라 opt 경로에서 다운받음)

[root@ROCKYLINUX94 opt]# wget https://www.redmine.org/releases/redmine-5.1.4.tar.gz

압축 해제

[root@ROCKYLINUX94 opt]# tar xvfz redmine-5.1.4.tar.gz

폴더명 리네임

[root@ROCKYLINUX94 opt]# mv redmine-5.1.4 /opt/redmine

 

 

MariaDB 의 준비~

 

DB에 redmine 을 위한 데이터베이스와 계정을 생성한다. (database 이름은 redmine)

mysql에 접속 하여 아래 쿼리 실행 

 

use mysql;
CREATE DATABASE redmine CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 
CREATE USER 'redmine'@'localhost' IDENTIFIED BY '너희들의 패스워드'; 
GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost'; 
FLUSH PRIVILEGES; 
EXIT;

 

redmine 의 DB 설정

redmine 경로로 이동한다.

[root@ROCKYLINUX94 opt]# cd /opt/redmine

database.yml 샘플을 복사해서 database.yml 로 copy 한다.

[root@ROCKYLINUX94 redmine]# cp config/database.yml.example config/database.yml

database.yml 에 DB 정보를 수정한다.

[root@ROCKYLINUX94 redmine]# vi config/database.yml

 

username 하고 password 만 바꾸면 된다.

나는 username 도 redmine 로 했지만 다른이름 으로 해도 되고 위의 mariadb 에서 계정 추가한 이름을 넣어주면 된다.

 

기타 설정

redmine 설정을 위한 것들인데 configuration.yml 은 설치 이후에도 수정할수 있다

내용 열어서 보다보면 대충 어떤 것들인지 알게 될것이다.

여기서는 두가지 정도 할건데 하나는 pdf 지원을 위한것과 또하나는 이메일 설정이다.

[root@ROCKYLINUX94 redmine]# cp config/configuration.yml.example config/configuration.yml

 

1) pdf 지원

처음 패키지 설치때  ghostscript를 설치했으니 아래 명령을 치면 아래 이미지 같이 PDF 가 rw 가 지원되어야 한다.

[root@ROCKYLINUX94 redmine]# convert -list format | grep PDF

 

configuration.yml 파일을 열고 182 line 정도에 imagemagick: /usr/bin/convert 를 추가해준다.

[root@ROCKYLINUX94 redmine]# vi /opt/redmine/config/configuration.yml

 

 

이걸 해야지 아래 PDF 서포트 이용가능이 연두색 체크 표시가 뜬다.

참고로 저 맨 아래 queue adapter 변경은 여러가지로 다해봤는데 아직 클리어하지 못했다 ㅜㅜ

뭐 기능에는 큰 영향이 없지만... 찝찝...(이메일 발송등 처리 시 비동기 queue 방식으로 변경하라는)

 

 

2) redmine 에서 메일 발송을 위한 설정

위의 설정과 같이 configuration.yml 파일을 열고

[root@ROCKYLINUX94 redmine]# vi /opt/redmine/config/configuration.yml

처음 default 구역 말고 최 하단에  production: 영역에 아래와 같이 이메일 발송에 쓸 정보를 추가한다.

나는 gmail 로 사용할것 이기때문에 gmail 기준으로 설정했다.

위에 주석처리된 queue_adapter 가 위에 빨간 느낌표 해결을 하기위한 설정의 흔적들이다 ㅋㅋ

 

[Redmind 설치 시작]

1) 권한 생성

이전 설치 과정에서 권한에 대한 문제가 좀 생기더라 여러가지 방법을 해보다 걍 nginx 계정을 생성해서 사용했다.

[root@ROCKYLINUX94 redmine]# groupadd nginx
[root@ROCKYLINUX94 redmine]# useradd -r -g nginx -s /sbin/nologin -M nginx

 

이후 작업들은 redmine 디렉토리에서 실행해야 하므로 redmine 경로로 이동(난 이미 redmine 경로에 있지만~)

[root@ROCKYLINUX94 redmine]# cd /opt/redmine

 

2) passenger 설치

[root@ROCKYLINUX94 redmine]# gem install passenger

[root@ROCKYLINUX94 redmine]# gem install bundler

[root@ROCKYLINUX94 redmine]# bundle install --without development test

 

3) DB 마이그레이션

[root@ROCKYLINUX94 redmine]# RAILS_ENV=production bundle exec rake generate_secret_token

[root@ROCKYLINUX94 redmine]# RAILS_ENV=production bundle exec rake db:migrate

그러면 뭔가 죽~~~ 올라간다.

[root@ROCKYLINUX94 redmine]# RAILS_ENV=production bundle exec rake redmine:load_default_data

이 명령을 실행하면 아래와 같이 언어를 묻는데 ko 를 선택한다.

 

 

4) nginx passenger-install-nginx-module 모듈 추가

    (nginx 소스를 다운로드 받아 passenger 모듈을 추가해서 컴파일 한다.)

[root@ROCKYLINUX94 redmine]# passenger-install-nginx-module

 

그냥 엔터를 친다.

 

위의 화면이 나오면 !를 입력하면 아래 내용을 선택할수 있게 바뀐다.

 

키보드 화살표를 이용해서 이동할수 있고 스페이스바를 누르면 선택/해제 가 된다.

나는 Ruby 만 필요하므로 Ruby만 선택했다.

 

그리고 엔터를 누르면 주르륵 체크를 한다.

 

체크하는 과정에 위의 메시지가 뜨면

dnf install libcurl-devel  패키지를 설치한다.

 

또 위와 같은 error 가 발생하면 

dnf install openssl-devel zlib-devel 두개 패키지를 설치한다.

 

모두 정상적으로 체크되고나면 아래 선택 화면이 출력된다.

여기서는 1을 선택한다. 쉽게 말해

1 은 nginx를 다운로드 해서 컴파일 해서 설치하는거고

2 는 기존 nginx 가 설치 되어있는상태에서 passenger를 추가한다는건데, 내가 이거하다가

시간을 엄청 허비 했다. 생각처럼 깔끔하게 안되니 포기하고 1로 간다.

 

그럼 뭐가 죽~~ 올라가다 설치 경로를 묻는데 나는 기본값으로 그냥 할거다. 그냥 엔터

나머지는 지가 알아서 컴파일 한다. 시스템 사양에 따라 좀 다르겠지만 난 몇십분 걸리더라~

 

컴파일이 다 끝나고 나면 아래와 같이 끝납니다. 엔터~

 

opt/nginx/conf/nginx.conf 열어보면 위에 설명한 passenger_root, passenger_ruby 부분이 추가 되어있습니다.

 

4) 권한 설정

[root@ROCKYLINUX94 redmine]# chown -R nginx:nginx /opt/redmine
[root@ROCKYLINUX94 redmine]# chmod -R 755 /opt/redmine

[root@ROCKYLINUX94 redmine]# chown -R nginx:nginx /opt/nginx 
[root@ROCKYLINUX94 redmine]# chmod -R 755 /opt/nginx

권한 관련되어서는 각자 상황에 맞춰 설정하면 되는데 권한 설정에 참고로

Redmine tmp, files, log 디렉토리는 웹 서버가 쓰기 권한을 가져야 한다.

 

 

5) nginx.conf

[root@ROCKYLINUX94 redmine]# vi /opt/nginx/conf/nginx.conf

기본 nginx.comf 파일에 내가 추가/변경한 내용은 아래와 같다.


user nginx;                   # 이부분도 설치후 권한 오류와 관계있음

worker_processes  2;            #설치 시스템 코어갯수만큼 수정

 

#error_log  logs/error.log;

#error_log  logs/error.log  notice;

#error_log  logs/error.log  info;

 

#pid        logs/nginx.pid;

 

 

events {

    worker_connections  1024;

}

 

 

http {

    include       mime.types;

    default_type  application/octet-stream;

 

    passenger_root /usr/local/share/gems/gems/passenger-6.0.23;

    passenger_ruby /usr/bin/ruby;

 

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

    #                  '$status $body_bytes_sent "$http_referer" '

    #                  '"$http_user_agent" "$http_x_forwarded_for"';

 

    #access_log  logs/access.log  main;

 

    sendfile        on;

    #tcp_nopush     on;

 

    #keepalive_timeout  0;

    keepalive_timeout  65;

 

    #gzip  on;

 

    server {

        listen       80;

        server_name  localhost;

        root /opt/redmine/public; 

        passenger_enabled on;

 

        #charset koi8-r;

 

        location / {

            try_files $uri @app;

        }

 

        location @app {

            passenger_base_uri /;

            passenger_app_root /opt/redmine;

        }

        

        error_log  /opt/nginx/logs/error.log;

        access_log /opt/nginx/logs/access.log;

    }

 

 

    # another virtual host using mix of IP-, name-, and port-based configuration

    #

    #server {

    #    listen       8000;

    #    listen       somename:8080;

    #    server_name  somename  alias  another.alias;

 

    #    location / {

    #        root   html;

    #        index  index.html index.htm;

    #    }

    #}

 

 

    # HTTPS server

    #

    #server {

    #    listen       443 ssl;

    #    server_name  localhost;

 

    #    ssl_certificate      cert.pem;

    #    ssl_certificate_key  cert.key;

 

    #    ssl_session_cache    shared:SSL:1m;

    #    ssl_session_timeout  5m;

 

    #    ssl_ciphers  HIGH:!aNULL:!MD5;

    #    ssl_prefer_server_ciphers  on;

 

    #    location / {

    #        root   html;

    #        index  index.html index.htm;

    #    }

    #}

 

}


6) nginx 자동 실행

[root@ROCKYLINUX94 redmine]# vi /etc/systemd/system/nginx.service


[Unit]
Description=NGINX web server
Documentation=http://nginx.org/en/docs/
After=network.target

[Service]
Type=forking
PIDFile=/opt/nginx/logs/nginx.pid
ExecStartPre=/opt/nginx/sbin/nginx -t
ExecStart=/opt/nginx/sbin/nginx
ExecReload=/opt/nginx/sbin/nginx -s reload
ExecStop=/opt/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target


 

[root@ROCKYLINUX94 redmine]# systemctl daemon-reload
[root@ROCKYLINUX94 redmine]# systemctl enable nginx

[root@ROCKYLINUX94 redmine]# systemctl start nginx

 

그리고 브라우저에서 ip주소 입력하면 아래와 같은 화면을 볼수 있다~!!

예전부터 느끼고 누구나 느끼겠지만.... 디자인좀....^^;;

초기 로그인 계정은 admin/admin

 

이게 끝은 아니다 redmine 을 사용하려면 꼭 해야한 하는 세세한 설정들이 정말 많다.

일감유형, 일감상태값, 역할값 등등 결함,이슈,프로젝트 관리하기 위한 시나리오들을 잡고

하나하나 설정해가야한다. 

예전에 설치할때도 어떻게 시나리오를 만들어갈까 일주일 이상 고민했던것 같다.

 

이후에 Let’s Encrypt 를 통해 ssl 인증서를 적용하고자 한다.

그건 다음주에 해야겠다~~ ㅎ

반응형

댓글