Amazon EC2を試してみた:(3)Nginx

今回は Nginx をインストールして web ページを確認するまで。

インストールはとっても簡単、yum コマンドでインストールするだけ。

[ec2-user@ip-172-31-3-244 ~]$ sudo yum install nginx

起動。

[ec2-user@ip-172-31-3-244 ~]$ sudo /etc/init.d/nginx start
nginx を起動中:                                            [  OK  ]

ブラウザで確認すると、ちゃんと動いている。

nginx-on-amazon-ec2

Amazon EC2を試してみた:(2)S3バケットをマウントする

S3のバケットをファイルシステムとしてマウントするには、s3fs-fuse というツールを使う。今回使ったヴァージョンは最新の 1.77

依存するツールのインストール

まずは依存するツールをインストールする。

[ec2-user@ip-172-31-3-244 ~]$ sudo yum install gcc
[ec2-user@ip-172-31-3-244 ~]$ sudo yum install libstdc++-devel
[ec2-user@ip-172-31-3-244 ~]$ sudo yum install gcc-c++
[ec2-user@ip-172-31-3-244 ~]$ sudo yum install fuse
[ec2-user@ip-172-31-3-244 ~]$ sudo yum install fuse-devel
[ec2-user@ip-172-31-3-244 ~]$ sudo yum install curl-devel
[ec2-user@ip-172-31-3-244 ~]$ sudo yum install libxml2-devel
[ec2-user@ip-172-31-3-244 ~]$ sudo yum install openssl-devel
[ec2-user@ip-172-31-3-244 ~]$ sudo yum install mailcap
[ec2-user@ip-172-31-3-244 ~]$ sudo yum install automake

ダウンロードしてインストール

[ec2-user@ip-172-31-3-244 ~]$ wget https://github.com/s3fs-fuse/s3fs-fuse/archive/v1.77.tar.gz -O s3fs-fuse-v1.77.tar.gz
[ec2-user@ip-172-31-3-244 ~]$ tar xvzf s3fs-fuse-v1.77.tar.gz
[ec2-user@ip-172-31-3-244 ~]$ cd s3fs-fuse-1.77
[ec2-user@ip-172-31-3-244 s3fs-fuse-1.77]$ ./autogen.sh
[ec2-user@ip-172-31-3-244 s3fs-fuse-1.77]$ ./configure --prefix=/usr
[ec2-user@ip-172-31-3-244 s3fs-fuse-1.77]$ make
[ec2-user@ip-172-31-3-244 s3fs-fuse-1.77]$ sudo make install

認証

S3に接続するには認証の必要がある。つまり Access Key ID と Secret Access Key が必要だってこと。方法は4つあるようだけど、今回は /etc/passwd-s3fs ファイルを作る方法にした。

[ec2-user@ip-172-31-3-244 s3fs-fuse-1.77]$ sudo vim /etc/passwd-s3fs
[ec2-user@ip-172-31-3-244 s3fs-fuse-1.77]$ sudo chmod 640 /etc/passwd-s3fs

マウント

[ec2-user@ip-172-31-3-244 ~]$ sudo s3fs lathercraft-storage2 /mnt/lcstorage -o rw,allow_other,default_acl=private

さあ、うまくいってるかな?

[ec2-user@ip-172-31-3-244 ~]$ echo Hello > /mnt/lcstorage/hello.txt
[ec2-user@ip-172-31-3-244 ~]$ ls /mnt/lcstorage
hello.txt
[ec2-user@ip-172-31-3-244 ~]$ df -kh
ファイルシス   サイズ  使用  残り 使用% マウント位置
/dev/xvda1       7.8G  1.3G  6.5G   16% /
devtmpfs         990M   56K  990M    1% /dev
tmpfs           1003M     0 1003M    0% /dev/shm
s3fs             256T     0  256T    0% /mnt/lcstorage

OK、うまくいった。

参考になったページ

 cf. Amazon EC2からS3をファイルシステムとしてマウントする – mooapp
 cf. s3fs を使って EC2 に S3 の Bucket をマウントする – Qiita
 cf. Installation Notes – s3fs-fuse/s3fs-fuse

追記

インスタンスを再起動した時に自動でマウントするには、/etc/fstab ファイルに次の行を追加する。

s3fs#lathercraft-storage2 /mnt/lcstorage fuse rw,allow_other,default_acl=private 0 0

Amazon EC2を試してみた:(1)SSHで接続するまで

Amazon Web Service のホームから EC2 をクリックすると、EC2 のホーム画面になる。Launch Instance を選んで、スタート。

Step 1: Choose an Amazon Machine Image (AMI)

まずは、OS を選ぶところから。ここは素直に、Amazon Linux AMI 2014.03.2 (HVM) にしておいた。

Step 2: Choose an Instance Type

次にインスタンスタイプを選ぶ画面になる。インスタンスタイプはちょっとだけ欲張って t2.small にする。右下の Next: Configure Instance Details をクリック。

Step 3: Configure Instance Details

ここはデフォルトのまま、Next: Add Storage をクリック。

Step 4: Add Storage

ここもデフォルトのまま。

Step 5: Tag Instance

Name に lathercraft-storage2 を指定して、Next: Configure Security Group。

Step 6: Configure Security Group

Assign a security group はデフォルトの Create a new security group。Security group name は launch-wizard-3 となっていたのでそのまま。3 になってるのは、前にもちょっとだけ試したことがあるからかな。
HTTP のサーバとして使う予定なので Add Rule から HTTP を選んで追加した。

Step 7: Review Instance Launch

最終確認画面。このまま Launch をクリック。すると、Select an existing key pair or create a new key pair というダイアログが出たので、Create a new key pair をえらんで、amazon2 という名前をつける。でもって Download key pair をクリックすると鍵がダウンロードできる。これは SSH でインスタンスに接続するときに使う。ダウンロードした鍵は amazon2.pem というファイル名になっている。
それから、あらためて Launch Instance をクリック。

これでインスタンスの起動は完了。View Instaces をクリックして、EC2 のホーム画面に戻ると、新しいインスタンスが running 状態になっているのが確認できた。

SSHで接続

上でダウンロードした鍵 amazon2.pem ファイルを .ssh ディレクトリに移動してパーミッションを変更。

takatoh@nightschool $ mv Downloads/amazon2.pem .ssh
takatoh@nightschool $ chmod 400 .ssh/amazon2.pem
takatoh@nightschool $ ls -l .ssh | grep amazon2
-r-------- 1 takatoh takatoh 1692  9月  6 08:26 amazon2.pem

さあ、インスタンスに接続してみよう。インスタンスの IPアドレスは、インスタンスリストの Public IP の欄で確認できる。ユーザーは ec2-user だ。

takatoh@nightschool $ ssh -i .ssh/amazon2.pem [email protected]
Last login: Fri Sep  5 23:44:47 2014 from fntsitm001026.sitm.fnt.ngn.ppp.infoweb.ne.jp

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2014.03-release-notes/
9 package(s) needed for security, out of 28 available
Run "sudo yum update" to apply all updates.

Nginxのプロキシが動いてくれない(解決編)

Nginx のプロキシが動いてくれない問題が解決した。
↓このページが参考になった。

 cf. nginx連載3回目: nginxの設定、その1 – インフラエンジニアway

