ある起業家のブログ

ゲームや仕事の事を書き綴る勝手気ままなサイトです。

HOME >  2012年 9月

Railsインストール

2012/09/30

■Railsのインストール

【前準備】
□Rubyのインストール

関連サイト
ftp://ftp.ruby-lang.org/pub/ruby

念のために、前のバージョンをアンインストール

# yum remove ruby

# cd /usr/local/src
# wget ftp://ftp.ruby-lang.org/pub/ruby/ruby-1.9.3-rc1.tar.gz
# tar zxvf ruby-1.9.3-rc1.tar.gz
# cd ruby-1.9.3-rc1/
# ./configure
# make
# make install

□rubygemのインストール

関連サイト

http://pkgs.fedoraproject.org/repo/pkgs/rubygems/

# cd /usr/local/src
# wget http://pkgs.fedoraproject.org/repo/pkgs/rubygems/rubygems-0.9.4.tgz/b5680acaa019c80ea44fe87cc2e227da/rubygems-1.8.24.tgz
# tar zxvf rubygems-1.8.24.tgz
# cd rubygems-1.8.24
# ruby setup.rb

(エラー)
/usr/local/lib/ruby/site_ruby/1.9.1/rbconfig/datadir.rb:9: Use RbConfig instead of obsolete and deprecated Config.
/usr/local/lib/ruby/1.9.1/yaml.rb:56:in `‘:
It seems your ruby installation is missing psych (for YAML output).
To eliminate this warning, please install libyaml and reinstall your ruby.
/usr/local/lib/ruby/1.9.1/yaml.rb:56:in `‘:
It seems your ruby installation is missing psych (for YAML output).
To eliminate this warning, please install libyaml and reinstall your ruby.
RubyGems 1.8.24 installed

(解決)
# yum install zlib-devel

下記からファイルをダウンロードしてインストール

# wget http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz
# tar zxvf yaml-0.1.4.tar.gz
# ./configure
# make ; make install

□Railsのインストール

Railsのインストール

# gem install rails –version=3.0.0

Ruby on Railsがインストールされた場所を確認

# gem which rails
/usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.0/lib/rails.rb

バージョン確認

# rails -v
Rails 3.0.0

ハンガーゲーム

2012/09/30

今年は映画当たり年という事もあり、またしてもレイトショーで映画を観てきました。
ハンガーゲーム。あらすじ自体は、近未来で富裕層と貧困層に分かれる世界の中で、
人間同士が戦うハンガーゲームを少女が生き抜く話です。

小説を読んでいるほうが背景も心情も分かって楽しめます。ハンゲーゲームは、
飢え(ハンガー)を生き延びるという意味です。どうしても長い期間の戦いを
映画の2時間程度に収めると、緊迫感が乏しくなるので難しい。

一見宣伝だけ見るとアクションに見えますが、どちらかと言えばヒューマン
ドラマと言えそうな内容です。アクションというよりも一人の少女が、どうやって
定刻の権力に立ち向かうのか、という点を踏まえて見ると面白いと思います。

バイオハザードV リトリビューション

2012/09/15

バイオハザードの上映日という事を思い出したので、レイトショー(1:25~)を
観てきました。もちろん場所は、新宿バルト9です。なかなか人もいましたが、
内容は・・・ロード・オブ・ザ・リングみたいになっていました(笑)
絶対、次回作もあると思うのですが、どう収拾つけるんだろう??

