Redmine を EC2(ubuntu) + RDS にセットアップ

プロジェクトが始まると、何らかの管理ツールが必要になる。クライアント仕事の際は、クライアントが指定するものを使うし、自分が主導するプロジェクトの際は、プロジェクトに関わるチームメンバーの特性に合わせて、ベストなものを選択する。

 

クライアント仕事で、ツールの選定を先方が行う場合は、みんな大好き「Microsoft Project」、PMBOK準拠「SI Object Browser PM」が指定されたり、小さいチームの場合「Trello」や「wrike」、「Backlog」が指定されることもある。

 

自分がツール選定する場合は、Redmineを使うことが多い。オープンソースで自分でカスタマイズできるし、多くのテーマやプラグインが無償・有償問わず出ているので、それらを利用してカスタマイズすることもできる。

 

今回はRedmineを、AWS(Amazon Web Service)のEC2インスタンスにubuntu16をインストールし、RDSのmysqlに接続するところまで紹介します。Bitnamiansibleを利用する方法もありますが、今後カスタマイズすることを考えるとインストール内容をちゃんと把握しておく必要があるため、セルフ・インストールします。

 

EC2インスタンスの作成

 

インスタンスは、t2.microで問題ありません。さらに課金を抑えたい場合は、日本以外のリージョンを選択するのも良いと思います。日本以外のリージョンを選択することで、メインのサービスのインスタンスと分離して管理できて分かりやすいというメリットも自分は感じます。なお、t2.microを利用する場合、後に説明するswapの設定を行うと動作が機敏になり、おすすめです。

 

 

EC2のクイックスタートにリストされるubuntuは、2018/9/20現在まだ16.04です。特にそれで問題は無いので、今回の記事では16.04をインストールします。

 

 

インストール時に、セキュリティグループを設定する必要があると思いますが、今回は ssh と http のインバウンドを許可するように設定します。httpsのサービスも行いたいですが、今回は http だけです。https については別の記事で書く予定です。

 

RDS・mysqlインスタンスの作成

 

Redmineは、Railsアプリ。DBにPostgreSQLやSQLite等も利用できますが、自分は慣れ親しんだMySQLを使います。EC2インスタンスの中にMySQLサーバも入れて運用するのもありだとは思うのですが、バックアップ等が面倒なのでRDSに任せてしまいます。

 

 

セキュリティグループの設定では、MySQL(3306)を適切に設定する必要があります。 3306の0.0.0.0を指定すればどこからでもアクセスできるようになりますが、セキュリティリスクは高まります。判断してください。

 

以上で、Webコンソール画面による設定は終了です。以下、ターミナルでSSH接続して設定を続けます。

 

SSHでのインストール作業

 

EC2作成時に登録したkey pairを用いて、SSH接続します。接続後、ソフトウェアのアップデートや、swapの設定を行います。

# root に成ります
sudo su -

# ソフトウェアのアップデート
apt-get update
apt-get upgrade

# swapの設定
dd if=/dev/zero of=/swap bs=1M count=1024 
chmod 600 /swap 
mkswap /swap 
swapon /swap 
swapon -s

# 再起動します
reboot

 

基本的なアプリケーションをインストールします。

# rootに成ります
sudo su -

# お気に入りのエディタをインストール
apt-get install emacs

# Rubyをインストール
apt-get install ruby-dev ruby bundler

# Apacheと、passengerをインストール
apt-get install apache2 libapache2-mod-passenger

# 画像処理アプリをインストール
apt-get install imagemagick libmagick++-dev

# Redmineの公式レポジトリはsubversionで管理されています
apt-get install subversion

# MySQLをインストール
apt-get install mysql-server libmysqlclient-dev

# root 終了
exit

 

ここで一度、RDSのmysqlにアクセスしてみます。ここで問題が起きるとしたら、セキュリティグループの設定漏れか、ユーザ名、サーバ名のコピペミスかと。

# RDSのmysqlに接続
mysql -u(ユーザ名) -p -h(サーバ名)

