読者です 読者をやめる 読者になる 読者になる

プログラマーのメモ書き

伊勢在住のプログラマーが気になることを気ままにメモったブログです

【EC2】 Subversion+Redmine環境の構築 (1/6)

ツール EC2 redmine

最近複数のプロジェクトを継続して扱うようになってきたため、そろそろバグ管理が必要だなと思い、Redmine を使ってみたいと思ってました。でも、自宅なので常時稼働のサーバー台数は極力少なくしたいと思っていたところ、AWS に触る機会があったので、AWS 上に Redmine の環境を構築してみることにしました。

今まで仕事で使う Subversion のリポジトリは、ReadyNasDuo に Subversion プラグインを入れて、そのうえで管理していたのですが、AWS上に環境をつくるならバックアップを遠隔地にも取れるので、この機会にAWS上に移してみることにしました。

この環境構築作業の際のメモをまとめておきます。

 

【EC2】 Subversion+Redmine環境の構築 (1/6) ←ここです

【EC2】 Subversion+Redmine環境の構築 (2/6) : Subversionの設定

【EC2】 Subversion+Redmine環境の構築 (3/6) : SSLの設定

【EC2】 Subversion+Redmine環境の構築 (4/6) : Redmine の設定

【EC2】 Subversion+Redmine環境の構築 (5/6) : バックアップの設定

【EC2】 Subversion+Redmine環境の構築 (6/6) : 雑多な設定

 

なお、下記のサイトの記事を参考に今回の作業を行ってみました。

AWSを使ったお手軽ディザスタリカバリ対策~Subversion編

 

目指す環境

今回作成しようとする環境は次のようなものを想定しています。

  • AWS EC2上に、Subversion+Redmineのサーバーを作る
  • サーバーは使うときだけインスタンスを立ち上げて、普段は停止しておく
  • IPアドレスはElasticIPで割り当てておき、独自ドメイン名を設定する
  • Subversionにはhttpsでアクセスし、Basic認証をかけておく
  • Redmineにはhttpsでアクセスし、プロジェクトは非公開で認証必須としておく
  • httpsでのアクセスは自宅からのみを認める

httpsでのアクセス制限は、とりあえず自宅からしか開発環境にアクセスしないと思われるので、このように考えています。もし、別の場所からもアクセスする必要が出てくれば制限を見直したいと思います。

 

EC2インスタンスの作成

EC2でサーバーを作るとすると、まず、インスタンスとして何を選ぶかが問題になります。

最初は、Ubuntu のAMIを立ち上げて、SubversionやRedmineをインストールしようかと思っていたのですが、結構手間がかかりそうで踏み切れずにいました。

あれこれ調べていると、Bitnami というところが、お手軽にRedmineを使えるAMIを公開していることを知りました。

http://bitnami.org/ja/stack/redmine

無料で使えるということなので、いちいちインストールするよりはこれを使うしかない、ということで、このAMIからインスタンスを作成することにしました。

 

なお、選択したAMIは、EBSインスタンスの64bit版、Redmine2.1.4のものを選択しました。

 

EC2インスタンスの作成の詳細はネットを調べればいろいろと出ているので、詳細は飛ばします。

選択した項目としては次のようになります。

  • インスタンスタイプ:無料枠が使えるT1micro
  • Availability Zone は指定なし
  • 間違って、Terminateさせないように、Termination Protection にはチェックをつけておく
  • Security Zone はこのインスタンス用のもの作成してを割り当て

AWS のコンソールでStatus Check が無事OKになれば完了です。

 

Security Group の設定

EC2 では、Security Group を設定することで、ファイヤーウォールの設定ができます。とりあえず、作業中は、ssh, http, https だけを開けておきます。セットアップが終わったら、httpは閉じて、https は接続元IPを制限する予定です。

 

ElasticIPと独自ドメインの割り当て

無事にインスタンスが起動したら、ブラウザからインスタンスのPublic DNS (ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.comなどというやつ)にアクセスするとRedmineの初期画面が表示されます。

BitNami Redmine スタックのトップページ

ただ、このPublic DNS 及びIPアドレスはインスタンスを起動するたびに変化するので、Elastic IP を使って固定IPを割り当てておきます。AWS コンソールから操作すれば簡単なので割り当ての詳細は省きます。

