最近複数のプロジェクトを継続して扱うようになってきたため、そろそろバグ管理が必要だなと思い、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の初期画面が表示されます。
ただ、このPublic DNS 及びIPアドレスはインスタンスを起動するたびに変化するので、Elastic IP を使って固定IPを割り当てておきます。AWS コンソールから操作すれば簡単なので割り当ての詳細は省きます。
(Elastic IP はインスタンスを停止すると課金されるのですが、とりあえずはこの形で運用してみようと思います。Elastic IP を避けるなら、ダイナミックDNSと併せて設定するなどの方法もあると思います。)
次に、独自ドメインをこのElasticIPに対して割り当てます。
今使っているドメイン名(mori-soft.com)はさくらインターネットで管理しているので、そちらからゾーン設定を編集します。
- さくらインターネットの会員メニューにログインして、ドメインメニューを開きます
- ゾーン編集ボタンを押します
- 変更ボタンを押します
- Aレコードに、独自ドメイン名とElasticIPで割り当てられたIPアドレスを設定し、追加します。
- 変更を送信すれば完了です。
しばらく待ってから、ブラウザから独自ドメイン名でアクセスして、最初のPublic DNS と同じ画面が表示されればOKです。
SSHの設定
Bitnamiのwiki では、rootログインできないとなっているのですが、試したところログインできてしまいました。そこで、rootユーザーでのsshログインを禁止しておきます。
最初にsshでこのインスタンスにログインします。ログイン方法の詳細は下記のAWSのマニュアルなどをご覧ください。
なお、今回はクライアントとして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の設定を行います。