Ubuntu 22.04 LTS+Apache+MySQLでRedmineを構築する手順【完全版】

プログラミング

はじめに

サーバー構築に取り組む中で、Ubuntu 22.04 LTS上にApacheとMySQLを組み合わせてRedmineのセットアップを行った。
この記事では、私が実際に行った全工程を詳細に記録する。

スポンサーリンク
スポンサーリンク

実施した環境

下記の表に、今回使用したツールとそのバージョンを示す。すべての工程は、この環境下での実践に基づく。

ツール バージョン 備考
Ubuntu 22.04 LTS OS(Linux)
Redmine 5.1.2
Ruby 3.2.4
Apache 2.4.52
Phusion Passenger 6.0.22
MySQL 8.0.30

1. Ubuntuのセットアップ

1.1 基本設定

まずはシステムの基本設定から始めた。以下の手順で、システムの基盤を固める。

  1. ユーザー「redmine」の作成
    adduserコマンドで新規ユーザーを作成する。
    adduser redmine
    

    この一手で、専用ユーザーが生まれ、作業環境が区別される。

  2. ユーザーにsudo権限を付与
    作成したユーザーに管理権限を付加する。

    sudo gpasswd -a redmine sudo
    
  3. rootユーザーのパスワード設定
    システム管理の基本、passwdコマンドでrootのパスワードを設定。
    sudo passwd root
    
  4. ホスト名設定
    hostnamectlでホスト名を変更し、環境を明確にする。
    hostnamectl set-hostname "変更後のホスト名"
    
  5. ターミナルの警告音を無効化
    inputrcファイルを編集し、不要な警告音をオフにする。
    sed -i -e "s/# set bell-style none/set bell-style none/g" /etc/inputrc
    
  6. Vimでの警告音を無効化
    Vimの設定ファイルに追記し、操作中の煩わしさを排除する。
    echo "set belloff=all" >> /etc/vim/vimrc
    
  7. 起動時初期ディレクトリの設定
    起動時に自動でホームディレクトリに移動するスクリプトを作成する。
    sudo nano /etc/profile.d/startdir.sh
    

    スクリプト内容は以下の通り。

    #startdir.sh
    #!/bin/bash
    cd ~
    
  8. ライブラリのインストール
    パッケージリストを更新し、システム全体のモジュールを最新化する。
    sudo apt update
    sudo apt upgrade -y
    
  9. manコマンドの日本語化
    日本語のmanページをインストールして、操作時の理解を深める。
    sudo apt update
    sudo apt install manpages-ja manpages-ja-dev language-pack-ja
    sudo update-locale LANG=ja_JP.UTF-8
    man ls
    

1.2 ネットワーク設定

次に、ネットワークの基盤を整える。IPアドレスの割り当てやルーティング設定により、通信環境を確実にする。

  1. netplan設定
    yamlファイルを編集してネットワークの基本設定を実施。
    sudo nano /etc/netplan/00-installer-config.yaml
    

    設定例:

    network:
     ethernets:
       enp0s25:
         addresses: [xxx.xxx.xxx.xxx/24]
         routes:
           - to: default
             via: xxx.xxx.xxx.254
             scope: link
     renderer: networkd
     version: 2
    
  2. ファイルのパーミッションを変更
    設定ファイルの権限を適切に設定し、セキュリティを確保する。
    sudo chmod 600 /etc/netplan/99_config.yaml
    
  3. 設定の反映
    netplan applyコマンドで設定内容を反映。
    sudo netplan apply
    
  4. IPアドレスの確認
    現在のIPアドレスを確認し、設定が正しく反映されたかを検証する。
    ip addr
    

1.3 プロキシ設定