結論から言うと、アクセスログのフォーマットに定義していない名前を使っていたことだった。この行。

access_log /var/log/nginx/storage1.lathercraft.net/access.log main;

access_log ディレクティブには、ログファイル名のほかにログのフォーマットを名前で指定できる。ここでは main というのがそれだ。だけど、この間書いた(書いたというかネットからもらってきた)設定ファイルでは main という名前のログフォーマットが定義されていなかった。だからテストも通らなかったわけだ。

ログフォーマットは例えばこんなふうに定義できる。

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

これで main という名前のフォーマットが使えるようになる。

ところで、Nginx にはあらかじめ combined という名前のログフォーマットが組み込まれているそうだ。

log_format combined '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';

せっかくなので、こっちを使うことにした。結局、最初に示した行はこう変わった。

access_log /var/log/nginx/storage1.lathercraft.net/access.log combined;

これでめでたく動くようになった。

さくらVPS:Nginx+unicorn+Rails+MySQL(その3)

前回からあいだが開いてしまった。
実は前回の起動スクリプトで一度はうまく動いたと思ったんだけど、再度起動しようとしたら起動してくれなかったのだ。同じようにやったはずなのにどうしてだかわからない。いや、むしろ起動した時のやり方のほうが間違っていて、起動スクリプトで起動したと勘違いしていたのかもしれない。今となってはわからない。

というわけでこの1周間ずっと web を漁り続けていたわけだ。で、↓このページがヒントになった。

 cf. CentOS6にApache + RVM + UnicornでGitlab4.2構築 – Mikimemo

このページに載っている GitLab の起動スクリプトでは、環境変数 GEM_HOME と GEM_PATH を export している。これを試してみたらうまくいった。具体的には次の2行を追加した。

export GEM_HOME=/usr/local/rvm/gems/ruby-2.0.0-p481:/usr/local/rvm/gems/ruby-2.0.0-p481@global
export GEM_PATH=/usr/local/rvm/gems/ruby-2.0.0-p481:/usr/local/rvm/gems/ruby-2.0.0-p481@global

やれやれ、1周間かかってやっと解決した。

さくらVPS:Nginx+unicorn+Rails+MySQL(その2)

つづき。

unicornのインストールと設定

インストールは gem コマンド一発。

[root@www2465uo Lathercraft]# gem install unicorn

設定ファイルを ${RAILS_ROOT}/config の中に作る。

worker_processes 2
working_directory "/var/www/Lathercraft"

listen "/var/run/unicorn/unicorn_lathercraft.sock"
pid "/var/run/unicorn/unicorn_lathercraft.pid"

preload_app true

他にもいろいろ書けるみたいだけど、これで最低限のよう。sock や pid のためのディレクトリを作る。

[root@www2465uo Lathercraft]# mkdir /var/run/unicorn
[root@www2465uo Lathercraft]# chmod 777 /var/run/unicorn

ファイル自体は勝手に作ってくれるらしい。

unicornの起動

[root@www2465uo Lathercraft]# unicorn_rails -c /var/www/Lathercraft/config/unicorn.rb -E production -D

Nginxの設定

/etc/nginx/conf.d/www.lathercraft.new.conf を次のようにした。

upstream unicorn-lathercraft {
    server unix:/var/run/unicorn/unicorn_lathercraft.sock;
}

server {
    # port
    listen 80;

    # server name
    server_name www.lathercraft.net;

    # document root
    root /var/www/Lathercraft;

    # index
    #index index.php index.html index.htm;

    # log files
    access_log /var/log/nginx/www.lathercraft.net/access.log main;
    error_log /var/log/nginx/www.lathercraft.net/error.log warn;

    location / {
        root /var/www/Lathercraft;

        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_pass http://unicorn-lathercraft;
    }

}

これで Nginx を再起動。

[root@www2465uo www]# service nginx restart
nginx を停止中:                                            [  OK  ]
nginx を起動中:                                            [  OK  ]

ブラウザからアクセスすると、アプリのホームページが表示された!

lathercraft-home-20140814

unicornの自動起動

さいごに、OS を起動した時に unicorn も自動起動するようにしておく。/etc/init.d/unicorn_lathercraft を次のようにした。

#!/bin/bash
#
# unicorn_lathercraft Startup script for unicorn.
#
# chkconfig: - 85 15
# description: lathercraft on unicorn start/stop script.
#

set -u
set -e

export PATH=/usr/local/rvm/rubies/ruby-2.0.0-p481/bin:/usr/local/rvm/gems/ruby-2.0.0-p481/bin:$PATH
APP_NAME=Lathercraft
APP_ROOT="/var/www/$APP_NAME"
CNF="$APP_ROOT/config/unicorn.rb"
PID="/var/run/unicorn/unicorn_lathercraft.pid"
ENV=production
UNICORN_OPTS="-c $CNF -E $ENV -D"
old_pid="$PID.oldbin"

cd $APP_ROOT || exit 1

sig () {
test -s "$PID" && kill -$1 `cat $PID`
}
oldsig () {
test -s $old_pid && kill -$1 `cat $old_pid`
}

case ${1-help} in
start)
sig 0 && echo >&2 "Already running" && exit 0
cd $APP_ROOT ; unicorn_rails $UNICORN_OPTS
;;
stop)
sig QUIT && exit 0
echo >&2 "Not running"
;;
force-stop)
sig TERM && exit 0
echo >&2 "Not running"
;;
restart|reload)
sig HUP && echo reloaded OK && exit 0
echo >&2 "Couldn't reload, starting instead"
unicorn_rails $UNICORN_OPTS
;;
upgrade)
sig USR2 && exit 0
echo >&2 "Couldn't upgrade, starting instead"
unicorn_rails $UNICORN_OPTS
;;
rotate)
sig USR1 && echo rotated logs OK && exit 0
echo >&2 "Couldn't rotate logs" && exit 1
;;
*)
echo >&2 "Usage: $0 <start|stop|restart|upgrade|rotate|force-stop>"
exit 1
;;
esac

</start|stop|restart|upgrade|rotate|force-stop>

[root@www2465uo Lathercraft]# vim /etc/init.d/unicorn_lathercraft
[root@www2465uo Lathercraft]# chmod +x /etc/init.d/unicorn_lathercraft
[root@www2465uo Lathercraft]# chkconfig unicorn_lathercraft on
[root@www2465uo Lathercraft]# chkconfig --list unicorn_lathercraft
unicorn_lathercraft	0:off	1:off	2:on	3:on	4:on	5:on	6:off

さくらVPS:Nginx+unicorn+Rails+MySQL(その1)

MySQL

MySQLは導入済み。接続用のUNIXソケットは /ver/lib/mysql/mysql.sock。

Railsアプリ

専用のユーザーを作る。

[takatoh@www2465uo www]$ sudo useradd lathercraft
[sudo] password for takatoh: 
[takatoh@www2465uo www]$ sudo passwd lathercraft
ユーザー lathercraft のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: 全ての認証トークンが正しく更新できました。

GitHub からクローン。

