Archive for category AmazonEC2

CentOSにredmine 導入 二周目

二週目、今回は奇麗なやり方。

実際には元のサーバはどうにかこうにか動かせるようになってしまって、
今更戻すわけにはいかないので、今回はAWSのCentOSイメージを使って検証。
[code]
AMI-ID:ami-10b55379 Manifest:cent53-base/ami-centos5.3-base.manifest.xml
[/code]
を使用する。

こういう検証のやり方は結構便利だ。そのうち実機サーバーのイメージを作ってそれを
EC2で動かしてテストすればさらに便利そう。

では何事もなかったように最初から。(AWSにしたのでインストールしたものとか全部やり直し)

一応、再びRubyとRailsのバージョンあわせから。
[code]
yum install -y mysql-server mysql-devel

wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p383.tar.gz

tar zxvf ruby-1.8.6-p383.tar.gz

cd ruby-1.8.6-p383

./configure --prefix=/usr

make

checkinstall

rpm -ivh --nomd5 /usr/src/redhat/RPMS/i386/ruby-1.8.6-1.i386.rpm
[/code]
checkinstallってなんやねんって人は前の記事を参考。

また、既にRubyをインストールしちゃってて競合が起きてる場合で、
yumでインストールしている人はアンインストールしませう。
[code]
yum remove ruby ruby-libs ruby-irb ruby-rdoc ruby-devel
[/code]
でうまくいくはず。

*ただし、既に他のバージョンに依存するものがある場合は要注意。

次にRubyGemsをインストール
[code]
wget http://rubyforge.org/frs/download.php/60718/rubygems-1.3.5.tgz

tar zxvf rubygems-1.3.5.tgz

cd rubygems-1.3.5

ruby setup.rb
[/code]
Railsのインストール。記録用にログとか残す。
Redmineが使用するRailsバージョンは2.2.2なので、指定してインストールする。
[code]
gem install rails --include-dependencies -v2.2.2
Successfully installed activerecord-2.2.2
Successfully installed actionpack-2.2.2
Successfully installed actionmailer-2.2.2
Successfully installed activeresource-2.2.2
Successfully installed rails-2.2.2
5 gems installed
Installing ri documentation for activerecord-2.2.2...
Installing ri documentation for actionpack-2.2.2...
Installing ri documentation for actionmailer-2.2.2...
Installing ri documentation for activeresource-2.2.2...
Installing ri documentation for rails-2.2.2...
Installing RDoc documentation for activerecord-2.2.2...
Installing RDoc documentation for actionpack-2.2.2...
Installing RDoc documentation for actionmailer-2.2.2...
Installing RDoc documentation for activeresource-2.2.2...
Installing RDoc documentation for rails-2.2.2...
[/code]
…残す意味ないような

Mongrelインストール。こっちもついでに。
[code]
gem install mongrel
Successfully installed gem_plugin-0.2.3
Successfully installed daemons-1.0.10
Successfully installed cgi_multipart_eof_fix-2.5.0
Successfully installed mongrel-1.1.5
4 gems installed
Installing ri documentation for gem_plugin-0.2.3...
Installing ri documentation for daemons-1.0.10...
Installing ri documentation for cgi_multipart_eof_fix-2.5.0...
Installing ri documentation for mongrel-1.1.5...
Installing RDoc documentation for gem_plugin-0.2.3...
Installing RDoc documentation for daemons-1.0.10...
Installing RDoc documentation for cgi_multipart_eof_fix-2.5.0...
Installing RDoc documentation for mongrel-1.1.5...
[/code]

[code]
mkdir /var/redmine

cd /var/redmine

svn checkout http://redmine.rubyforge.org/svn/trunk/ .
[/code]

次にMysqlのRedmine用データベースを作成する。
[code]
mysql -u root
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
[/code]
にゅ?
ググってみるとmysqlが起動してない模様。そりゃ接続できんね。
[code]
/etc/rc.d/init.d/mysqld start
[/code]
ついでに起動時に動くよう設定。
[code]
chkconfig mysqld on
chkconfig --list mysqld
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[/code]
んだば再度
[code]
mysql -u root
Welcome to the MySQL monitor. Commands end with ; or ¥g.
Your MySQL connection id is 2
Server version: 5.0.45 Source distribution

Type 'help;' or '¥h' for help. Type '¥c' to clear the buffer.

mysql> create database redmine character set utf8;
Query OK, 1 row affected (0.00 sec)
mysql> exit
Bye
[/code]
ここで明示的にredmineデータベースをUTF8に設定しておかないと色々文字化けで
苦しんだりするかもしれないので注意しましょう。

で、次はRedmineの設定を弄る。

サンプル用の設定ファイルをコピーして使う。
usernameとpasswordは先ほど決めたものに変更、developmentとtestのdatabaseをredmine
にするのは、元のままだと同名のデータベースを作らなければならず、Redmineでは最初から
運用するため使わないので無駄となる。よって運用用のデータベースと同じにしてしまう。
[code]
cp config/database.yml.example config/database.yml
[/code]
以下のようにデータベースの設定を行う。
[code]
production:
adapter: mysql
database: redmine
host: localhost
username: root
password:
encoding: utf8
socket: /var/lib/mysql/mysql.sock

