Redmineサーバーの構築

# 概要
Redmineをインストールします。
今回はBitnamiを使用せずに、公式手順に従ってインストールに挑戦してみます。

https://www.redmine.org/projects/redmine/wiki/RedmineInstall

# 検証環境
Microsoft Hyper-V Serverにて、Redmineサーバーとなる仮想マシンを構築しました。

## Redmine用サーバー

<table>
   <tr>
     <td>OS</td>
     <td>Ubuntu 20.04.3 LTS</td>
   </tr>
   <tr>
     <td>IP</td>
     <td>192.168.137.62</td>
   </tr>
   <tr>
     <td>hostname</td>
     <td>redmine</td>
   </tr>
   <tr>
     <td>Redmine</td>
     <td>Version 4.2.3</td>
   </tr>
</table>

# 構築手順
## Redmineのインストール
1. [Redmineサーバー](#redmine用サーバー)に接続します。

1. 以下コマンドを実行し、redmineユーザーを作成し、sudoグループに追加します。

    ```Bash:redmine
    $ sudo useradd -m -s /bin/bash redmine
    $ sudo passwd redmine
      "redminepass"と入力
    $ sudo usermod -G sudo redmine
    ```

1. [Redmineサーバー](#redmine用サーバー)にredmineユーザーとして接続します。

1. 以下コマンドを実行し、Ruby2.7をインストールします。

    ```Bash:redmine
    $ sudo apt-add-repository ppa:brightbox/ruby-ng
    $ sudo apt-get update
    $ sudo apt-get install -y ruby2.7 ruby2.7-dev
    ```

1. 以下コマンドを実行し、PostgreSQLをインストールします。

    ```Bash:redmine
    $ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
    $ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
    $ sudo apt-get update
    $ sudo apt-get -y install postgresql libpq-dev
    ```

1. 以下コマンドを実行し、postgresユーザーのパスワードを"postgres"に設定します。

    ```Bash:redmine
    $ sudo passwd postgres
        "postgres"と入力
    ```

1. 以下コマンドを実行し、Redmineをダウンロードします。

    ```Bash:redmine
    $ wget https://www.redmine.org/releases/redmine-4.2.3.tar.gz
    $ tar -zxvf redmine-4.2.3.tar.gz
    $ rm redmine-4.2.3.tar.gz
    ```

1. 以下コマンドを実行し、PostgreSQLデータベース内にredmineユーザーとredmineデータベースを作成します。

    ```Bash:redmine
    $ su - postgres
        "postgres"と入力
    $ psql
    postgres=# CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD 'my_password' NOINHERIT VALID UNTIL 'infinity';
    postgres=# CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;
    postgres=# \q
    $ exit
    ```

1. 以下コマンドを実行し、Redmineにデータベースの設定をします。

    ```Bash:redmine
    $ cp redmine-4.2.3/config/database.yml.example redmine-4.2.3/config/database.yml
    $ vi redmine-4.2.3/config/database.yml
      production:
        adapter: postgresql
        database: redmine
        host: localhost
        username: redmine
        password: "my_password" 
        encoding: utf8
        schema_search_path: public
    ```

1. 以下コマンドを実行し、依存関係をインストールします。

    ```Bash:redmine
    $ sudo apt-get install -y build-essential libmysqlclient-dev
    $ sudo apt-get install -y git
    $ cd redmine-4.2.3/
    $ sudo gem update -N --system
    $ sudo gem install bundler
    $ sudo bundle install --without development test
    ```

1. 以下コマンドを実行し、シークレットトークンを生成します。

    ```Bash:redmine
    $ bundle exec rake generate_secret_token
    ```

1. 以下コマンドを実行し、データベースにマイグレーションします。

    ```Bash:redmine
    $ RAILS_ENV=production bundle exec rake db:migrate
    ```

1. 以下コマンドを実行し、データベースに初期値を挿入します。

    ```Bash:redmine
    $ RAILS_ENV=production REDMINE_LANG=ja bundle exec rake redmine:load_default_data
    ```

1. 以下コマンドを実行し、ファイルの権限を変更します。

    ```Bash:redmine
    $ mkdir -p tmp tmp/pdf public/plugin_assets
    $ sudo chown -R redmine:redmine files log tmp public/plugin_assets
    $ sudo chmod -R 755 files log tmp public/plugin_assets
    ```

1. 以下コマンドを実行し、サーバーを起動します。

    ```Bash:redmine
    $ bundle exec rails server webrick -e production
    ```

1. ブラウザにて[Redmineサーバー](#redmine用サーバー)に接続します。
ポート番号は3000を指定してください。
![Redmine画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1564963/52a1776d-7bfe-e48b-b676-3d8082040c6e.png)

1. 右上にある「ログイン」を押し、ログインIDに"admin"、パスワードに"admin"と入力し、ログインします。
![Redmine_ログイン画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1564963/d683165a-69ba-dfdd-905e-721e6bb4ffcd.png)

1. パスワードに"admin"、新しいパスワード、パスワードの確認に"redmineadmin"と入力し、「適用」を押します。
![Redmine_パスワード変更画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1564963/0e3e5d67-3283-edaf-20fb-1afc713e8659.png)

1. この画面まで到達したら、いったんブラウザを閉じます。
![Redmine_個人設定画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1564963/fdeaa146-2c55-44e7-8bde-f5ca04656ca0.png)

1. シェルに戻り、Ctrl+Cでプロセスを強制終了します。
![プロセス強制終了](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1564963/6bb724ec-8a97-baff-936b-cb236cca2ece.png)

1. 以下コマンドを実行し、Apache2をインストールします。

    ```Bash:redmine
    $ sudo apt-get install -y apache2
    ```

1. 以下コマンドを実行し、libapache2-mod-passengerをインストールします。

    ```Bash:redmine
    $ sudo apt-get install -y dirmngr gnupg
    $ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7
    $ sudo apt-get install -y apt-transport-https ca-certificates

    $ sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger focal main > /etc/apt/sources.list.d/passenger.list'
    $ sudo apt-get update
    $ sudo apt-get install -y libapache2-mod-passenger
    ```

1. 以下コマンドを実行し、Apache2で使用するPassengerモジュールの設定を行います。

    ```Bash:redmine
    $ sudo vi /etc/apache2/mods-available/passenger.conf
    ```

    ```conf:passenger.conf
    <IfModule mod_passenger.c>
      #  以下を追記
      PassengerDefaultUser redmine
    </IfModule>
    ```

    ```Bash:redmine
    $ sudo a2enmod passenger
    $ sudo apache2ctl configtest
    ```

1. 以下コマンドを実行し、Apatch2のサイト設定を行います。

    ```Bash:redmine
    $ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/redmine.conf
    $ sudo vi /etc/apache2/sites-available/redmine.conf
    ```

    ```conf:redmine.conf
    <VirtualHost *:80>
      ServerAdmin redmine@redmine
      DocumentRoot /home/redmine/redmine-4.2.3/public/
      RailsEnv production
      RailsBaseURI /
      PassengerAppRoot /home/redmine/redmine-4.2.3
    </VirtualHost>
    ```

    ```Bash:redmine
    $ sudo a2dissite 000-default
    $ sudo a2ensite redmine
    $ sudo apache2ctl configtest
    $ sudo vi /etc/apache2/conf-available/redmine.conf
    ```

    ```conf:redmine.conf
    <Directory "/home/redmine/redmine-4.2.3/public">
      Require all granted
    </Directory>
    ```

    ```Bash:redmine
    $ sudo a2enconf redmine
    $ sudo apache2ctl configtest
    ```

1. 以下コマンドを実行し、Apache2を再起動します。

    ```Bash:redmine
    $ sudo systemctl restart apache2
    ```

## 動作確認
1. ブラウザにて[Redmineサーバー](#redmine用サーバー)に接続します。
![Redmine画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1564963/ef5b761d-702a-b8b4-f0bf-5ecdb067a207.png)

1. 右上にある「ログイン」を押し、ログインIDに"admin"、パスワードに"redmineadmin"と入力し、ログインします。
![Redmine_ログイン画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1564963/7d91b347-0a0a-994c-257f-941047ab3baf.png)

1. 以下のようにログイン出来たら完成です。
![Redmine_ホーム画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1564963/4f2d3dae-aaa7-780b-b677-fb1404a7f629.png)