[takatoh@www2465uo www]$ sudo git clone https://github.com/takatoh/Lathercraft.git
[sudo] password for takatoh: 
Initialized empty Git repository in /var/www/Lathercraft/.git/
remote: Counting objects: 1736, done.
remote: Compressing objects: 100% (12/12), done.
remote: Total 1736 (delta 2), reused 0 (delta 0)
Receiving objects: 100% (1736/1736), 178.63 KiB | 157 KiB/s, done.
Resolving deltas: 100% (1132/1132), done.
[takatoh@www2465uo www]$ sudo chown -R lathercraft:lathercraft Lathercraft
[takatoh@www2465uo www]$ cd Lathercraft
[takatoh@www2465uo Lathercraft]$ bundle install

Gemfile.lock に書き込もうとした時に権限がなかった、ていうエラーがでた。気持ちが悪いので、パーミッションをつけてもう一度やり直し。

[takatoh@www2465uo Lathercraft]$ sudo chmod 766 Gemfile.lock
[sudo] password for takatoh: 
[takatoh@www2465uo Lathercraft]$ bundle install

OK。

config/database.yml はこうなってる。

(前略)
production:
  adapter: mysql2
  encoding: utf8
  pool: 5
  database: lathercraft_production
  username: lathercraft
  password: <%= ENV['LATHERCRAFT_DATABASE_PASSWORD'] %>
  host: localhost

データベースを作る。