今回、バイオハザード1~5を通してのキャラ全般が出演するので、バイオファンには
少しは楽しめる要素がありますが、ストーリーはもうどうでもいいかも・・・(^^;

MySQLのレプリケーション

2012/09/14

MySQLにはもともと備わっているレプリケーション機能があります。

■MySQLのレプリケーション

Master:36.55.231.111(ダミーIP)
5.5.23
Slave:183.181.56.160(ダミーIP)
5.0.95

■Master側の設定

Master側ではバイナリログを採取しておく必要があるので、Master側のmy.cnfにlog-binの設定が入っていることを確認する(デーモン起動時のオプションで指定してあってもよい)。また、ついでにserver-idが設定されていることを確認する。

[mysqld]
log-bin <== バイナリログを取ることを指定 server-id=1 <== 識別用ID。任意の値。他のサーバーと重複しないようにする。 設定反映の為、MySQLの再起動を実施。 ■アカウント作成 SlaveからMasterへ接続する際のアカウントをMaster側に用意しておく必要がある。このアカウントはREPLICATION SLAVE権限を持っている必要がある。 以下は10.0.0.2(SlaveのIPアドレス)から接続を許す'myfather'ユーザーを作成する例。 (Master側で) mysql> GRANT REPLICATION SLAVE ON *.* TO
myfather@183.181.56.160 IDENTIFIED BY ‘mononokehime09’;

flush privileges;

■Slave側の設定

Slave側のmy.cnfにserver-idを設定する。

[mysqld]
server-id=2 <== 識別用ID。任意の値。他のサーバーと重複しないようにする。 設定後、Slave側のmysqldを再起動する。 ■データベースの初回バックアップ MasterのデータベースをSlaveにコピーする。 コピーの際、データベースが更新されないように書き込みをロックする。 (Master側で) mysql> FLUSH TABLES WITH READ LOCK;

現在のバイナリログの状態を確認(ロック中に行うこと)。

(Master側で)
mysql> SHOW MASTER STATUS;
+——————-+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————-+———-+————–+——————+
| mysqld-bin.000001 | 107 | | |
+——————-+———-+————–+——————+
1 row in set (0.00 sec)

現在のバイナリログのファイル名とログ内の現在位置が表示されるので、記録しておく。これらは、Slaveを起動する時に必要になる。(ロック解除してからSlaveを立ち上げるまでにDBの更新があった場合、現在位置以降のクエリを実行してDBを一致させるため。)

Master側のデータベースをバックアップする。データベースは書き込みのロックがされているのでtarでアーカイブすればよい。以下ではfriendDBのみバックアップしている。全てのデータベースをレプリケーションしたい場合は、全データベースをバックアップしておけばよい。

(Master側で)# cd /var/lib/mysql/ <== MySQLのデータディレクトリへ移動 # tar cvf /home/next_ms/wordpress.tar wordpress <== データベースをバックアップ データベースのバックアップが完了してしまえば、書き込みのロックは解除すればよい。これで、Master側は通常の運用に戻ることができる。 (Master側で) mysql> UNLOCK TABLES;

■データベースの移動とコピー

# scp -P 3843 wordpress.tar next@183.181.56.160:/

2.3でバックアップしたデータベースSlave側に持っていく。2.3で作成したtarファイルをftpなどでSlave側へ持っていき、MySQLのデータディレクトリに展開すればよい。ここで、展開したファイルはMaster側と同じパーミッションにしておくとよい。

(Slave側で)
# cd /var/lib/mysql/
# tar xvf /home/next_ms/wordpress.tar

パーミッションを確認しておくこと。

■レプリケーションの開始

Slave側でMasterへ接続するためのパラメータ(ホスト名やユーザー名)を設定する。

(Slave側で)
mysql> CHANGE MASTER TO
MASTER_HOST=’10.0.0.1′, <== Masterのホスト名/IPアドレス MASTER_USER='repl', <== Master接続に使用するユーザー名 MASTER_PASSWORD='password', <== パスワード MASTER_LOG_FILE='tank-bin.000001', <==2.3で確認したFile MASTER_LOG_POS=79; <== 2.3 で確認したPosition change master to master_host='36.55.231.10', master_user='myfather', master_password='mononokehime09', master_log_file='mysqld-bin.000001', master_log_pos=107; レプリケーションを開始する。 (Slave側で) mysql> START SLAVE;

■関連コマンド

①start slave/stop slave(slave用)

②SHOW MASTER STATUS (Master用)

③SHOW BINLOG EVENTS (Master用)

④SHOW SLAVE STATUS (Slave用)
Slaveの情報を表示する。

mysql> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.0.0.1
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: tank-bin.000001
<略>

Slave_IO_Running,Slave_SQL_Runningが’yes’になっていればSlave側のスレッドは立ち上がっており、レプリケーションが動作していることになる。

Seconds_Behind_MasterでSlave側で最後に実行されたクエリがMaster側から何秒遅れていたかを表示しているので、レプリケーションが完了するまでの目安になる。

■エラー発生

▲mysqld.log

120723 16:52:59 mysqld started
Unknown suffix ‘s’ used for variable ‘server-id’ (value ‘slave’)
120723 16:52:59 [ERROR] /usr/libexec/mysqld: Error while setting value ‘slave’ to ‘server-id’
120723 16:52:59 mysqld ended

120723 16:53:35 mysqld started
Unknown suffix ‘s’ used for variable ‘server-id’ (value ‘slave’)
120723 16:53:35 [ERROR] /usr/libexec/mysqld: Error while setting value ‘slave’ to ‘server-id’
120723 16:53:35 mysqld ended

解決方法→server-id=2に変更して問題なく起動