(Elastic IP はインスタンスを停止すると課金されるのですが、とりあえずはこの形で運用してみようと思います。Elastic IP を避けるなら、ダイナミックDNSと併せて設定するなどの方法もあると思います。)

 

次に、独自ドメインをこのElasticIPに対して割り当てます。

今使っているドメイン名(mori-soft.com)はさくらインターネットで管理しているので、そちらからゾーン設定を編集します。

  1. さくらインターネットの会員メニューにログインして、ドメインメニューを開きます
  2. ゾーン編集ボタンを押します
  3. 変更ボタンを押します
  4. Aレコードに、独自ドメイン名とElasticIPで割り当てられたIPアドレスを設定し、追加します。
  5. 変更を送信すれば完了です。

しばらく待ってから、ブラウザから独自ドメイン名でアクセスして、最初のPublic DNS と同じ画面が表示されればOKです。

 

SSHの設定

Bitnamiのwiki では、rootログインできないとなっているのですが、試したところログインできてしまいました。そこで、rootユーザーでのsshログインを禁止しておきます。

 

最初にsshでこのインスタンスにログインします。ログイン方法の詳細は下記のAWSのマニュアルなどをご覧ください。

Windows マシンから PuTTY を使用して接続する

 

なお、今回はクライアントとしてPoderosaを使いました。Poderosaの場合、EC2のプライベートキーの形式をサポートしていないので、WinSCPに付属していたPuTTYgen で鍵を変換しました。

PuTTygenを起動

『Conversions』→『Import Key』でダウンロードしたEC2のプライベートキーを指定

必要があればパスワードを入力

『Conversions』→『Export ssh.com』で保存

 

なお、ログインユーザはデフォルトでは、bitnami になります。

 

ログイン後、

sudo vi /etc/sh/sshd_config

として、sshd_configを編集します。

PermitRootLogin yes

と書かれた行があるはずなので、これをnoに変更します。

 

あと、ついでにポート番号も変更しておきます。

Port 22

となるので、適当なポート番号を割り当てておきます。

 

sshd_config の編集が終わったら保存して、

/etc/init.d/ssh restart

として、sshをリスタートさせます。

 

新しいポート番号で接続できるように、Security Group にも新しいポート番号を指定して通信できるようにしておきます。


この状態で、別の端末から新しいポート番号で接続します。bitnami ユーザーはsshログオンでき、rootユーザーができないこと、および22番ポートではログインできないことを確認します。

 

確認ができたら、Security Group から22番ポートを外します。

 

システムアップデート

一応、システムのアップデートをかけておきます。

sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get upgrade 

 

ロケールの変更

設定直後だと、デフォルトのロケールはen_USになっています。

bitnami@ip-10-132-10-247:~$ cat /etc/default/locale 
LANG="en_US.UTF-8"
bitnami@ip-10-132-10-247:~$ 

 

ロケールを日本に変更します。

bitnami@ip-10-132-10-247:~$ sudo apt-get install language-pack-ja
bitnami@ip-10-132-10-247:~$ sudo update-locale LANG="ja_JP.UTF-8"

 

これでロケールがja_JPになりました。

(参考)

http://www.dreamedge.net/archives/111

タイムゾーンの変更

タイムゾーンも別の国(Americaだっけかな?)になっているので変更します。

sudo dpkg-reconfigure tzdata

 

(参考)
http://www.ecchan893.net/?p=389

 

日本語環境の設定

サーバーなのですが、日本語環境がないと何かと不便なので、インストールしておきます。

wget -q https://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg -O- | sudo apt-key add -
wget -q https://www.ubuntulinux.jp/ubuntu-jp-ppa-keyring.gpg -O- | sudo apt-key add -
sudo wget https://www.ubuntulinux.jp/sources.list.d/precise.list -O /etc/apt/sources.list.d/ubuntu-ja.list
sudo apt-get update
sudo apt-get upgrade

(参考)

http://www.ubuntulinux.jp/japanese

 

NTPサーバー変更

/etc/default/ntpdate を編集してデフォルトのntpサーバーを日本国内のものにします。

#NTPSERVERS="ntp.ubuntu.com"
NTPSERVERS="ntp.nict.jp"

(参考)
http://thinkit.co.jp/article/84/3?page=0,2

 

ここまですれば、サーバーとしての設定は一通り終わり(のはず)です。続いて、Subversionの設定を行います