[takatoh@www2465uo Lathercraft]$ rake db:create -E production
rake aborted!
NameError: undefined local variable or method `production' for #

(See full trace by running task with --trace)
[takatoh@www2465uo Lathercraft]$ rake db:create RAILS_ENV=production
Access denied for user 'lathercraft'@'localhost' (using password: NO)Please provide the root password for your mysql installation
>

あれ、ユーザーは先に作っとかなきゃいけないのか?

[takatoh@www2465uo Lathercraft]$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 27
Server version: 5.1.73 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> CREATE USER lathercraft@localhost IDENTIFIED BY 'xxxxxxxx';
ERROR 1396 (HY000): Operation CREATE USER failed for 'lathercraft'@'localhost'
mysql> exit;
Bye
[takatoh@www2465uo Lathercraft]$ rake db:create RAILS_ENV=production

OK。
設定ファイルを編集。

[takatoh@www2465uo Lathercraft]$ sudo -s
[sudo] password for takatoh: 
[rooth@www2465uo Lathercraft]$ cp config/site_config.yml.example config/site_config.yml
[root@www2465uo Lathercraft]# vim config/site_config.yml
[root@www2465uo Lathercraft]# cp config/secrets.yml.example config/secretes.yml
[root@www2465uo Lathercraft]# vim config/secretes.yml

データベースのマイグレーション。

[root@www2465uo Lathercraft]# rake db:migrate RAILS_ENV=production
Could not find tzinfo-1.2.1 in any of the sources
Run `bundle install` to install missing gems.

tzinfo がないとな?

[root@www2465uo Lathercraft]# gem list

*** LOCAL GEMS ***

actionmailer (4.1.4)
actionpack (4.1.4)
actionview (4.1.4)
activemodel (4.1.4)
activerecord (4.1.4)
activesupport (4.1.4)
arel (5.0.1.20140414130214)
bigdecimal (1.2.0)
builder (3.2.2)
bundler (1.6.2)
bundler-unload (1.0.2)
coffee-rails (4.0.1)
coffee-script (2.3.0)
coffee-script-source (1.7.1)
erubis (2.7.0)
execjs (2.2.1)
executable-hooks (1.3.2)
gem-wrappers (1.2.4)
hike (1.2.3)
i18n (0.6.11)
io-console (0.4.2)
jbuilder (2.1.3)
jquery-rails (3.1.1)
json (1.8.1, 1.7.7)
mail (2.5.4)
mime-types (1.25.1)
minitest (5.4.0, 4.3.2)
multi_json (1.10.1)
mysql2 (0.3.16)
polyglot (0.3.5)
psych (2.0.0)
rack (1.5.2)
rack-test (0.6.2)
rails (4.1.4)
railties (4.1.4)
rake (10.3.2, 0.9.6)
rdoc (4.1.1, 4.0.0)
rubygems-bundler (1.4.4)
rvm (1.11.3.9)
sass (3.2.19)
sass-rails (4.0.3)
sdoc (0.4.1)
spring (1.1.3)
sprockets (2.12.1, 2.11.0)
sprockets-rails (2.1.3)
sqlite3 (1.3.9)
test-unit (2.0.0.0)
thor (0.19.1)
thread_safe (0.3.4)
tilt (1.4.1)
treetop (1.4.15)
turbolinks (2.2.2)
tzinfo (1.2.2)
uglifier (2.5.3)

入ってるじゃん。あ、1.2.1 じゃないとダメなのか?

[root@www2465uo Lathercraft]# gem install tzinfo -v '1.2.1'
Fetching: tzinfo-1.2.1.gem (100%)
Successfully installed tzinfo-1.2.1
Parsing documentation for tzinfo-1.2.1
Installing ri documentation for tzinfo-1.2.1
Done installing documentation for tzinfo after 4 seconds
1 gem installed

その後も mini_portile-0.6.0 とか nokogiri-1.6.3.1 とかが見つからないっていうエラーが出たけど、bundle install したら大丈夫のようだ。
じゃ、あらためて。

[root@www2465uo Lathercraft]# rake db:migrate RAILS_ENV=production
rake aborted!
Devise.secret_key was not set. Please add the following to your Devise initializer:

  config.secret_key = 'd3fd9f7eeef0d53467781729d97e738b88f3f1e3c854d3b8151ef5b32f388dca8620943c83303e76d098d553f058e222ee09df5040b86400c48b48c28da54183'

Please ensure you restarted your application after installing Devise or setting the key.
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/devise-3.2.4/lib/devise/rails/routes.rb:481:in `raise_no_secret_key'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/devise-3.2.4/lib/devise/rails/routes.rb:206:in `devise_for'
/var/www/Lathercraft/config/routes.rb:20:in `block in '
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/actionpack-4.1.4/lib/action_dispatch/routing/route_set.rb:337:in `instance_exec'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/actionpack-4.1.4/lib/action_dispatch/routing/route_set.rb:337:in `eval_block'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/actionpack-4.1.4/lib/action_dispatch/routing/route_set.rb:315:in `draw'
/var/www/Lathercraft/config/routes.rb:1:in `'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/activesupport-4.1.4/lib/active_support/dependencies.rb:241:in `load'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/activesupport-4.1.4/lib/active_support/dependencies.rb:241:in `block in load'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/activesupport-4.1.4/lib/active_support/dependencies.rb:232:in `load_dependency'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/activesupport-4.1.4/lib/active_support/dependencies.rb:241:in `load'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/railties-4.1.4/lib/rails/application/routes_reloader.rb:40:in `block in load_paths'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/railties-4.1.4/lib/rails/application/routes_reloader.rb:40:in `each'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/railties-4.1.4/lib/rails/application/routes_reloader.rb:40:in `load_paths'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/railties-4.1.4/lib/rails/application/routes_reloader.rb:16:in `reload!'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/railties-4.1.4/lib/rails/application/routes_reloader.rb:26:in `block in updater'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/activesupport-4.1.4/lib/active_support/file_update_checker.rb:75:in `call'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/activesupport-4.1.4/lib/active_support/file_update_checker.rb:75:in `execute'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/railties-4.1.4/lib/rails/application/routes_reloader.rb:27:in `updater'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/railties-4.1.4/lib/rails/application/routes_reloader.rb:7:in `execute_if_updated'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/railties-4.1.4/lib/rails/application/finisher.rb:71:in `block in '
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/railties-4.1.4/lib/rails/initializable.rb:30:in `instance_exec'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/railties-4.1.4/lib/rails/initializable.rb:30:in `run'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/railties-4.1.4/lib/rails/initializable.rb:55:in `block in run_initializers'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/railties-4.1.4/lib/rails/initializable.rb:54:in `run_initializers'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/railties-4.1.4/lib/rails/application.rb:300:in `initialize!'
/var/www/Lathercraft/config/environment.rb:5:in `'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/activesupport-4.1.4/lib/active_support/dependencies.rb:247:in `require'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/activesupport-4.1.4/lib/active_support/dependencies.rb:247:in `block in require'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/activesupport-4.1.4/lib/active_support/dependencies.rb:232:in `load_dependency'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/activesupport-4.1.4/lib/active_support/dependencies.rb:247:in `require'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/railties-4.1.4/lib/rails/application.rb:276:in `require_environment!'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/railties-4.1.4/lib/rails/application.rb:379:in `block in run_tasks_blocks'
Tasks: TOP => db:migrate => environment
(See full trace by running task with --trace)

うおう!今度はシークレットキーか。出力されてる文字列を、config/initializers/devise.rb の該当箇所に貼り付ける。

[root@www2465uo Lathercraft]# vim config/initializers/devise.rb

今度こそどうだ。

[root@www2465uo Lathercraft]# rake db:migrate RAILS_ENV=production
== 20140708134805 CreateBrands: migrating =====================================
-- create_table(:brands)
   -> 0.1367s
-- add_index(:brands, :name, {:unique=>true})
   -> 0.1430s
-- add_index(:brands, :slug, {:unique=>true})
   -> 0.2081s
== 20140708134805 CreateBrands: migrated (0.4885s) ============================

== 20140708135345 CreateProducts: migrating ===================================
-- create_table(:products)
   -> 0.0521s
-- add_index(:products, [:brand_id, :slug], {:unique=>true})
   -> 0.0269s
== 20140708135345 CreateProducts: migrated (0.0794s) ==========================

== 20140708140110 CreateItems: migrating ======================================
-- create_table(:items)
   -> 0.0132s
-- add_index(:items, :md5, {:unique=>true})
   -> 0.0350s
== 20140708140110 CreateItems: migrated (0.0485s) =============================

== 20140708215016 DeviseCreateUsers: migrating ================================
-- create_table(:users)
   -> 0.0087s
-- add_index(:users, :email, {:unique=>true})
   -> 0.0153s
-- add_index(:users, :reset_password_token, {:unique=>true})
   -> 0.0266s
-- add_index(:users, :confirmation_token, {:unique=>true})
   -> 0.0146s
== 20140708215016 DeviseCreateUsers: migrated (0.0658s) =======================

== 20140719083223 CreateCategories: migrating =================================
-- create_table(:categories)
   -> 0.0059s
== 20140719083223 CreateCategories: migrated (0.0060s) ========================

== 20140719085230 AddCategoryIdToItem: migrating ==============================
-- add_column(:items, :category_id, :integer)
   -> 0.0115s
== 20140719085230 AddCategoryIdToItem: migrated (0.0116s) =====================

== 20140720065147 AddAdminToUsers: migrating ==================================
-- add_column(:users, :admin, :boolean, {:null=>false, :default=>false})
   -> 0.0157s
== 20140720065147 AddAdminToUsers: migrated (0.0158s) =========================

== 20140720134222 CreateStorages: migrating ===================================
-- create_table(:storages)
   -> 0.0070s
== 20140720134222 CreateStorages: migrated (0.0071s) ==========================

== 20140721073254 CreateDownloads: migrating ==================================
-- create_table(:downloads)
   -> 0.0060s
== 20140721073254 CreateDownloads: migrated (0.0060s) =========================

== 20140721080127 CreateStoredItems: migrating ================================
-- create_table(:stored_items)
   -> 0.0075s
== 20140721080127 CreateStoredItems: migrated (0.0076s) =======================

== 20140801123109 CreateRemovedItems: migrating ===============================
-- create_table(:removed_items)
   -> 0.0074s
== 20140801123109 CreateRemovedItems: migrated (0.0075s) ======================

== 20140801132346 AddBrandToRemovedItems: migrating ===========================
-- add_column(:removed_items, :brand, :string)
   -> 0.0109s
== 20140801132346 AddBrandToRemovedItems: migrated (0.0110s) ==================

== 20140802001131 AddNameToUsers: migrating ===================================
-- add_column(:users, :name, :string)
   -> 0.0770s
-- add_index(:users, :name, {:unique=>true})
   -> 0.0185s
== 20140802001131 AddNameToUsers: migrated (0.0958s) ==========================

== 20140802070045 CreateContacts: migrating ===================================
-- create_table(:contacts)
   -> 0.0095s
== 20140802070045 CreateContacts: migrated (0.0096s) ==========================

== 20140808134556 AddOnHoldToItems: migrating =================================
-- add_column(:items, :on_hold, :boolean)
   -> 0.0145s
== 20140808134556 AddOnHoldToItems: migrated (0.0147s) ========================

やった!
ついでに、production 環境用の secret_key_base を環境変数に設定して、アプリを起動してみる。

[root@www2465uo Lathercraft]# export SECRET_KEY_BASE=`rake secret`
[root@www2465uo Lathercraft]# rails server -e production
=> Booting WEBrick
=> Rails 4.1.4 application starting in production on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Notice: server is listening on all interfaces (0.0.0.0). Consider using 127.0.0.1 (--binding option)
=> Ctrl-C to shutdown server
[2014-08-14 15:18:04] INFO  WEBrick 1.3.1
[2014-08-14 15:18:04] INFO  ruby 2.0.0 (2014-05-08) [x86_64-linux]
[2014-08-14 15:18:04] INFO  WEBrick::HTTPServer#start: pid=27822 port=3000

ブラウザからアクセスすると、ちゃんとページが表示された。

というところで、今回はここまで。

さくらVPS:rootユーザー用にRubyとRailsをインストール

rvmとRubyのインストール

前回は、作業用ユーザーの環境に rvm と Ruby をインストールしたけど、今回は root ユーザーの環境にインストールする。ま、このへんは基本的に前回と同じ作業なので、簡単に。rvm のインストールから。

[root@www2465uo takatoh]# curl -L https://get.rvm.io | bash -s stable
[root@www2465uo takatoh]# source /etc/profile.d/rvm.sh

rvm list known でインストール可能なバージョンが見られる。

[root@www2465uo takatoh]# rvm list known
# MRI Rubies
[ruby-]1.8.6[-p420]
[ruby-]1.8.7[-head] # security released on head
[ruby-]1.9.1[-p431]
[ruby-]1.9.2[-head] # security released on head
[ruby-]1.9.3[-p547]
[ruby-]2.0.0-p451
[ruby-]2.0.0[-p481]
[ruby-]2.1.1
[ruby-]2.1[.2]
[ruby-]2.1-head
ruby-head

# GoRuby
goruby

# Topaz
topaz

# TheCodeShop - MRI experimental patches
tcs

# jamesgolick - All around gangster
jamesgolick

# Minimalistic ruby implementation - ISO 30170:2012
mruby[-head]

# JRuby
jruby-1.6.8
jruby[-1.7.13]
jruby-head

# Rubinius
rbx-1.3.3
rbx-2.0.0
rbx-2.1.1
rbx[-2.2.10]
rbx-head

# Ruby Enterprise Edition
ree-1.8.6
ree[-1.8.7][-2012.02]

# Kiji
kiji

# MagLev
maglev[-head]
maglev-1.0.0

# Mac OS X Snow Leopard Or Newer
macruby-0.10
macruby-0.11
macruby[-0.12]
macruby-nightly
macruby-head

# Opal
opal

# IronRuby
ironruby[-1.1.3]
ironruby-head

Ruby 2.0.0 をインストール。

[root@www2465uo takatoh]# rvm install 2.0.0
[root@www2465uo takatoh]# ruby -v
ruby 2.0.0p481 (2014-05-08 revision 45883) [x86_64-linux]
[root@www2465uo takatoh]# which ruby
/usr/local/rvm/rubies/ruby-2.0.0-p481/bin/ruby

へえ、root ユーザーでインストールすると /usr/local 以下にインストールされるんだ。

Ruby on Railsのインストール

[root@www2465uo takatoh]# gem install rails

長々とメッセージが出ていっぱいインストールされる。

サンプルアプリの作成

とりあえず Rails でアプリを作ってみる。

[root@www2465uo takatoh]# rails new myapp -d mysql
      create  
      create  README.rdoc
      create  Rakefile
      create  config.ru
      create  .gitignore
      create  Gemfile
      create  app
      create  app/assets/javascripts/application.js
      create  app/assets/stylesheets/application.css
      create  app/controllers/application_controller.rb
      create  app/helpers/application_helper.rb
      create  app/views/layouts/application.html.erb
      create  app/assets/images/.keep
      create  app/mailers/.keep
      create  app/models/.keep
      create  app/controllers/concerns/.keep
      create  app/models/concerns/.keep
      create  bin
      create  bin/bundle
      create  bin/rails
      create  bin/rake
      create  config
      create  config/routes.rb
      create  config/application.rb
      create  config/environment.rb
      create  config/secrets.yml
      create  config/environments
      create  config/environments/development.rb
      create  config/environments/production.rb
      create  config/environments/test.rb
      create  config/initializers
      create  config/initializers/assets.rb
      create  config/initializers/backtrace_silencers.rb
      create  config/initializers/cookies_serializer.rb
      create  config/initializers/filter_parameter_logging.rb
      create  config/initializers/inflections.rb
      create  config/initializers/mime_types.rb
      create  config/initializers/session_store.rb
      create  config/initializers/wrap_parameters.rb
      create  config/locales
      create  config/locales/en.yml
      create  config/boot.rb
      create  config/database.yml
      create  db
      create  db/seeds.rb
      create  lib
      create  lib/tasks
      create  lib/tasks/.keep
      create  lib/assets
      create  lib/assets/.keep
      create  log
      create  log/.keep
      create  public
      create  public/404.html
      create  public/422.html
      create  public/500.html
      create  public/favicon.ico
      create  public/robots.txt
      create  test/fixtures
      create  test/fixtures/.keep
      create  test/controllers
      create  test/controllers/.keep
      create  test/mailers
      create  test/mailers/.keep
      create  test/models
      create  test/models/.keep
      create  test/helpers
      create  test/helpers/.keep
      create  test/integration
      create  test/integration/.keep
      create  test/test_helper.rb
      create  tmp/cache
      create  tmp/cache/assets
      create  vendor/assets/javascripts
      create  vendor/assets/javascripts/.keep
      create  vendor/assets/stylesheets
      create  vendor/assets/stylesheets/.keep
         run  bundle install
Don't run Bundler as root. Bundler can ask for sudo if it is needed, and
installing your bundle as root will break this application for all non-root
users on this machine.
Fetching gem metadata from https://rubygems.org/...........
Resolving dependencies...
Using rake 10.3.2
Using i18n 0.6.11
Using json 1.8.1
Using minitest 5.4.0
Using thread_safe 0.3.4
Using tzinfo 1.2.2
Using activesupport 4.1.4
Using builder 3.2.2
Using erubis 2.7.0
Using actionview 4.1.4
Using rack 1.5.2
Using rack-test 0.6.2
Using actionpack 4.1.4
Using mime-types 1.25.1
Using polyglot 0.3.5
Using treetop 1.4.15
Using mail 2.5.4
Using actionmailer 4.1.4
Using activemodel 4.1.4
Using arel 5.0.1.20140414130214
Using activerecord 4.1.4
Using bundler 1.6.2
Using coffee-script-source 1.7.1
Using execjs 2.2.1
Using coffee-script 2.3.0
Using thor 0.19.1
Using railties 4.1.4
Using coffee-rails 4.0.1
Using hike 1.2.3
Using multi_json 1.10.1
Using jbuilder 2.1.3
Using jquery-rails 3.1.1

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    /usr/local/rvm/rubies/ruby-2.0.0-p481/bin/ruby extconf.rb 
checking for ruby/thread.h... yes
checking for rb_thread_call_without_gvl() in ruby/thread.h... yes
checking for rb_thread_blocking_region()... yes
checking for rb_wait_for_single_fd()... yes
checking for rb_hash_dup()... yes
checking for rb_intern3()... yes
-----
Using mysql_config at /usr/bin/mysql_config
-----
checking for mysql.h... no
checking for mysql/mysql.h... no
-----
mysql.h is missing.  please check your installation of mysql and try again.
-----
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
	--with-opt-dir
	--without-opt-dir
	--with-opt-include
	--without-opt-include=${opt-dir}/include
	--with-opt-lib
	--without-opt-lib=${opt-dir}/lib
	--with-make-prog
	--without-make-prog
	--srcdir=.
	--curdir
	--ruby=/usr/local/rvm/rubies/ruby-2.0.0-p481/bin/ruby
	--with-mysql-dir
	--without-mysql-dir
	--with-mysql-include
	--without-mysql-include=${mysql-dir}/include
	--with-mysql-lib
	--without-mysql-lib=${mysql-dir}/
	--with-mysql-config
	--without-mysql-config

extconf failed, exit code 1

Gem files will remain installed in /usr/local/rvm/gems/ruby-2.0.0-p481/gems/mysql2-0.3.16 for inspection.
Results logged to /usr/local/rvm/gems/ruby-2.0.0-p481/extensions/x86_64-linux/2.0.0/mysql2-0.3.16/gem_make.out
An error occurred while installing mysql2 (0.3.16), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.3.16'` succeeds before bundling.
         run  bundle exec spring binstub --all