# mysqlを終了する
mysql> exit

 

redmineをインストールします。

# パスの作成
sudo mkdir -p /var/www/redmine

# オーナー変更
sudo chown www-data:www-data /var/www/redmine

# www-dataユーザで、レポジトリからredmineを取得
sudo -u www-data svn co http://svn.redmine.org/redmine/branches/3.4-stable /var/www/redmine

 

redmineが参照するDBの設定ファイルを作成し、内容を記載します。

# sudo emacs /var/www/redmine/config/database.yml

production:
  adapter: mysql2
  host:	(RDSのサーバ)
  database: (RDSに設定したmysql database名)
  username: (RDSに設定したmysql マスターユーザ名)
  password: (RDSに設定したmysql マスターユーザ・パスワード)
  encoding: utf8mb4
  socket: /var/run/mysqld/mysqld.sock

 

redmineが参照するメールサーバの設定ファイルを作成し、内容を記載します。Gmailを使う場合や、SMTPサーバを使う場合などがあると思いますが、下記に示すそれぞれの設定例を参考に記載します。

# sudo emacs /var/www/redmine/config/configuration.yml

default:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      enable_starttls_auto: false #Gmail等の場合は true
      address: (SMTPサーバのアドレス)
      port: 25
      authentication: :login
      domain: (メールのドメイン)
      user_name: (メールのユーザ名)
      password: (メールのパスワード)

※設定例: Redmine Installation Guide >> Email Configuration
※注意点:3箇所(「email_delivery:」「delivery_method: :smtp」「address: “(SMTPサーバのアドレス)”」)でインデントを深くする必要あり。

 

redmineの諸設定を行います。最初に所有者変更し、それを崩さないよう、www-data(ubuntuのapacheデフォルトユーザ)のsudoで実行します。

cd /var/www/redmine/

# 一括で所有者・グループ変更
find | sudo xargs chown www-data:www-data

# redmineが使うgemをbundleでインストール
sudo -u www-data bundle install -j$(nproc) --without development test postgresql sqlite --path vendor/bundle

# DBテーブルの作成
sudo -u www-data RAILS_ENV=production bundle exec rake db:migrate

# 初期データのインサート
sudo -u www-data RAILS_ENV=production REDMINE_LANG=ja bundle exec rake redmine:load_default_data

# Rails本番環境を、document root にリンク
sudo ln -s /var/www/redmine/public /var/www/html/(redmineのパス名)

 

apacheの設定ファイルに、下記内容を追記します。

# sudo emacs /etc/apache2/sites-enabled/000-default.conf

<VirtualHost *:80>
#(前略)
	ServerAdmin (管理者のメールアドレス)
	DocumentRoot /var/www/html
	RackBaseURI /(redmineのパス名)
	<Directory /var/www/html/redmine>
		AllowOverride None
		Options None
	</Directory>
#(後略)
</VirtualHost>

記載内容に問題が無いか確認し、問題なければapacheを再起動します。

#確認
sudo apache2ctl configtest 

#再起動
sudo service apache2 start

 

検索エンジン等がインデックスしないように、basic認証をかけます。

# sudo -u www-data emacs /var/www/redmine/app/controllers/application_controller.rb

class ApplicationController < ActionController::Base
  before_filter :basic
 
#(中略)

  private
  def basic
    authenticate_or_request_with_http_basic do |user, pass|
      user == '(任意のユーザ名)' && pass == '(任意のパスワード)'
    end
  end
end

 

#再起動
sudo service apache2 start

 

以上でインストール作業終了です。WebブラウザでサーバのIPアドレスを入力すると、basic認証のポップアップが出てくると思います。先に指定したユーザ名、パスワードを入力してください。下記のような画面表示になればインストール成功です。

 

 

Safariで見ると「安全ではありません」とアドレス欄に表示されていますが、redmine自体は正しくインストールされています。

 

このままだと、公衆Wifi等でデータが丸見えなので、次回は無料でSSLをかける記事を書きます。

 
 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です