development:
adapter: mysql
database: redmine
host: localhost
username: root
password:
encoding: utf8

test:
adapter: mysql
database: redmine
host: localhost
username: root
password:
encoding: utf8
[/code]
まあ、実際にはProductionしか使わないのであるが、後学のために
三つとも書いておく。今後のRailsプロジェクトでコピペに使えるし。
databaseのところ書き換え忘れてエラー出しそうである。

Railsのデータベースのマイグレーション
[code]
rake db:migrate RAILS_ENV="production"

!!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql.
rake aborted!
no such file to load -- mysql
[/code]
マタデスカ
[code]
gem install mysql
[/code]
では再度
[code]
rake db:migrate RAILS_ENV="production"

== Setup: migrating ==========================================================
-- create_table("attachments", {:force=>true})

省略

== FixMessagesStickyNull: migrating ==========================================
== FixMessagesStickyNull: migrated (0.0005s) =================================
[/code]
あっさり成功

次はデフォルトデータの読み込み
[code]
rake load_default_data RAILS_ENV="production"
(in /var/redmine)

Select language: bg, bs, ca, cs, da, de, el, en, es, fi, fr, gl, he, hu, it, ja, ko, lt, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sr, sv, th, tr, uk, vi, zh, zh-TW [en] ja
[/code]
さて、いよいよサーバーを起動する
[code]
ruby script/server

Status: 500 Internal Server Error Content-Type: text/html
500 Internal Server Error
[/code]
…?

コンソールの方を確認。
[code]
A secret is required to generate an integrity hash for cookie session data. Use config.action_controller.session =
{ :session_key => "_myapp_session", :secret => "some secret phrase of at least 30 characters" } in config/environment.rb
[/code]

[code]
yum -y install expect

mkpasswd -l 32
[/code]

[code]
vim config/environment.rb
[/code]

[code]
config.action_mailer.perform_deliveries = false

config.action_controller.session = { :session_key => "_myapp_session", :secret => "さっき生成した文字列" }
[/code]

[code]
ruby script/server
[/code]

成功。
いやー一週目の苦労はなんだったんだ…

後はAdmin:Adminでログインし、パスワードの変更、ユーザーの登録を行う。
ログイン後MyAccount<Languageで日本語を選択すると日本語化できる。

下記サイトを参照。
http://blog.apecell.com/2008/04/02/id/38
http://blog.livedoor.jp/leaveanest/archives/846257.html
http://uprush.net/2009/06/redmine%E3%82%92centos5%E3%81%AB%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB/
http://d.hatena.ne.jp/snusmum/20090827/1251380110
http://blog.livedoor.jp/maru_tak/archives/50664746.html

PoderosaをつかってAmazonEC2に接続

なんか一連の手順を確実に忘れそうなので即効覚書。

なんていうかぽでろっさというソフト名自体すぐ忘れそうだ。
絶対来週あたりにはぺどろっさとか言っているだろう。

WS000096
AmazonWebservice,特にWindowsでEC2へSSHでログインしたい時、
Amazonのサイトでコピー可能な
ssh -i XXXXXX.pem root@XXXXXXXXXXXXXXXXXX.amazonaws.com
はWindowsで使おうとするとうまくいかない。(少なくてもうちで使っているソフトでは)
Macならすんなり付属のターミナルでいけそうだが。

で、うちでメインで使っているPoderosaだと、Amazonからダウンロー出した秘密鍵をそのまま読ませて
接続しようとすると失敗する。使うためには一度鍵を変換する必要がある。

1.PuTTYを用意する。
もうこの時点でPuTTY使えよという話であるが、あいてーえんじにあというものは自分の気に入った
道具に偏執するものなので、言ってはならぬ。

下記URLより入手した。別に本目的で使うわけではないので、インストーラではなくZipで問題ない。
http://yebisuya.dip.jp/Software/PuTTY/

2.PuTTY付属のputtygen.exeで鍵を変換。
puttygen.exe起動後、「基地の秘密鍵の読み込み」の読み込みボタンを押下し、
Amazonからダウンロードした鍵ファイルxxxxx.pem(インスタンス生成時に選択したもの)
を選択する。

WS000095

その後タブの変換の中の「ssh.com形式へエクスポート」を選択し、保存する。

3.変換された鍵を使ってEC2にPoderosaでログイン
Poderosaを起動し、ファイル>新規Telnet/SSH接続を選択し、
認証方法を秘密鍵に設定、パスフレーズは空で、鍵ファイルに先ほど変換したファイルを設定。
接続先にはAmazonのサイトで指定されたXXXXXXXXXXXXXXXXXX.amazonaws.com を指定して接続。

WS000098

後はやったらめったらいらつくレスポンスの悪さを堪能するばかりである。

参考サイト
http://it.kndb.jp/entry/show/id/2574