さくらVPSを借りる　PHP・MySQL・Ruby編

#やること
* PHPの設定
* MySQLの設定
* Ruby & Ruby on Railsの設定

#PHPの設定

まずは管理者としてログイン。

```
$ sudo -s
```

`yum`コマンドを利用して必要そうなものをインストールします。

```
# yum install php php-devel php-mysql php-mbstring php-gd
```

インストールが終わったら、念の為バージョンを確認します。

```
# php -v
```

設定をいじります。その前にバックアップを忘れずに。

```
cp /etc/php.ini /etc/php.ini.org
vim /etc/php.ini
```

```:/etc/php.ini
修正前:;error_log = php_errors.log
修正後:error_log = /var/log/php_errors.log
...
修正前:;mbstring.language = Japanese
修正後:mbstring.language = Japanese
...
修正前:;mbstring.internal_encoding = EUC-JP
修正後:mbstring.internal_encoding = UTF-8
...
修正前:;mbstring.http_input = auto
修正後:mbstring.http_input = auto
...
修正前:;mbstring.detect_order = auto
修正後:mbstring.detect_order = auto
...
修正前:expose_php = On
修正後:expose_php = Off
...
修正前:;date.timezone 
修正後:date.timezone = Asia/Tokyo
```

修正が完了後、サービスを再起動して完了です。

```
# service httpd restart
```

#MySQLの設定

`yum`コマンドを利用してインストールします。

```
# yum install mysql-server
```

設定をいじります。その前にバックアップを忘れずに。

```
cp /etc/my.conf /etc/my.conf.org
vim /etc/my.conf
```

以下の行を`[mysqld_safe]`の上に追加します。

```:/etc/my.conf
...
character_set_server=utf8
default-storage-engine=InnoDB
innodb_file_per_table
[mysql]
default-character-set=utf8
[mysqldump]
default-character-set=utf8
...
```

修正が完了したら、サービスを開始します。

```
# service mysqld start
```

サービスの開始後、以下のコマンドを実行してパスワードを設定します。

```
# mysql_secure_installation
```

パスワードを設定したら、あとはデフォルト設定のまま進めます。

```
...
Set root password? [Y/n] Y
New password:（mysqlのrootユーザのパスワードを設定）
Re-enter new password:（上記パスワードの確認）
...
```

パスワードの設定が終わったら自動起動をonに設定。

```
# chkconfig mysqld on
```

以下のコマンドでmysqlを立ち上げるとpasswordの入力が促されるので入力。

```
# mysql -u root -p
```

無事ログインできたら完了です。

#Ruby & Ruby on Railsの設定
現在node.jsのインストール方法が変わっていたようなので、
ドットインストールさんのやり方とは一部違う箇所があります。

必要なあれこれをインストールします。

```
# yum install zlib-devel openssl-devel sqlite-devel
```

複数のRubyを管理するためのツール`rvm`をインストールします。

```
# curl -L https://get.rvm.io | bash -s stable
```

インストール後、表示された下記コマンド(人によって違う)を実行。

```
# source /home/username/.rvm/scripts/rvm
```

ドットインストールさんの動画の時にはRuby on Railsが1.9系を推奨していたようなのですが
現在は公式によると2.1も推奨しているようですので、今回は2.1をインストールしてみます。

```
# rvm install 2.1
```

インストールが終了したら下記コマンドを実行してRubyとGemのバージョンを確認します。

```
# ruby -v
# gem -v
```

あると便利らしいのでドキュメントは除外してSQLliteをインストールします。

```
# gem install --no-ri --no-rdoc sqlite3
```

Railsに必要なJavaScriptランタイムとしてnode.jsをインストールします。
まずはrepolistに`epel`があるのを確認します、無い場合は`node.js`の公式見て何とかしましょう。

```
# yum repolist
```

`node.js`のインストールをします。

```
# yum install nodejs npm --enablerepo=epel
```

インストールが完了したら、いよいいRailsのインストールをします。

```
# gem install rails
```

こちらもインストールが完了しましたらバージョンを確認します。

```
# rails -v
```

無事インストールが出来ていたら、Railsに必要な3000番のポートを開放するため、
以前編集した`iptables`に(念の為`ip6tables`も)記述を追加します。

```:/etc/sysconfig/iptables
...
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3000  -j ACCEPT
...
```

ファイヤーウォールの再起動で設定を反映。

```
# service iptables restart
# service ip6tables restart
```

##おまけ
おまけですが、起動を確認してみます。
まずは新しいアプリケーションを作成します。

```
# rails new myapp
```

ディレクトリを移動し、サーバーを起動します。

```
# cd myapp
# rails server
``` 

`http://vps.address:3000/`でRails画面が確認できたら成功です。


#引っかかった箇所
1. `yum install mysql-server`を実行した際、エラーがでていた
 * 内容は恐らく「リポジトリのサーバが不調であるため別のmirrorに転送します」
 * mirrorに移る仕様を知らずインストール失敗してるのかと必死に解決法調べてしまった
2. `rails`コマンドがないと言われる
 * 当初`rvm install 1.9.3`を実行していたため、途中で`rvm install 2.1`に変更した
 * その際Railsも1.9.3に紐付いていたらしく消えたことが理解できなかった
 * 再度`gem install rails`コマンドでインストールで解決