Rocky Linux 9 에 Redmine 7.0.1 을 소스로 설치한다. PostgreSQL 을 DB 로 쓰고 Apache + Passenger 로 띄운다. 컨테이너로 올릴 때는 Redmine 설치 (컨테이너) 를 본다.
sudo dnf install -y gcc gcc-c++ make patch git \
openssl-devel readline-devel zlib-devel libyaml-devel libffi-devel \
libxml2-devel libxslt-devel \
postgresql-server postgresql-devel \
ImageMagick ImageMagick-devel \
httpd httpd-devel apr-devel apr-util-devel
Rocky 9 는 모듈 스트림으로 Ruby 버전을 고른다.
sudo dnf module list ruby
sudo dnf module switch-to ruby:3.3 -y
sudo dnf install -y ruby ruby-devel rubygems
ruby -v
sudo gem install bundler
sudo postgresql-setup --initdb
sudo systemctl enable --now postgresql
CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD '${PASSWORD}' NOINHERIT VALID UNTIL 'infinity';
CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;
MySQL 을 쓴다면 아래와 같다.
CREATE DATABASE redmine CHARACTER SET utf8mb4;
CREATE USER 'redmine'@'localhost' IDENTIFIED BY '${PASSWORD}';
GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';
cd /tmp
wget https://www.redmine.org/releases/redmine-7.0.1.tar.gz
tar -xvzf redmine-7.0.1.tar.gz
sudo mv redmine-7.0.1 /var/www/redmine
/var/www/redmine/config/database.yml
production:
adapter: postgresql
database: redmine
host: localhost
username: redmine
password: "${PASSWORD}"
encoding: utf8
MySQL 이면 adapter: mysql2 로 둔다. database.yml.example 을 복사해 production 블록만 남기고 나머지는 지운다.
cd /var/www/redmine
bundle config set --local without 'development test'
bundle install
nokogiri 빌드가 걸리면 시스템 라이브러리를 쓰게 한다.
bundle config build.nokogiri --use-system-libraries
bundle exec rake generate_secret_token
RAILS_ENV=production bundle exec rake db:migrate
RAILS_ENV=production bundle exec rake redmine:load_default_data
bin/rails assets:precompile RAILS_ENV=production
load_default_data 는 기본 트래커 · 역할 · 워크플로를 넣는다. 언어를 물으면 ko 를 넣는다.
애플리케이션 계정이 쓸 수 있어야 하는 디렉터리다.
sudo mkdir -p /var/www/redmine/tmp/pdf
sudo chown -R apache:apache /var/www/redmine/files /var/www/redmine/log /var/www/redmine/tmp /var/www/redmine/public/assets
sudo gem install passenger
sudo passenger-install-apache2-module
설치가 끝나면 아래 형태의 설정을 알려 준다. 경로는 설치된 Ruby · Passenger 버전에 맞춰 바뀐다.
LoadModule passenger_module /usr/lib64/ruby/gems/3.3.0/gems/passenger-6.0.x/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /usr/lib64/ruby/gems/3.3.0/gems/passenger-6.0.x
PassengerDefaultRuby /usr/bin/ruby
</IfModule>
/etc/httpd/conf.d/redmine.conf
LoadModule passenger_module /usr/lib64/ruby/gems/3.3.0/gems/passenger-6.0.x/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /usr/lib64/ruby/gems/3.3.0/gems/passenger-6.0.x
PassengerDefaultRuby /usr/bin/ruby
</IfModule>
<VirtualHost *:80>
ServerName redmine.example.com
DocumentRoot /var/www/redmine/public
<Directory /var/www/redmine/public>
AllowOverride all
Options -MultiViews
Require all granted
</Directory>
</VirtualHost>
sudo setsebool -P httpd_can_network_connect_db 1
sudo systemctl enable --now httpd
sudo systemctl restart httpd
SELinux 가 켜져 있으면 /var/www/redmine 의 컨텍스트도 맞춰야 한다.
sudo firewall-cmd --permanent --add-service=http --add-service=https
sudo firewall-cmd --reload
Passenger 를 붙이기 전에 내장 서버로 먼저 떠 보는 편이 문제를 가른다.
cd /var/www/redmine
RAILS_ENV=production bundle exec rails server -b 0.0.0.0 -p 3000
브라우저로 붙어 초기 계정 admin / admin 으로 로그인한다. 첫 로그인에서 비밀번호를 바꾼다.
메일 발송은 Redmine E-mail 설정 을 이어서 한다.
위 버전과 저장소는 오래된 것이라 저장소가 존재하지 않을 수 있다. Ruby 2.6 · MariaDB ·
yum기준이다. 2019년 테스트 됨.
yum install -y httpd
yum -y install mariadb-server mariadb
CREATE DATABASE redmine CHARACTER SET utf8 COLLATE utf8_general_ci;
yum -y install gcc g++ cpp gcc-c++ openssl-devel readline-devel zlib-devel curl-devel libyaml-devel mariadb-devel ImageMagick ImageMagick-devel
yum -y install libxslt-devel libxml2-devel mysql-devel openssl openssl-devel httpd-devel apr-devel apr-util-devel
wget https://github.com/feedforce/ruby-rpm/releases/download/2.6.3/ruby-2.6.3-1.el7.centos.x86_64.rpm
yum -y localinstall ruby-2.6.3-1.el7.centos.x86_64.rpm
gem update --system
gem install bundler
wget http://www.redmine.org/releases/redmine-4.0.3.tar.gz
tar -xvzf redmine-4.0.3.tar.gz
mv redmine-4.0.3 /var/www/redmine
4.x 는 app/assets/config/manifest.js 가 없어 직접 만들어야 하는 경우가 있었다.
mkdir -p /var/www/redmine/app/assets/config
cat > /var/www/redmine/app/assets/config/manifest.js <<'EOT'
//= link_tree ../images
//= link_directory ../javascripts .js
//= link_directory ../stylesheets .css
EOT
bundle exec rake db:migrate RAILS_ENV=production
chown -R apache:apache /var/www/redmine/public
service httpd restart