1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

CentOS7上に、Redmine5とGitbucketをインストールしてPostgreSQL連携し、Apacheで繋げておく

Last updated at Posted at 2023-04-30

1.困った

世界は加速度的に進化しているのに、私の身の回りは20年前とあまり変わっていません。
コンテナ使えたら簡単なのにと思ったけれど、仮想サーバの設定を変えないといけなくて、その権限が自分にないのでしかたない。地道にやっていくことにします。

2.前提

セキュリティに関してはあまり考慮していません。それぞれ設定が必要かと思います。
あと、基本的にコマンド入力は管理者権限でお願いします。

3.何をするの?

CentOS7上に、Redmine5とGitbucketをインストールします。メインはRedmine。ポートがバラバラなので、Apacheにプロキシを担ってもらって、80番ポートでやり取りできるようにします。データベースはPostgreSQLにします。

4.謝辞

こちらのサイトには本当にお世話になりました。ありがとうございます。

5.設定

5.1.SELinux無効化

安全性のために頑張ってくれている姿勢は理解したいが、うまくいかないときはだいたい君のせいなのだよ、ということで無効化します。

vi /etc/selinux/config

コンフィグのSELINUXのenforcingをdisabledに変更します。

/etc/selinux/config
#SELINUX=enforcing
SELINUX=disabled

そして再起動

shutdown -r now

再起動後SELinuxが無効化されていることを確認してください。

getenforce

あと、firewallも切っておいたほうがいいと思います。実運用ではちゃんと設定する必要がありますが、ここではとりあえず無効化しておきます。

systemctl stop firewalld
systemctl disable firewalld

5.2.PostgreSQL設定

5.2.1.インストール

#ツール群のインストール
yum -y groupinstall "Development Tools"
yum -y install openssl-devel readline-devel zlib-devel curl-devel libyaml-devel libffi-devel
yum -y install epel-release centos-release-scl
yum -y install llvm-toolset-7 llvm5.0

#レポジトリ更新
yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm 

#PostgreSQL最新(Apr.2023 現在)インストール
yum -y install postgresql14
yum -y install postgresql14-server
yum -y install postgresql14-devel

5.2.2.init

su - postgres -c '/usr/pgsql-14/bin/initdb -E UTF8 --locale=C -A trust -W'

パスワード設定を聞かれるので入力してください。

5.2.3.listenの設定

vi /var/lib/pgsql/14/data/pg_hba.conf

ファイルの末尾に書き足します。

/var/lib/pgsql/14/data/pg_hba.conf
host    redmine         redmine         127.0.0.1/32            md5
host    redmine         redmine         ::1/128                 md5

5.2.4.サービス開始

systemctl start  postgresql-14
systemctl enable postgresql-14

#ちゃんと起動してるか確認
systemctl status postgresql-14

5.2.5.パスを通す

プロファイル設定を編集します。

vi ~/.bash_profile
~/.bash_profile
# PATH=...
# export PATH
# の記述を下記のとおり一行で書き替え

export PATH=$PATH:$HOME/bin:/usr/pgsql-14/bin

設定を反映させます。

source ~/.bash_profile

5.3.Redmine

5.3.1.PostgreSQL設定

Redmine用のユーザを作ります。

sudo -u postgres createuser -P redmine

パスワード入力を求められるので、ここではredmineとしておきます。
続けてデータベースの作成です。

sudo -u postgres createdb -E UTF-8 -l ja_JP.UTF-8 -O redmine -T template0 redmine

5.3.2.Rubyインストール

# 必要なライブラリをインストール
yum -y install ImageMagick ImageMagick-devel ipa-pgothic-fonts
yum -y install devtoolset-11

#ディレクトリはここにしておきます
cd /var/lib

wget https://cache.ruby-lang.org/pub/ruby/3.1/ruby-3.1.4.tar.gz
tar xvf ruby-3.1.4.tar.gz
rm -f ruby-3.1.4.tar.gz

cd ruby-3.1.4

./configure --disable-install-doc

#makeするのに必要らしい
scl enable devtoolset-11 bash

# インストール
make
make install

# 正常にインストールされたか確認
ruby -v

5.3.3.Redmineインストール

5.3.3.1.配備

#bundlerをセットアップしておく
gem install bundler

