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


背景

仕事でUbuntu 22.04 LTS上にApacheMySQLを組み合わせて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           

Ubuntuのセットアップ

基本設定

  1. ユーザー「redmine」の作成
    adduserコマンドでユーザーを作成する。
adduser redmine
  1. ユーザーにsudo権限を付与
    作成したユーザーにsudo権限を与える。
sudo gpasswd -a redmine sudo
  1. rootユーザーのパスワード設定
    passwdコマンドでrootユーザーのパスワードを設定する。
sudo passwd root
  1. ホスト名設定
    hostnamectlコマンドでホスト名を設定する。
hostnamectl set-hostname "変更後のホスト名"
  1. ターミナルの警告音を無効化
    inputrcファイルを編集し、警告音を無効にする。
sed -i -e "s/# set bell-style none/set bell-style none/g" /etc/inputrc
  1. Vimでの警告音を無効化
    vimrcに設定を追加する。
echo "set belloff=all" >> /etc/vim/vimrc
  1. 起動時初期ディレクトリの設定
    起動時にルートディレクトリに遷移するスクリプトを作成する。
sudo nano /etc/profile.d/startdir.sh

スクリプト内容:

#startdir.sh
#!/bin/bash
cd ~
  1. ライブラリのインストール
    パッケージリストを最新化し、モジュールを更新する。
sudo apt update
sudo apt upgrade -y
  1. 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. 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
  1. ファイルのパーミッションを変更
    netplanの設定ファイルの権限を設定する。
sudo chmod 600 /etc/netplan/99_config.yaml
  1. 設定の反映
    netplanコマンドを使用して設定を反映する。
sudo netplan apply
  1. IPアドレスの確認
    ip addrコマンドでIPアドレスを確認する。
ip addr

プロキシ設定

プロキシ環境下での設定方法を説明する。社内ネットワークで通信する場合は必須となるが、直接通信している場合は省略可能。

  1. proxy.confの設定
    プロキシサーバーのIPアドレスを指定する。
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:<ポート番号>";
  1. wget/aptコマンドの設定
    wgetrcにプロキシサーバのIPアドレスを指定する。
sudo nano /etc/wgetrc
http_proxy = http://xxx.xxx.xxx.xxx:<ポート番号>
https_proxy = https://xxx.xxx.xxx.xxx:<ポート番号>
  1. gitコマンドの設定
    gitコマンドのプロキシを設定する。
git config --global http.proxy http://xxx.xxx.xxx.xxx:<ポート番号>
  1. curlコマンドの設定
    curlコマンドのプロキシを設定する。
sudo nano .bashrc
export HTTP_PROXY=http://xxx.xxx.xxx.xxx:<ポート番号>
export HTTPS_PROXY=https://xxx.xxx.xxx.xxx:<ポート番号>

その他設定

  1. NTP設定
    timesyncd.confにNTPサーバのIPアドレスを指定する。
sudo nano /etc/systemd/timesyncd.conf
NTP=http://xxx.xxx.xxx.xxx
  1. 自動スリープ無効化
    リモートでの操作を前提とするため、スリープモードを無効にする。
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
  1. rootのSSH接続を許可
    sshd_configファイルを編集し、rootでのSSH接続を許可する。
sudo nano /etc/ssh/sshd_config
PermitRootLogin yes
service sshd restart

MySQLのセットアップ

MySQLのインストール

  1. MySQLのインストール
    以下のコマンドを実行し、MySQL 8.0.30をインストールする。
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
  1. MySQLの稼働確認
    systemctlコマンドでMySQL

稼働しているかを確認する。

systemctl status mysql
  1. MySQLの初期設定
    mysql_secure_installationコマンドを実行し、安全性を高めるための設定を行う。
sudo mysql_secure_installation

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

  1. MySQLシェルの起動
    MySQLシェルを起動する。
mysql -u root -p
  1. データベースとユーザーの作成
    Redmine用のデータベースとユーザーを作成する。my_passwordは適宜変更すること。
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;

Rubyのセットアップ

rbenvのインストール

  1. rbenvのインストール
    以下のコマンドでrbenvをインストールし、初期設定を行う。
sudo apt install -y rbenv
rbenv init
  1. 設定の反映
    .bashrcに以下を追加し、設定を反映させる。
eval "$(rbenv init -)"
source .bashrc

Rubyのインストール

  1. ruby-buildのインストール
    ruby-buildをインストールし、準備を整える。
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
  1. Rubyのインストール
    rbenvを使ってRubyをインストールし、バージョンを設定する。
rbenv install 3.2.4
rbenv global 3.2.4
ruby -v

Redmineのセットアップ

Redmineのインストール

  1. Redmineのダウンロードと展開
    最新版をダウンロードし、展開する。
wget https://www.redmine.org/releases/redmine-5.1.2.tar.gz
cd /opt
sudo tar xvf ~/redmine-5.1.2.tar.gz
  1. リンクの作成と所有者変更
    リンクを作成し、所有者を変更する。
sudo ln -s redmine-5.1.2 redmine
sudo chown -R redmine:redmine redmine/

データベースの設定

  1. Session Store Secretの作成
    セッションストアシークレットを作成する。
RAILS_ENV=production bundle exec rake generate_secret_token
  1. データベース設定ファイルの作成
    database.ymlファイルを作成し、編集する。
sudo cp redmine/config/database.yml.example redmine/config/database.yml
sudo nano redmine/config/database.yml
  1. データベースの初期化
    データベースを初期化し、デフォルトデータをロードする。
RAILS_ENV=production bundle exec rake db:migrate
RAILS_ENV=production bundle exec rake redmine:load_default_data

PassengerとApacheのインストール

Passengerのインストール

  1. Passengerのインストール
    ApacheにPassengerモジュールをインストールする。
sudo apt install apache2 apache2-dev
sudo apt-get install -y libapache2-mod-passenger
sudo systemctl restart apache2
  1. Passenger設定の確認
    設定内容を確認する。
passenger-install-apache2-module --snippet

Apacheの設定

  1. RedmineApache設定
    redmine.confを編集し、RedmineApacheで動作させる設定を行う。
sudo nano /etc/apache2/sites-available/redmine.conf
  1. Apacheに設定を反映
    ApacheRedmineの設定を組み込み、サーバーを再起動する。
sudo a2ensite redmine
sudo systemctl restart apache2

CORSの設定

  1. Rack CORS Middlewareのインストール
    Gemfile.localにCORS設定を追加し、インストールする。
cd /opt/redmine
sudo nano Gemfile.local
gem 'rack-cors'
bundle install
  1. CORS設定ファイルの作成
    CORSの設定をconfig/initializers/cors.rbに追加する。
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

サーバーの起動確認

ブラウザで以下のURLにアクセスし、Redmineが正しくセットアップされているかを確認する。 Redmineの初期ページが表示されれば、正常にセットアップ完了。

http://xxx.xxx.xxx.xxx/redmine