プロキシ環境下での通信が必要な場合、各ツールごとに設定を行う。直接通信の場合はこの工程を省略可能だ。

  1. proxy.confの設定
    apt用のプロキシ設定ファイルを作成し、プロキシサーバのアドレスを指定。
    sudo nano /etc/apt/apt.conf.d/proxy.conf
    

    設定内容:

    Acquire::http::Proxy "http://xxx.xxx.xxx.xxx:<ポート番号>";
    Acquire::https::Proxy "https://xxx.xxx.xxx.xxx:<ポート番号>";
    
  2. wget/aptコマンドの設定
    wgetの設定ファイルにプロキシを記述する。
    sudo nano /etc/wgetrc
    

    例:

    http_proxy = http://xxx.xxx.xxx.xxx:<ポート番号>
    https_proxy = https://xxx.xxx.xxx.xxx:<ポート番号>
    
  3. gitコマンドの設定
    グローバル設定でgitのプロキシを有効にする。
    git config --global http.proxy http://xxx.xxx.xxx.xxx:<ポート番号>
    
  4. curlコマンドの設定
    .bashrcに環境変数としてプロキシ設定を追加する。
    sudo nano ~/.bashrc
    

    以下を追記:

    export HTTP_PROXY=http://xxx.xxx.xxx.xxx:<ポート番号>
    export HTTPS_PROXY=https://xxx.xxx.xxx.xxx:<ポート番号>
    

1.4 その他設定

さらに、時刻同期やリモート操作に関する細かい設定も行った。

  1. NTP設定
    timesyncd.confにNTPサーバのアドレスを指定する。
    sudo nano /etc/systemd/timesyncd.conf
    

    設定例:

    NTP=http://xxx.xxx.xxx.xxx
    
  2. 自動スリープ無効化
    リモート作業を前提に、自動スリープ機能を無効にする。
    sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
    
  3. rootのSSH接続を許可
    SSH接続においてrootログインを許可するため、設定ファイルを編集。
    sudo nano /etc/ssh/sshd_config
    

    PermitRootLogin yesと記述し、サービスを再起動する。

    service sshd restart
    

2. MySQLのセットアップ

2.1 MySQLのインストールと初期設定

MySQL 8.0.30をインストールし、安全性を考慮した初期設定を行った。

  1. MySQLのインストール
    以下の手順でMySQLのパッケージをダウンロードし、インストールを実施。
    cd ~
    wget https://dev.mysql.com/get/mysql-apt-config_0.8.30-1_all.deb
    sudo dpkg -i mysql-apt-config_0.8.30-1_all.deb
    sudo apt update
    sudo apt install -y mysql-server libmysqlclient-dev
    
  2. MySQLの稼働確認
    systemctl status mysqlにより、MySQLが正常に動作しているか確認。
    systemctl status mysql
    
  3. MySQLの初期設定
    セキュリティを強化するため、mysql_secure_installationを実行。
    sudo mysql_secure_installation
    

2.2 データベースとユーザーの作成

Redmine専用のデータベースとユーザーを作成し、アクセス権限を設定する。

  1. MySQLシェルの起動
    MySQLシェルを起動して作業を開始。
    mysql -u root -p
    
  2. データベースとユーザーの作成
    SQLコマンドで、Redmine用のデータベースとユーザーを生成する。
    CREATE DATABASE redmine CHARACTER SET utf8mb4;
    CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'my_password';
    GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';
    FLUSH PRIVILEGES;
    EXIT;
    

3. Rubyのセットアップ

3.1 rbenvのインストールと設定反映

Ruby環境の管理ツールであるrbenvを用い、Rubyのインストール環境を整える。

  1. rbenvのインストール
    以下のコマンドでrbenvをインストールし、初期設定を開始。
    sudo apt install -y rbenv
    rbenv init
    
  2. 設定の反映
    .bashrcに設定を追加し、rbenvの環境変数を読み込ませる。
    eval "$(rbenv init -)"
    source ~/.bashrc
    

3.2 Rubyのインストール

ruby-buildを利用し、必要なRubyバージョンをインストールする。

  1. ruby-buildのインストール
    プラグインとしてruby-buildをrbenvに組み込む。
    cd ~
    mkdir -p "$(rbenv root)"/plugins
    git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
    curl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-doctor | bash
    
  2. Rubyのインストールとバージョン設定
    rbenvを用いてRuby 3.2.4をインストールし、グローバルバージョンに設定する。
    rbenv install 3.2.4
    rbenv global 3.2.4
    ruby -v
    