#Redmineを配備
cd /var/lib
wget https://www.redmine.org/releases/redmine-5.0.5.tar.gz
tar xzf redmine-5.0.5.tar.gz
rm -f redmine-5.0.5.tar.gz
ln -s redmine-5.0.5 redmine

5.3.3.2.データベース設定

vi /var/lib/redmine/config/database.yml

以下のように書きます。ユーザ、パスワードは5.3.1.で設定したものです。

/var/lib/redmine/config/database.yml
production:
  adapter: postgresql
  database: redmine
  host: localhost
  username: redmine
  password: "redmine"
  encoding: utf8

5.3.3.3.メール設定

vi /var/lib/redmine/config/configuration.yml

それぞれの環境に合わせて編集してください。

/var/lib/redmine/config/configuration.yml
production:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      address: "localhost"
      port: 25
      domain: "example.com"

  rmagick_font_path: /usr/share/fonts/ipa-pgothic/ipagp.ttf

5.3.3.4.インストール

cd /var/lib/redmine

#インストール
bundle install --without development test

#トークン生成
bundle exec rake generate_secret_token

5.3.3.5.unicornインストール

vi Gemfile.local
/var/lib/redmine/Gemfile.local
gem "unicorn"
bundle update

5.3.3.6.データベース設定

RAILS_ENV=production bundle exec rake db:migrate
RAILS_ENV=production REDMINE_LANG=ja bundle exec rake redmine:load_default_data

5.3.3.7.サービス化

まずはこちらのファイルを作成します。

vi /usr/lib/systemd/system/redmine-unicorn.service
/usr/lib/systemd/system/redmine-unicorn.service
[Unit]
Description=Redmine Unicorn Server
After=postgresql-14.service

[Service]
WorkingDirectory=/var/lib/redmine
Environment=RAILS_ENV=production
SyslogIdentifier=redmine-unicorn
PIDFile=/var/lib/redmine/tmp/pids/unicorn.pid

ExecStart= /usr/local/bin/bundle exec "unicorn_rails -c config/unicorn.rb -E production"
ExecStop=/usr/bin/kill -QUIT $MAINPID
ExecReload=/bin/kill -USR2 $MAINPID

[Install]
WantedBy=multi-user.target

続けてこちら。 ポートはおそらく他とかぶらないであろう54321にしてみた。

vi /var/lib/redmine/config/unicorn.rb
/var/lib/redmine/config/unicorn.rb
worker_processes 2

app_path = "/var/lib/redmine"

listen 54321
pid File.expand_path('tmp/unicorn.pid', app_path)
stderr_path File.expand_path('log/unicorn.stderr.log', app_path)
stdout_path File.expand_path('log/unicorn.stdout.log', app_path)

preload_app true


timeout 30

if GC.respond_to?(:copy_on_write_friendly=)
  GC.copy_on_write_friendly = true
end

before_fork do |server, worker|
  defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect!

  old_pid = "#{server.config[:pid]}.oldbin"
  if old_pid != server.pid
    begin
      sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU
      Process.kill(sig, File.read(old_pid).to_i)
    rescue Errno::ENOENT, Errno::ESRCH
    end
  end
end

after_fork do |server, worker|
  defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection
end

サービス登録

systemctl start  redmine-unicorn
systemctl enable redmine-unicorn
# ちゃんと起動しているか確認
systemctl status redmine-unicorn

5.3.3.8.プラグイン設定

cd /var/lib/redmine/plugins

git clone https://github.com/suer/redmine_absolute_dates.git
git clone https://github.com/tkusukawa/redmine_work_time.git

#DB登録
bundle exec rake redmine:plugins:migrate RAILS_ENV=production

#サービス再起動し、ステータス確認
systemctl restart redmine-unicorn
systemctl status  redmine-unicorn

注意
プラグインは1つ入れる都度、サービスを再起動して確認したほうがいいです。まとめて作業すると、どれが原因でうまくいかないのかわからなくなって、ほんとにひどい目に合うから。

5.3.4.Gitbucketインストール

5.3.4.1.基本設定

# Javaのインストール
yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel-1.8.0-devel

