見出し画像

自宅サーバーにRedmine環境構築してみた


はじめに

この記事の対象

  • redmine の環境構築方法が知りたい方

  • redmine のバージョンアップ方法が知りたい方

ここでやること

  • ローカルサーバーにSSH経由でredmine環境構築

  • 構築したredmineのバージョンアップ

環境情報

  • Ubuntu Server 24.04

0. SSH接続

本記事では「リモートでサーバーにredmineの環境構築を行う」ていで作業していきたいのでSSH経由での構築を行います。

接続方法、SSHの設定は以下記事にまとめましたのでご参考になさってください(o_ _)o

1. パッケージのインストール

ubuntu のパッケージリポジトリから必要なものをインストールしましょう

$ sudo apt update
$ sudo apt install -y build-essential libssl-dev libreadline-dev zlib1g-dev libmysqlclient-dev ruby-full

コマンドの内容

  • sudo コマンド:

    • 管理者権限でコマンドを実行します

  • apt コマンド:

    • Linux でのパッケージ管理用コマンドです。ここでは install を指定し、パッケージをインストールしています

  • -y オプション:

    • パッケージのインストール中に確認プロンプトが表示されず、自動的に「はい」が選択される

インストールしているパッケージの内容

  • build-essential:

    • これはビルドに必要な基本的なツールセット。C/C++コンパイラやmakeなどが含まれる。

    • パッケージのインストールにはこれが必要。

  • libssl-dev:

    • OpenSSLの開発ライブラリです。SSL/TLS通信をサポートするために必要。

  • libreadline-dev:

    • GNU Readlineライブラリの開発バージョンです。コマンドラインの履歴や編集機能を提供する。

  • zlib1g-dev:

    • zlibの開発ライブラリ。データの圧縮と伸張を行うために使用。

  • libmysqlclient-dev:

    • MySQLクライアントの開発ライブラリ。MySQLデータベースとの連携に必要。

  • ruby:

    • スクリプト言語の一つ。Redmineはrubyのフレームワークで開発されており、動作際に必要

2. データベースのセットアップ

Redmineは、データベースを使用してデータを管理します。今回は、MySQLをで環境構築を進めてみましょう。

2.1 MySQLサーバーのインストール・セキュリティ設定

$ sudo apt install -y mysql-server
$ sudo mysql_secure_installation

コマンドの内容

  • mysql_secure_installation:

    • mysql のセキュリティを強化するコマンド。以下記事がわかりやすかったです

2.2 ユーザーの作成

設定が完了したら、Redmine用のデータベースとユーザーを作成します。

$ sudo mysql -u root -p

コマンドの内容

  • -u オプション:

    • ユーザー名を指定する

  • -p オプション:

    • パスワードを指定する

    • (注意!) コマンド実行後に設定したいパスワードを聞かれるので、コマンド実行と同時に平文でパスワードを入力しないこと。(コマンド履歴にパスワードが載ってしまう)

2.3 DB の作成

> CREATE DATABASE redmine CHARACTER SET utf8mb4;
> CREATE USER '<任意のユーザー名>'@'localhost' IDENTIFIED BY '<設定したいパズワード>';
> GRANT ALL PRIVILEGES ON redmine.* TO 'redmineuser'@'localhost';
> FLUSH PRIVILEGES;
> EXIT;

コマンドの内容

  • CREATE DATABASE redmine CHARACTER SET utf8mb4;:

    • Redmine用のデータベースを作成

    • 文字セットはUTF8MB4(UTF-8の拡張)で設定

  • CREATE USER 'redmineuser'@'localhost' IDENTIFIED BY 'your_password';:

    • ユーザー名が 'redmineuser' で、ホストが 'localhost' のユーザーを作成

  • GRANT ALL PRIVILEGES ON redmine.* TO 'redmineuser'@'localhost';:

    • 2行目で作成したユーザーに対して、Redmineデータベースのすべての権限を付与します。

  • FLUSH PRIVILEGES;:

    • 権限の変更を適用するためにMySQLの特定のテーブルをリロード

  • EXIT;:

    • MySQLクライアントからログアウトして終了

3. Redmineのダウンロードとインストール

いよいよ Redmineをインストールしていきましょう

$ cd /var/www
$ sudo wget http://www.redmine.org/releases/redmine-<インストーするバージョン番号>.tar.gz
$ sudo tar -xvzf redmine-4.2.0.tar.gz
$ sudo mv redmine-<インストールしたバージョン番号> redmine
$ cd redmine

コマンドの内容

  • wget:

    • ウェブ上のファイルをダウンロードするためのコマンドラインツール

    • HTTP, HTTPS, FTP 対応

  • tar:

    • ダウンロードしたRedmineのパッケージを展開する。

    • -x:

      • アーカイブからファイルを抽出するオプション

    • -v:

      • コマンド実行中の実行内容を表示させるオプション

    • -z:

      • 圧縮されたアーカイブ(通常は .tar.gz.tgz ファイル)を解凍させるオプション

    • -f:

      • 展開したいアーカイブファイルを指定する(ここでは、2行目でダウンロードしたファイルを指定している)

  • mv:

    • ディレクトリ名を変更する

    • ここでは、展開されたRedmineのディレクトリ名を redmine-4.2.0 から redmine に変更している。

