Debian GNU/Linux上にRedmine(5.0.5)を構築する

Debian GNU/Linux 上に Redmine 5.0.5 を構築する手順です

※nginx、mariadbのインストールや設定も含んだ手順になっています。
(ちなみに Tera Term Pro で SSH接続して操作しています)

  1. Virtual Box ネットワーク設定
    「NAT」設定なので構築後の Redmine へhttpアクセスするための「ポートフォワーディング」設定をする(これをやらないと動作確認とかできない)




    名前 プロトコル ホストIP ホストポート ゲストIP ゲストポート
    HTTP TCP 192.168.1.19 80 10.0.2.15 80
    Redmine Test TCP 192.168.1.19 3000 10.0.2.15 3000

    Redmineテスト用Webサーバ「WEBrick」(Rails)への接続(3000)と、Redmine構築後の正規の接続(80)の2つを追加登録する

    ※上記IPの内容の調べ方は、「Virtual Box 上の Linux に SSH接続できるようにする設定」をご参考に。

  2. Debian GNU/Linux に root でログイン
    ※Tera Term Pro用 ログインマクロ公開中。(公開ページ)
  3. Network Security Service ライブラリ
    # apt-get install libnss3-tools

  4. 必要なパッケージ
    # apt-get install build-essential zlib1g-dev libssl-dev libreadline-dev libyaml-dev libcurl4-openssl-dev libffi-dev

  5. Webサーバー「nginx」パッケージ
    # apt-get install nginx

  6. nginx 設定

    redmine用の設定ファイル作成

    # cd /etc/nginx/conf.d/
    # vi redmine.conf
    (以下を入力して保存(wq!)
    upstream unicorn-redmine {
      server unix:/usr/share/redmine/tmp/sockets/unicorn_redmine.sock;
    }
    
    server {
      listen 80;
      server_name 127.0.0.1;
    
      root /usr/share/redmine/public;
      client_max_body_size 1G;
    
      location / {
        try_files $uri/index.html $uri.html $uri @app;
      }
    
      location @app {
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_connect_timeout 60;
        proxy_read_timeout 60;
        proxy_send_timeout 600;
        proxy_pass http://unicorn-redmine;
      }
    
      error_page 500 502 503 504 /500.html;
    }
    

    デフォルト設定削除(デフォルト設定とredmine.confの設定と被るのか、これをしないとポート80でredmineにアクセスできない)

    # cd /etc/nginx/sites-enabled/
    # ls
    default@
    # rm default   ← シンボリックリンクを削除する
  7. DBサーバー「mariadb」パッケージ (2つ)
    # apt-get install mariadb-server

    # apt-get install libmariadb-dev-compat

  8. mariadb 初期設定
    ※ root パスワード “password”、各設問はすべて”Y”を入力 として進める

    # mysql_secure_installation

  9. mariadb 接続確認
    # mysql -u root -ppassword -DB mysql

  10. ruby パッケージ (2つ)
    # apt-get install ruby

    # apt-get install ruby-dev

  11. Ruby On Rails パッケージ (Ruby Gems)
    # gem install rails

  12. Redmine インストール
    1. ソースダウンロード
      # cd /root/
      # wget https://www.redmine.org/releases/redmine-5.0.5.tar.gz --no-check-certificate

      ※以降の画像は5.0.4ですが、5.0.5ソースでも同じイメージになります

    2. ハッシュ値チェック
      # sha256sum redmine-5.0.5.tar.gz
      a89ad1c4bb9bf025e6527c77ab18c8faf7749c94a975caf2cfdbba00eb12a481  redmine-5.0.5.tar.gz


      ※ハッシュ値は Redmineサイトで確認できます

    3. ソース解凍
      # tar zxvf redmine-5.0.5.tar.gz

      # ls -l
      drwxrwxr-x 17 redmine redmine    4096 12月  2 00:40 redmine-5.0.5/
      -rw-r--r--  1 root    root    3114593 12月  2 00:40 redmine-5.0.5.tar.gz

    4. ソース移動
      # mv redmine-5.0.5/ /usr/share/redmine
    5. Redmine DB設定
      # cd /usr/share/redmine/config/
      # cp database.yml.example database.yml
      # vi database.yml
      (以下"username:"、"password:"の2項目を変更)
      production:
      ..
      username: redmine
      password: "password"
      ..

    6. bundler パッケージ (Ruby Gems)
      # gem install bundler

    7. openssl パッケージ (Ruby Gems)
      # gem install openssl

    8. mysql2 パッケージ (Ruby Gems) ※mariadbもこれを使用
      # gem install mysql2:0.5.4 --source 'https://rubygems.org/'

    9. bundle インストール (正直この辺りは何やってるかよくわからない…)
      # cd /usr/share/redmine
      # bundle install --without development test rmagick

    10. rake (正直この辺りは何やってるかよくわからない…)
      # bundle exec rake generate_secret_token
    11. DB設定 (mariadb上に Redmine用オブジェクト生成 → DB生成、ユーザー生成、権限設定)
      • Maria DB にログイン
        # mysql -u root -ppassword -DB mysql
        MariaDB [mysql]> 
      • DBを生成
        MariaDB [mysql]> CREATE DATABASE redmine CHARACTER SET utf8mb4;
      • ユーザーを生成
        MariaDB [mysql]> CREATE USER redmine IDENTIFIED BY 'password';
      • 権限を付与(1)
        MariaDB [mysql]> GRANT ALL PRIVILEGES ON redmine.* TO redmine@"%" WITH GRANT OPTION;
      • 権限を付与(2) (だと思う)
        MariaDB [mysql]> GRANT PROCESS ON *.* TO redmine;
      • Maria DB からログアウト
        MariaDB [mysql]> exit
    12. DBマイグレーション (Redmineに必要なテーブルを mariadb.redmine(DB) に生成)
      # bundle exec rake db:migrate RAILS_ENV=production

    13. Redmine テスト起動 (Rails 簡易Webサーバー「WEBrick」起動)
      # rails s -e production

    14. Redmine アクセス (動作確認)
      ブラウザで
      http://192.168.1.19:3000/ にアクセス

    15. Rails 簡易Webサーバー「WEBrick」停止
      コンソールで Ctrl + C で停止

    16. unicorn 設定 (正直この辺りは何やってるかよくわからない…)
      # cd /usr/share/redmine
      # vi Gemfile.local
      gem "unicorn"
    17. bundle 更新 (正直この辺りは何やってるかよくわからない…)
      # bundle update

    18. unicorn 設定ファイル作成
      # cd /usr/share/redmine/config
      # vi unicorn.rb
      (以下内容を入力して保存)
      worker_processes 2
      
      app_path = "/usr/share/redmine"
      
      listen  File.expand_path('tmp/sockets/unicorn_redmine.sock', app_path)
      pid File.expand_path('tmp/pids/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

    19. redmineサブディレクトリ起動 設定①
      # cd /usr/share/redmine/
      # vi config.ru
      (以下内容を入力して保存)
      #run Rails.application   ← コメント化して以下を追加
      map ActionController::Base.relative_url_root || "/" do
        run RedmineApp::Application
      end
    20. redmineサブディレクトリ起動 設定②
      # cd /usr/share/redmine/config/
      # vi environment.rb
      (末尾に以下を追加)
      ActionController::Base.relative_url_root = "/redmine"
  13. unicorn サービス設定
    # cd /usr/lib/systemd/system/
    # vi redmine-unicorn.service
    (以下内容を入力して保存)
    [Unit]
    Description=Redmine Unicorn Server
    After=mariadb.service
    
    [Service]
    WorkingDirectory=/usr/share/redmine
    Environment=RAILS_ENV=production
    SyslogIdentifier=redmine-unicorn
    PIDFile=/usr/share/redmine/tmp/pids/unicorn.pid
    
    ExecStart= /usr/share/redmine/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

  14. unicorn 起動
    # systemctl start redmine-unicorn
  15. unicorn 状態確認
    # systemctl status redmine-unicorn

  16. unicorn サービス登録
    # systemctl enable redmine-unicorn

    ※OS再起動してもRedmineが自動起動する

  17. Redmine アクセス
    ブラウザで
    http://192.168.1.19/redmine/ にアクセス


    ※アクセスできない場合は、サーバー再起動をしてからアクセスしてみてください

    # reboot

「Redmine 構築!」に戻る