# tomcatのインストール
cd /usr/local/src
wget http://ftp.tsukuba.wide.ad.jp/software/apache/tomcat/tomcat-9/v9.0.59/bin/apache-tomcat-9.0.59.tar.gz
tar -xvzf apache-tomcat-9.0.59.tar.gz
rm -f apache-tomcat-9.0.59.tar.gz
mv apache-tomcat-9.0.59 /var/lib/tomcat

useradd -s /sbin/nologin tomcat
chown -R tomcat:tomcat  /var/lib/tomcat

5.3.4.2.tomcatサービス化

vi /etc/systemd/system/tomcat.service
/etc/systemd/system/tomcat.service
[Unit]
Description=Apache Tomcat 9
After=redmine-unicorn

[Service]
User=tomcat
Group=tomcat
Type=oneshot
PIDFile=/var/lib/tomcat/tomcat.pid
RemainAfterExit=yes

ExecStart=/var/lib/tomcat/bin/startup.sh
ExecStop=/var/lib/tomcat/bin/shutdown.sh
ExecReStart=/var/lib/tomcat/bin/shutdown.sh;/var/lib/tomcat/bin/startup.sh

[Install]
WantedBy=multi-user.target

ちゃんと起動しているか確認してください。

chmod 755 /etc/systemd/system/tomcat.service
systemctl start tomcat
systemctl enable tomcat

5.3.4.3.DB登録

H2が内蔵されているけど、外部DBを使うことが推奨されています。
まずはそれ用のユーザとデータベース作成

sudo -u postgres createuser -P gitbucket
sudo -u postgres createdb -E UTF-8 -l ja_JP.UTF-8 -O gitbucket -T template0 gitbucket

tomcatにgitbucketをデプロイし…

cd /var/lib/tomcat/webapps
wget https://github.com/gitbucket/gitbucket/releases/download/4.39.0/gitbucket.war

データベース設定を変更

vi /home/tomcat/.gitbucket/database.conf
/home/tomcat/.gitbucket/database.conf
db {
  url = "jdbc:postgresql://localhost/gitbucket"
  user = "gitbucket"
  password = "gitbucket"
#  url = "jdbc:h2:${DatabaseHome};MVCC=true"
#  user = "sa"
#  password = "sa"
#  connectionTimeout = 30000
#  idleTimeout = 600000
#  maxLifetime = 1800000
#  minimumIdle = 10
#  maximumPoolSize = 10
}

ついでにプラグインも入れておこう

cd /home/tomcat/.gitbucket/plugins
wget https://github.com/mrkm4ntr/gitbucket-network-plugin/releases/download/1.9.2/gitbucket-network-plugin_2.13-1.9.2.jar
wget https://github.com/yoshinorin/gitbucket-monitoring-plugin/releases/download/v5.1.0/gitbucket-monitorting-plugin-5.1.0.jar
wget https://github.com/yoshinorin/gitbucket-application-logs-plugin/releases/download/v3.2.0/gitbucket-application-logs-plugin-3.2.0.jar

サービス再起動をして状況確認

systemctl restart tomcat
systemctl status  tomcat

5.3.5.Apache設定

プロキシになってもらいます。

#インストール(多分もともと入ってる?)
yum -y install httpd httpd-devel

#プロキシ設定が有効化されているか確認
# mod_proxy.soとmod_proxy_ajp.soが記載されており、コメント行になっていないことを確認します。
cat /etc/httpd/conf.modules.d/00-proxy.conf

vi /etc/httpd/conf.d/virtualhost.conf
/etc/httpd/conf.d/virtualhost.conf
<VirtualHost *:80>
    ProxyPreserveHost On

    ProxyPass /gitbucket http://localhost:8080/gitbucket/
    ProxyPassReverse /gitbucket http://localhost:8080/gitbucket/

    ProxyPass /redmine http://localhost:54321/
    ProxyPassReverse /redmine http://localhost:54321/

    ProxyPass / http://localhost:54321/
    ProxyPassReverse / http://localhost:54321/
</VirtualHost>

サービスを登録します。

systemctl start httpd
systemctl enable httpd
systemctl status httpd

6.これで一応

http://localhost/redmine/  -> Redmine
http://localhost/gitbucket/ -> Gitbucket
が起動します。メインがRedmineだったので、localhostだけでもRedmineに行けるようにはしてあります。
お疲れさまでした。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?