4. DB接続の設定

4.1 config/database.yml の設定

Redmine で使う DB に、2でセットアップした MySQL の DB を指定しましょう

$ sudo nano config/database.yml

config/database.yml に以下内容を追記しましょう

production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: <セットアップ時に設定したユーザー名>
  password: "<セットアップ時に設定したパスワード>"
  encoding: utf8mb4

4.2 ruby(gem) のパッケージリポジトリから必要なものをインストール

$ sudo gem install bundler

コマンドの内容

  • gem コマンド:

    • rubyのライブラリ管理ツール、gem を動作させるコマンド。

    • ここでは install をして必要なパッケージをインストールしている

インストールしているライブラリの内容

  • bundler:

    • ruby の依存関係を管理するライブラリ

    • 環境によって ruby のバージョンを使い分けることを可能にする

    • redmine の実行に必要なgemを管理してくれるので、rubyとgemのインストールを別々に行う必要がなくなり、作業がより効率的になる

4.3 DBのマイグレーション

$ bundle exec rake generate_secret_token
$ RAILS_ENV=production bundle exec rake db:migrate

コマンドの内容

  • bundle exec rake generate_secret_token:

    • bundle exec:

      • bundlerを使用してGemfileに記載されたRubyプロジェクトの依存関係を管理。

      • bundle execを付けることで、プロジェクトのGemバージョンを使用してコマンドを実行できる。

    • rake:

      • Rubyプロジェクトでタスクを実行するためのビルトインツール。

      • Rakefileに定義されたタスクを実行します。

    • generate_secret_token:

      • Railsアプリケーションのconfig/secrets.ymlファイルに新しいシークレットトークンを生成・追加。

      • シークレットトークンはセッション管理や暗号化などのセキュリティ機能で使用。

  • RAILS_ENV=production bundle exec rake db:migrate:

    • RAILS_ENV=production:

      • Railsアプリケーションを config/database.yml 記載の環境で実行するために環境変数を設定している。

    • bundle exec rake db:migrate:

      • データベースのマイグレーションを実行。データベーススキーマの変更を適用するために使用される。

      • db:migrateはRailsのタスクで、db/migrateディレクトリ内のマイグレーションファイルを実行します。

5. Redmine の起動

ここまでで準備は整いました。後は起動させるだけです!
もう少し頑張りましょう

$ bundle exec rails server -u webrick -e production

コマンド内容

  • rails server:

    • Railsアプリケーションを実行するためのコマンド。

  • -u:

    • 実行するサーバーを指定する。

    • デフォルトではPumaサーバーが起動するが、ここでは 開発用に使用されることの多い webrick を使用している。

  • -e production:

    • Railsアプリの実行環境を指定する。

6. ブラウザからアクセス

ブラウザで構築したRedmine にアクセスしてみましょう

http://<サーバーのipアドレス>:3000

以下のような画面が表示されれば成功です(*^ワ^*)

おまけ

おまけ.1 自動起動設定

サーバー再起動時にRedmineが自動で起動するように設定してみましょう
redmine.service ファイルを編集します

$ sudo nano /etc/systemd/system/redmine.service

以下内容をコピペしてください

[Unit]
Description=Redmine
After=network.target

[Service]
Type=simple
User=www-data
WorkingDirectory=/var/www/redmine
ExecStart=/usr/bin/bundle exec rails server -u webrick -e production
Restart=always

[Install]
WantedBy=multi-user.target

記載内容に関しては、こちらの記事参考になさってみてください。(丸投げすまぬ(;人;))

ファイルを保存して終了後、サービスを有効化します。

$ sudo systemctl enable redmine
$ sudo systemctl start redmine

おまけ.2 Redmineのバージョンアップ手順

  1. サーバーのバックアップ:

    • まず、データベースとファイルのバックアップを取ります。(バックアップ方法は只今手元で実験し、記事執筆中)

  2. Redmineのダウンロード:

    • 最新バージョンを公式サイトからダウンロードし、現在のインストールディレクトリに上書きします。

  3. データベースのマイグレーション:

    • 新しいバージョンに対応するために、データベースを更新します。

bundle exec rake db:migrate RAILS_ENV=production

4 . サービスの再起動

sudo systemctl restart redmine

さいごに

今回はだいぶ駆け足で 自宅サーバーに Redmine の環境構築を行ってみました。

web サーバーが 簡易的なHTTPサーバだったり、rubyの依存関係周りで発生しそうなトラブルの回避方法等端折てしまいましたが、別の記事で別個まとめたいと思います。


この記事が気に入ったらサポートをしてみませんか?