/usr/local/rvm/gems/ruby-2.0.0-p481@global/gems/bundler-1.6.2/lib/bundler/resolver.rb:352:in `resolve': Could not find gem 'mysql2 (>= 0) ruby' in the gems available on this machine. (Bundler::GemNotFound)
	from /usr/local/rvm/gems/ruby-2.0.0-p481@global/gems/bundler-1.6.2/lib/bundler/resolver.rb:165:in `start'
	from /usr/local/rvm/gems/ruby-2.0.0-p481@global/gems/bundler-1.6.2/lib/bundler/resolver.rb:129:in `resolve'
	from /usr/local/rvm/gems/ruby-2.0.0-p481@global/gems/bundler-1.6.2/lib/bundler/definition.rb:203:in `resolve'
	from /usr/local/rvm/gems/ruby-2.0.0-p481@global/gems/bundler-1.6.2/lib/bundler/definition.rb:133:in `specs'
	from /usr/local/rvm/gems/ruby-2.0.0-p481@global/gems/bundler-1.6.2/lib/bundler/definition.rb:178:in `specs_for'
	from /usr/local/rvm/gems/ruby-2.0.0-p481@global/gems/bundler-1.6.2/lib/bundler/definition.rb:167:in `requested_specs'
	from /usr/local/rvm/gems/ruby-2.0.0-p481@global/gems/bundler-1.6.2/lib/bundler/environment.rb:18:in `requested_specs'
	from /usr/local/rvm/gems/ruby-2.0.0-p481@global/gems/bundler-1.6.2/lib/bundler/runtime.rb:13:in `setup'
	from /usr/local/rvm/gems/ruby-2.0.0-p481@global/gems/bundler-1.6.2/lib/bundler.rb:120:in `setup'
	from /usr/local/rvm/gems/ruby-2.0.0-p481@global/gems/bundler-1.6.2/lib/bundler/setup.rb:17:in `'
	from /usr/local/rvm/rubies/ruby-2.0.0-p481/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /usr/local/rvm/rubies/ruby-2.0.0-p481/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'

おや、何かエラーが出た。mysql2 の gem がインストールできてないみたいだ。じゃ、直接インストールしてみるか。

[root@www2465uo takatoh]# gem install mysql2 -v '0.3.16'
Building native extensions.  This could take a while...
ERROR:  Error installing mysql2:
	ERROR: Failed to build gem native extension.

    /usr/local/rvm/rubies/ruby-2.0.0-p481/bin/ruby extconf.rb
checking for ruby/thread.h... yes
checking for rb_thread_call_without_gvl() in ruby/thread.h... yes
checking for rb_thread_blocking_region()... yes
checking for rb_wait_for_single_fd()... yes
checking for rb_hash_dup()... yes
checking for rb_intern3()... yes
-----
Using mysql_config at /usr/bin/mysql_config
-----
checking for mysql.h... no
checking for mysql/mysql.h... no
-----
mysql.h is missing.  please check your installation of mysql and try again.
-----
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
	--with-opt-dir
	--without-opt-dir
	--with-opt-include
	--without-opt-include=${opt-dir}/include
	--with-opt-lib
	--without-opt-lib=${opt-dir}/lib
	--with-make-prog
	--without-make-prog
	--srcdir=.
	--curdir
	--ruby=/usr/local/rvm/rubies/ruby-2.0.0-p481/bin/ruby
	--with-mysql-dir
	--without-mysql-dir
	--with-mysql-include
	--without-mysql-include=${mysql-dir}/include
	--with-mysql-lib
	--without-mysql-lib=${mysql-dir}/
	--with-mysql-config
	--without-mysql-config

extconf failed, exit code 1

Gem files will remain installed in /usr/local/rvm/gems/ruby-2.0.0-p481/gems/mysql2-0.3.16 for inspection.
Results logged to /usr/local/rvm/gems/ruby-2.0.0-p481/extensions/x86_64-linux/2.0.0/mysql2-0.3.16/gem_make.out

ダメのようだね。mysql.h が見つからない、といっているらしい。

[root@www2465uo takatoh]# yum install mysql-devel
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * epel: ftp.riken.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package mysql-devel.x86_64 0:5.1.73-3.el6_5 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package            Arch          Version                  Repository      Size
================================================================================
Installing:
 mysql-devel        x86_64        5.1.73-3.el6_5           updates        129 k

Transaction Summary
================================================================================
Install       1 Package(s)

Total download size: 129 k
Installed size: 388 k
Is this ok [y/N]: y
Downloading Packages:
mysql-devel-5.1.73-3.el6_5.x86_64.rpm                    | 129 kB     00:00     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : mysql-devel-5.1.73-3.el6_5.x86_64                            1/1 
  Verifying  : mysql-devel-5.1.73-3.el6_5.x86_64                            1/1 

Installed:
  mysql-devel.x86_64 0:5.1.73-3.el6_5                                           

Complete!

今度はどうだ。

[root@www2465uo takatoh]# cd myapp
[root@www2465uo myapp]# bundle install
Don't run Bundler as root. Bundler can ask for sudo if it is needed, and
installing your bundle as root will break this application for all non-root
users on this machine.
Fetching gem metadata from https://rubygems.org/...........
Resolving dependencies...
Using rake 10.3.2
Using i18n 0.6.11
Using json 1.8.1
Using minitest 5.4.0
Using thread_safe 0.3.4
Using tzinfo 1.2.2
Using activesupport 4.1.4
Using builder 3.2.2
Using erubis 2.7.0
Using actionview 4.1.4
Using rack 1.5.2
Using rack-test 0.6.2
Using actionpack 4.1.4
Using mime-types 1.25.1
Using polyglot 0.3.5
Using treetop 1.4.15
Using mail 2.5.4
Using actionmailer 4.1.4
Using activemodel 4.1.4
Using arel 5.0.1.20140414130214
Using activerecord 4.1.4
Using bundler 1.6.2
Using coffee-script-source 1.7.1
Using execjs 2.2.1
Using coffee-script 2.3.0
Using thor 0.19.1
Using railties 4.1.4
Using coffee-rails 4.0.1
Using hike 1.2.3
Using multi_json 1.10.1
Using jbuilder 2.1.3
Using jquery-rails 3.1.1
Installing mysql2 0.3.16
Using tilt 1.4.1
Using sprockets 2.11.0
Using sprockets-rails 2.1.3
Using rails 4.1.4
Using rdoc 4.1.1
Using sass 3.2.19
Using sass-rails 4.0.3
Using sdoc 0.4.1
Using spring 1.1.3
Using turbolinks 2.2.2
Using uglifier 2.5.3
Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.

OK みたい。
じゃ、アプリを起動してみよう。おっと、その前に 3000 番ポートを開けておかなきゃ。/etc/sysconfig/iptables を編集して次の行を挿入。

-A RH-Firewall-1-INPUT -p tcp --dport 3000 -j ACCEPT

で、iptables を再起動。

[root@www2465uo myapp]# service iptables restart
iptables: チェインをポリシー ACCEPT へ設定中filter         [  OK  ]
iptables: ファイアウォールルールを消去中:                  [  OK  ]
iptables: モジュールを取り外し中:                          [  OK  ]
iptables: ファイアウォールルールを適用中:                  [  OK  ]

よし、アプリを起動してブラウザからアクセスしてみる。

rails-mysql2-error

あー、MySQL の方を設定してないからか。

MySQLにデータベースを作る

myapp というデータベースを作って、myapp@localhost からアクセスできるようにする。

[root@www2465uo myapp]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 441
Server version: 5.1.73 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> CREATE USER myapp@localhost IDENTIFIED BY 'myapp';
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE DATABASE myapp_development;
Query OK, 1 row affected (0.00 sec)

mysql> GRANT ALL ON myapp_development.* TO myapp;
Query OK, 0 rows affected (0.00 sec)

mysql> EXIT;
Bye

Railsのデータベースに関する設定

config/database.yml を編集。

# MySQL. Versions 5.0+ are recommended.
#
# Install the MYSQL driver
# gem install mysql2
#
# Ensure the MySQL gem is defined in your Gemfile
# gem 'mysql2'
#
# And be sure to use new-style password hashing:
# http://dev.mysql.com/doc/refman/5.0/en/old-client.html
#
default: &default
adapter: mysql2
encoding: utf8
pool: 5
username: myapp
password: myapp
socket: /var/lib/mysql/mysql.sock

development:
<<: *default database: myapp_development 
(後略)

Railsの起動と確認

[root@www2465uo myapp]# rake db:setup
myapp_development already exists
Mysql2::Error: Access denied for user 'myapp'@'localhost' to database 'myapp_test': CREATE DATABASE `myapp_test` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/activerecord-4.1.4/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:303:in `query'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/activerecord-4.1.4/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:303:in `block in execute'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/activerecord-4.1.4/lib/active_record/connection_adapters/abstract_adapter.rb:373:in `block in log'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/activesupport-4.1.4/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/activerecord-4.1.4/lib/active_record/connection_adapters/abstract_adapter.rb:367:in `log'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/activerecord-4.1.4/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:303:in `execute'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/activerecord-4.1.4/lib/active_record/connection_adapters/mysql2_adapter.rb:228:in `execute'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/activerecord-4.1.4/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:371:in `create_database'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/activerecord-4.1.4/lib/active_record/tasks/mysql_database_tasks.rb:16:in `create'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/activerecord-4.1.4/lib/active_record/tasks/database_tasks.rb:88:in `create'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/activerecord-4.1.4/lib/active_record/tasks/database_tasks.rb:102:in `block in create_current'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/activerecord-4.1.4/lib/active_record/tasks/database_tasks.rb:209:in `block in each_current_configuration'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/activerecord-4.1.4/lib/active_record/tasks/database_tasks.rb:208:in `each'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/activerecord-4.1.4/lib/active_record/tasks/database_tasks.rb:208:in `each_current_configuration'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/activerecord-4.1.4/lib/active_record/tasks/database_tasks.rb:101:in `create_current'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/activerecord-4.1.4/lib/active_record/railties/databases.rake:17:in `block (2 levels) in '
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/rake-10.3.2/lib/rake/task.rb:240:in `call'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/rake-10.3.2/lib/rake/task.rb:240:in `block in execute'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/rake-10.3.2/lib/rake/task.rb:235:in `each'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/rake-10.3.2/lib/rake/task.rb:235:in `execute'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/rake-10.3.2/lib/rake/task.rb:179:in `block in invoke_with_call_chain'
/usr/local/rvm/rubies/ruby-2.0.0-p481/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/rake-10.3.2/lib/rake/task.rb:172:in `invoke_with_call_chain'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/rake-10.3.2/lib/rake/task.rb:201:in `block in invoke_prerequisites'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/rake-10.3.2/lib/rake/task.rb:199:in `each'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/rake-10.3.2/lib/rake/task.rb:199:in `invoke_prerequisites'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/rake-10.3.2/lib/rake/task.rb:178:in `block in invoke_with_call_chain'
/usr/local/rvm/rubies/ruby-2.0.0-p481/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/rake-10.3.2/lib/rake/task.rb:172:in `invoke_with_call_chain'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/rake-10.3.2/lib/rake/task.rb:201:in `block in invoke_prerequisites'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/rake-10.3.2/lib/rake/task.rb:199:in `each'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/rake-10.3.2/lib/rake/task.rb:199:in `invoke_prerequisites'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/rake-10.3.2/lib/rake/task.rb:178:in `block in invoke_with_call_chain'
/usr/local/rvm/rubies/ruby-2.0.0-p481/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/rake-10.3.2/lib/rake/task.rb:172:in `invoke_with_call_chain'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/rake-10.3.2/lib/rake/task.rb:165:in `invoke'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/rake-10.3.2/lib/rake/application.rb:150:in `invoke_task'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/rake-10.3.2/lib/rake/application.rb:106:in `block (2 levels) in top_level'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/rake-10.3.2/lib/rake/application.rb:106:in `each'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/rake-10.3.2/lib/rake/application.rb:106:in `block in top_level'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/rake-10.3.2/lib/rake/application.rb:115:in `run_with_threads'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/rake-10.3.2/lib/rake/application.rb:100:in `top_level'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/rake-10.3.2/lib/rake/application.rb:78:in `block in run'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/rake-10.3.2/lib/rake/application.rb:176:in `standard_exception_handling'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/rake-10.3.2/lib/rake/application.rb:75:in `run'
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/rake-10.3.2/bin/rake:33:in `'
/usr/local/rvm/gems/ruby-2.0.0-p481/bin/rake:23:in `load'
/usr/local/rvm/gems/ruby-2.0.0-p481/bin/rake:23:in `
‘ Couldn’t create database for {“adapter”=>”mysql2”, “encoding”=>”utf8”, “pool”=>5, “username”=>”myapp”, “password”=>”myapp”, “socket”=>”/var/lib/mysql/mysql.sock”, “database”=>”myapp_test”} /home/takatoh/myapp/db/schema.rb doesn’t exist yet. Run `rake db:migrate` to create it, then try again. If you do not intend to use a database, you should instead alter /home/takatoh/myapp/config/application.rb to limit the frameworks that will be loaded.

なんかいろいろメッセージが出てるけど、見ないことにする。
で、ブラウザからアクセスすると:

rails-welcome-aloard

今度はOK。

さくらVPSにRuby(rvm)をインストールした

yum コマンドでもインストールできるんだけど、それだと Ruby 1.8.7 だったので、rvm で Ruby 1.9.3 をインストールした。

[takatoh@www2465uo ~]$ curl -L https://get.rvm.io | bash -s stable
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 20758  100 20758    0     0  22601      0 --:--:-- --:--:-- --:--:-- 22601
Downloading https://github.com/wayneeseguin/rvm/archive/stable.tar.gz

Installing RVM to /home/takatoh/.rvm/
    Adding rvm PATH line to /home/takatoh/.profile /home/takatoh/.bashrc /home/takatoh/.zshrc.
    Adding rvm loading line to /home/takatoh/.bash_profile /home/takatoh/.zlogin.
Installation of RVM in /home/takatoh/.rvm/ is almost complete:

  * To start using RVM you need to run `source /home/takatoh/.rvm/scripts/rvm`
    in all your open shell windows, in rare cases you need to reopen all shell windows.

# takatoh,
#
#   Thank you for using RVM!
#   We sincerely hope that RVM helps to make your life easier and more enjoyable!!!
#
# ~Wayne, Michal & team.

In case of problems: http://rvm.io/help and https://twitter.com/rvm_io

  * WARNING: You have '~/.profile' file, you might want to load it,
    to do that add the following line to '/home/takatoh/.bash_profile':

      source ~/.profile

[takatoh@www2465uo ~]$ source /home/takatoh/.rvm/scripts/rvm
[takatoh@www2465uo ~]$ rvm -v
rvm 1.25.28 (stable) by Wayne E. Seguin , Michal Papis  [https://rvm.io/]
[takatoh@www2465uo ~]$ rvm install 1.9.3
Searching for binary rubies, this might take some time.
Found remote file https://rvm.io/binaries/centos/6/x86_64/ruby-1.9.3-p547.tar.bz2
Checking requirements for centos.
Installing requirements for centos.
Updating system.
Installing required packages: libyaml-devel, libffi-devel, readline-devel, zlib-devel, openssl-devel..takatoh password required for 'yum install -y libyaml-devel libffi-devel readline-devel zlib-devel openssl-devel': 
............
Requirements installation successful.
ruby-1.9.3-p547 - #configure
ruby-1.9.3-p547 - #download
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 10.2M  100 10.2M    0     0   218k      0  0:00:48  0:00:48 --:--:--  229k
ruby-1.9.3-p547 - #validate archive
ruby-1.9.3-p547 - #extract
ruby-1.9.3-p547 - #validate binary
ruby-1.9.3-p547 - #setup
ruby-1.9.3-p547 - #gemset created /home/takatoh/.rvm/gems/ruby-1.9.3-p547@global
ruby-1.9.3-p547 - #importing gemset /home/takatoh/.rvm/gemsets/global.gems....................................
ruby-1.9.3-p547 - #generating global wrappers........
ruby-1.9.3-p547 - #gemset created /home/takatoh/.rvm/gems/ruby-1.9.3-p547
ruby-1.9.3-p547 - #importing gemsetfile /home/takatoh/.rvm/gemsets/default.gems evaluated to empty gem list
ruby-1.9.3-p547 - #generating default wrappers........
[takatoh@www2465uo ~]$ ruby -v
ruby 1.9.3p547 (2014-05-14 revision 45962) [x86_64-linux]

さくらVPSにnode.jsをインストールした

普通に yum コマンドでインストールできた。

[takatoh@www2465uo ~]$ sudo yum install nodejs
[sudo] password for takatoh: 
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
epel/metalink                                            | 5.6 kB     00:01     
 * base: ftp.tsukuba.wide.ad.jp
 * epel: ftp.riken.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
base                                                     | 3.7 kB     00:00     
epel                                                     | 4.4 kB     00:00     
extras                                                   | 3.4 kB     00:00     
updates                                                  | 3.4 kB     00:00     
updates/primary_db                                       | 4.7 MB     00:21     
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package nodejs.x86_64 0:0.10.29-1.el6 will be installed
--> Processing Dependency: v8(x86-64) < 1:3.15 for package: nodejs-0.10.29-1.el6.x86_64
--> Processing Dependency: v8(x86-64) >= 1:3.14.5.7 for package: nodejs-0.10.29-1.el6.x86_64
--> Processing Dependency: libv8.so.3()(64bit) for package: nodejs-0.10.29-1.el6.x86_64
--> Processing Dependency: libuv.so.0.10()(64bit) for package: nodejs-0.10.29-1.el6.x86_64
--> Processing Dependency: libhttp_parser.so.2()(64bit) for package: nodejs-0.10.29-1.el6.x86_64
--> Processing Dependency: libcares19.so.2()(64bit) for package: nodejs-0.10.29-1.el6.x86_64
--> Running transaction check
---> Package c-ares19.x86_64 0:1.9.1-5.el6.3 will be installed
---> Package http-parser.x86_64 0:2.0-4.20121128gitcd01361.el6 will be installed
---> Package libuv.x86_64 1:0.10.27-1.el6 will be installed
---> Package v8.x86_64 1:3.14.5.10-9.el6 will be installed
--> Processing Dependency: libicuuc.so.42()(64bit) for package: 1:v8-3.14.5.10-9.el6.x86_64
--> Processing Dependency: libicui18n.so.42()(64bit) for package: 1:v8-3.14.5.10-9.el6.x86_64
--> Processing Dependency: libicudata.so.42()(64bit) for package: 1:v8-3.14.5.10-9.el6.x86_64
--> Running transaction check
---> Package libicu.x86_64 0:4.2.1-9.1.el6_2 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package          Arch        Version                           Repository
                                                                           Size
================================================================================
Installing:
 nodejs           x86_64      0.10.29-1.el6                     epel      498 k
Installing for dependencies:
 c-ares19         x86_64      1.9.1-5.el6.3                     epel       73 k
 http-parser      x86_64      2.0-4.20121128gitcd01361.el6      epel       22 k
 libicu           x86_64      4.2.1-9.1.el6_2                   base      4.9 M
 libuv            x86_64      1:0.10.27-1.el6                   epel       55 k
 v8               x86_64      1:3.14.5.10-9.el6                 epel      3.0 M

Transaction Summary
================================================================================
Install       6 Package(s)

Total download size: 8.6 M
Installed size: 31 M
Is this ok [y/N]: y
Downloading Packages:
(1/6): c-ares19-1.9.1-5.el6.3.x86_64.rpm                 |  73 kB     00:00     
(2/6): http-parser-2.0-4.20121128gitcd01361.el6.x86_64.r |  22 kB     00:00     
(3/6): libicu-4.2.1-9.1.el6_2.x86_64.rpm                 | 4.9 MB     00:22     
(4/6): libuv-0.10.27-1.el6.x86_64.rpm                    |  55 kB     00:00     
(5/6): nodejs-0.10.29-1.el6.x86_64.rpm                   | 498 kB     00:02     
(6/6): v8-3.14.5.10-9.el6.x86_64.rpm                     | 3.0 MB     00:13     
--------------------------------------------------------------------------------
Total                                           206 kB/s | 8.6 MB     00:42     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : http-parser-2.0-4.20121128gitcd01361.el6.x86_64              1/6 
  Installing : c-ares19-1.9.1-5.el6.3.x86_64                                2/6 
  Installing : libicu-4.2.1-9.1.el6_2.x86_64                                3/6 
  Installing : 1:v8-3.14.5.10-9.el6.x86_64                                  4/6 
  Installing : 1:libuv-0.10.27-1.el6.x86_64                                 5/6 
  Installing : nodejs-0.10.29-1.el6.x86_64                                  6/6 
  Verifying  : 1:v8-3.14.5.10-9.el6.x86_64                                  1/6 
  Verifying  : 1:libuv-0.10.27-1.el6.x86_64                                 2/6 
  Verifying  : libicu-4.2.1-9.1.el6_2.x86_64                                3/6 
  Verifying  : c-ares19-1.9.1-5.el6.3.x86_64                                4/6 
  Verifying  : http-parser-2.0-4.20121128gitcd01361.el6.x86_64              5/6 
  Verifying  : nodejs-0.10.29-1.el6.x86_64                                  6/6 

Installed:
  nodejs.x86_64 0:0.10.29-1.el6                                                 

Dependency Installed:
  c-ares19.x86_64 0:1.9.1-5.el6.3                                               
  http-parser.x86_64 0:2.0-4.20121128gitcd01361.el6                             
  libicu.x86_64 0:4.2.1-9.1.el6_2                                               
  libuv.x86_64 1:0.10.27-1.el6                                                  
  v8.x86_64 1:3.14.5.10-9.el6                                                   

Complete!
[takatoh@www2465uo ~]$ node -v
v0.10.29