ENGINEER BLOG

ENGINEER BLOG

学生時代プログラミングの経験しかない新入社員が基盤構築+M/W設定にチャレンジしてみた

始めまして。インテグレーションサービス本部ソリューションサービス第4の新井です。

まだ入社1年目で、エンジニアブログなんて大それたものを自分が書いてもよいのか不安ではありますが...
ちょうど昨年の11月にプロジェクト管理ツールの環境構築を行ったので、その経験談をつづっていこうと思います。

プロジェクト管理ツール導入の理由

今回導入したプロジェクト管理ツールは「Redmine」です。
Redmineはプロジェクト管理ができるオープンソフトウェアで、やるべき作業や課題を記録・管理し社内で情報共有をすることができます。
全社でリスク・課題管理、バグ管理を行い品質管理レベルをさらに高めるためプロジェクト管理ツールの導入が検討されました。
そこで様々なプロジェクト管理ツールを検討した結果、今までオープン系のチームで導入・利用実績のあるRedmineが候補として挙がり、最新のRedmineを導入するに至りました。

同居案があったけど、新規構築した背景

building_plan

Redmineの構築ですが、最初は現環境でRedmineが動いているインスタンスに、バージョンの新しいRedmineをインストールし、同じインスタンスで同居させて稼働させようという案がありました。

確かにインスタンス1つで済むなら管理コストとか安いし、お得だなと思い進めていくと大きな壁に阻まれました。
それはバージョンの違いによるものでした。

Redmineが動くようにgemをインストールする必要があるのですが、今まで動いていたRedmine用にインストールされてたgemのバージョンと、新しくインストールするRedmine用のgemのバージョンが違い、同居が難しいということが分かりました。
このことを理解するのにかなり時間をかけてしまいました...
このままでは環境構築ができない!と思っていると神の一声が私を救ってくださいました。

「新しいインスタンスを作ってしまおう」と。

ということで、ここからは新しくインスタンスを作成する案のお話になります。

導入の流れ

導入の流れとしては大まかに以下のように行いました。

  • AWS上にインスタンスを構築
  • MWをインストール
  • Redmineとその他のMWがうまく連携するように詳細設定
  • 必要に応じてRedmineのプラグインの導入
  • テストを実施し、納品
  • サーバ監視の設定

今回は上3つについてさっくりお話ししたいと思います。

AWS上にインスタンスを構築

最初に説明を受けたとき、AWS上にサーバを構築しましょう、と聞いていたのですが、お恥ずかしい話、この時までAWSって何?の状態でした(本当に情報系大学出身なのかしら)。
なのでAWSについてネットや参考書を使って勉強した後、実際にRedmine用のサーバを構築しました。
サーバの構築自体は思っていたより簡単で、先輩にサポートしてもらいながら進めることができました。

実際に構築したサーバがこちらです。

instance_details_masking

このサーバにTeratermを使ってアクセスし、必要なMWをインストールしていきます。

MWをインストール

まずは今回の要となるRedmineからインストールしていきます。ということでコマンドを打ちましょう。

$ sudo wget http://www.redmine.org/releases/redmine-3.4.6.tar.gz  

あとは解凍するだけです。場所は各自指定してください。
私の場合は解凍した後に移動させました。
理由は特にありません!

$ sudo tar -xzvf redmine-3.4.6.tar.gz 
$ sudo mv redmine-3.4.6/  /var/lib/redmine/

続きまして、MW達のインストールです。実行コマンドはざっとこんな感じ。

$ yum groups install “Development Tools”
$ yum install openssl-devel readline-devel zlib-devel curl-devel libyaml-devel libffi-devel libcurl-devel apr-devel $ apr-util-devel
$ yum install httpd httpd-devel
$ yum install mysql55 mysql55-server mysql55-devel  
$ yum install ruby24 ruby24-devel
$ gem install bundler

MySQL自体はもっと新しいバージョンがあったのですが、Redmineの公式サイトに推奨されているバージョンが書かれていたので、今回はそれを参考にver5.5をインストールしています。
↓↓参考ページはこちら↓↓
http://guide.redmine.jp/RedmineInstall/

Redmineとその他のMWがうまく連携するように詳細設定

MySQL

さて、必要なものはすべてそろったので、これでお仕事完了。。。
というわけにもいかず、RedmineとMWがちゃんと紐づくように設定をしないとちゃんと動いてくれません。

まずはRedmine用のデータベース作成です。
MySQLを起動し、必要な権限を付けたユーザとデータベースを作成しました。

CREATE DATABASE redmine CHARACTER SET utf8;
CREATE USER 'redmine'@'localhost' IDENTIFIED BY ‘任意のpassword’;
GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';

続いて、作成したデータベースとRedmineがつながるように接続設定を行います。インストールしたRedmineディレクトリの中に/config/database.ymlという設定ファイルがあるのでそれをいじくります。

production:  
adapter: mysql2  
database: redmine  
host: localhost  
username: redmine  
password: 設定したパスワード

これで接続設定はOK!

Apache

あとはRedmineがApache上で稼働できるようにするための設定を行います。

$ gem install passenger
$ passenger-install-apache2-module

2つ目のコマンドを実行すると呪文みたいなものが最後に出力されます。
設定に必要な魔法の言葉なのでメモしましょう。

LoadModule passenger_module  
/home/ec2-user/.gem/ruby/2.4/gems/passenger-5.3.5/buildout/apache2/mod_passenger.so  
\<IfModule mod_passenger.c>  
     PassengerRoot  
     /home/ec2-user/.gem/ruby/2.4/gems/passenger-5.3.5
     PassengerDefaultRuby /usr/bin/ruby2.4  
\</IfModule>

これを/etc/httpd/conf.d/redmine.confに記述してあげればOK。

最後にRedmineのディレクトリのオーナーとグループをapacheに変えてあげれば、Apache上でRedmineがちゃんと動いてくれる(はず)。

$ chown -R apache:apache /var/lib/redmine

それでは実際にページにアクセスして確認しましょう。

Redmineのページにアクセスします。
redmine

画面が表示されたので動いてそうですね!

最後に

プラグインの導入やサーバ監視の設定なども行いましたが、今回は特に苦戦を強いられた作業についてお話ししました。
え?インストールしただけだから簡単そう?
私の力不足です、はい。

ディレクトリのオーナー・グループの変更で本当はかなりつまづいていてgemを指定のディレクトリにインストールするときにエラーが出ていました...
最初は英語ばかりでよくわからず足止めを食らってしまいましたが、エラーを一個ずつ見ていくと、インストール先のディレクトリに権限がないよと怒られていました...
前章の後半でapacheにオーナーとグループを変えましたが、もし追加でgemなどをインストールする場合は一度ec2-userに戻してからでないとインストールできませんのでご注意ください...

実際はもっと設定するべき内容などはあったのですが、細かすぎるのはどうかと思い、大きな設定内容のみ触れています。
なのでもし機会があれば別の機会にお話しできればと思います。

拙い文章ですが、初ブログはこれにて終了いたします。
文章書くの苦手だからブログ書かないか?と言われたときにかなり悩みました(何とか形にはなってるかな...)
最後までお読みいただきありがとうございました!