4. Redmineのセットアップ

4.1 Redmineのインストール

Redmineの最新版をダウンロードし、展開および必要なリンク作成を行う。

  1. Redmineのダウンロードと展開
    最新版のRedmine 5.1.2を取得し、/optディレクトリに展開する。
    wget https://www.redmine.org/releases/redmine-5.1.2.tar.gz
    cd /opt
    sudo tar xvf ~/redmine-5.1.2.tar.gz
    
  2. リンクの作成と所有者変更
    利便性のためシンボリックリンクを作成し、所有者をredmineユーザーに変更する。
    sudo ln -s redmine-5.1.2 redmine
    sudo chown -R redmine:redmine redmine/
    

4.2 データベースの設定

Redmineの動作に必要なセッションストアシークレットの生成、設定ファイルの準備、及びデータベースの初期化を行う。

  1. Session Store Secretの作成
    セッション管理用のシークレットを生成する。
    RAILS_ENV=production bundle exec rake generate_secret_token
    
  2. データベース設定ファイルの作成
    サンプル設定ファイルをコピーし、実際のdatabase.ymlとして編集する。
    sudo cp redmine/config/database.yml.example redmine/config/database.yml
    sudo nano redmine/config/database.yml
    
  3. データベースの初期化
    マイグレーションの実行と、デフォルトデータのロードを行う。
    RAILS_ENV=production bundle exec rake db:migrate
    RAILS_ENV=production bundle exec rake redmine:load_default_data
    

5. PassengerとApacheのインストールおよび設定

5.1 Passengerのインストール

RedmineをApache上で動作させるため、Passengerモジュールをインストールする。

  1. Passengerのインストール
    Apacheと開発用ライブラリをインストール後、Passengerモジュールを追加する。
    sudo apt install apache2 apache2-dev
    sudo apt-get install -y libapache2-mod-passenger
    sudo systemctl restart apache2
    
  2. Passenger設定の確認
    Passengerの設定スニペットを表示し、設定内容を確認する。
    passenger-install-apache2-module --snippet
    

5.2 Apacheの設定

Redmine専用のApache設定ファイルを作成し、サイトを有効化する。

  1. RedmineのApache設定
    /etc/apache2/sites-available/redmine.confを編集し、Redmine動作用の設定を記述する。
    sudo nano /etc/apache2/sites-available/redmine.conf
    
  2. Apacheに設定を反映
    設定ファイルを有効にし、Apacheを再起動して反映させる。
    sudo a2ensite redmine
    sudo systemctl restart apache2
    

5.3 CORSの設定

外部リソースとの連携をスムーズにするため、CORS対応も行う。

  1. Rack CORS Middlewareのインストール
    Gemfile.localにCORS設定を追加し、bundle installを実施する。
    cd /opt/redmine
    sudo nano Gemfile.local
    gem 'rack-cors'
    bundle install
    
  2. CORS設定ファイルの作成
    config/initializers/cors.rbにCORS用の設定を記述する。
    Rails.application.config.middleware.insert_before 0, Rack::Cors do
     allow do
       origins '*'
       resource '*', headers: :any, methods: [:get, :post, :patch, :put, :delete, :options]
     end
    end
    

6. サーバーの起動確認

最後に、ブラウザでRedmineの初期ページにアクセスし、全工程が正しく反映されているか確認する。
アクセスURL例:

初期ページが表示されれば、セットアップは完了。すべての工程が連携し、システムが無事稼働する姿は、まさにはじける達成感を感じさせる瞬間だ。


まとめ

今回の記事は、Ubuntu 22.04 LTS上でRedmine環境を構築するためのすべての工程を、私自身の実践記録として網羅的にまとめた。
これらの手順を順を追って実行することで、複雑な工程がひとつひとつ解消され、最終的には確かなシステムが完成する。

各工程は実環境に合わせて適宜パラメータを調整する必要がある。特にセキュリティ関連の設定は、最新の情報や推奨設定を確認の上、実施することを推奨する。

コメント