ニフティクラウド Computing で MySQL サーバーを構築しアプリケーションから利用してみる

ニフティクラウドComputingで「アプリ-DB」2台構成のインフラを試してみる簡易的な手順。

## DB サーバー作成

1. ニフティクラウド Computing にログイン
1. 左メニューから「サーバー」をクリックし「＋サーバー作成」ボタンをクリック
1. 下記の設定でサーバーを作成

* ゾーン：east-13
* イメージ：CentOS 6.4 64bit Plain
* サーバー名：db001
* グローバルIP：固定IPアドレスを利用する
* タイプ：mini
* 料金コース：月額
* SSHキー：(あらかじめ作成しておいたものを設定)
* スクリプト：(設定しない)
* ファイアウォール設定：(あらかじめ作成しておいたもの設定)

## DB サーバーへログイン

* SSH ターミナルソフトを利用しサーバーへログイン

## サーバーに MySQL をインストール

1. mysql-server パッケージのインストール
<pre>
[root@localhost ~]# yum install -y mysql-server
(略)
Complete!
</pre>
2. mysqld サービスの起動
<pre>
[root@localhost ~]# service mysqld start
mysqld を起動中:                                           [  OK  ]
</pre>
3. mysql へログイン
<pre>
[root@localhost ~]# mysql -u root
(略)
mysql>
</pre>


## MySQL に SQL を発行

<pre>
mysql> create database mydb;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| bbs_development    |
| mydb               |
| mysql              |
| test               |
+--------------------+
5 rows in set (0.00 sec)

mysql> use mydb;

mysql> create table blog (id INTEGER PRIMARY KEY AUTO_INCREMENT, name VARCHAR(128), body TEXT);
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO blog (name, body) VALUES('takeuchi', 'hello, world');
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO blog (name, body) VALUES('kato', 'hello, world 2');
Query OK, 1 row affected (0.00 sec)

mysql> select * from blog;
+----+----------+----------------+
| id | name     | body           |
+----+----------+----------------+
|  1 | takeuchi | hello, world   |
|  2 | kato     | hello, world 2 |
+----+----------+----------------+
2 rows in set (0.00 sec)

mysql> UPDATE blog SET name='yamada' where id = 1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from blog;
+----+--------+----------------+
| id | name   | body           |
+----+--------+----------------+
|  1 | yamada | hello, world   |
|  2 | kato   | hello, world 2 |
+----+--------+----------------+
2 rows in set (0.00 sec)

mysql> delete from blog where id = 1;
Query OK, 1 row affected (0.00 sec)
</pre>

## アプリサーバー作成

(「DB サーバー作成」とほぼ同じ設定だが、サーバー名だけ「ap001」としてサーバーを作成します)

## アプリサーバーへログイン

* SSH ターミナルソフトを利用しサーバーへログイン

## DBサーバー側でアプリサーバーからの接続を許可

<pre>
[root@localhost bbs]# mysql -u root
</pre>

<pre>
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'ここにアプリサーバーのプライベートIPアドレスを書く' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)
</pre>

## アプリサーバーで簡単なアプリを作成

<pre>
[root@localhost ~]# yum install -y mysql-devel
[root@localhost ~]# curl -sSL https://get.rvm.io | bash -s stable
[root@localhost ~]# source /etc/profile.d/rvm.sh
[root@localhost ~]# rvm install 2.0.0
[root@localhost ~]# gem install rails --no-ri --no-rdoc
[root@localhost ~]# rails new bbs -d mysql
[root@localhost ~]# cd bbs/
[root@localhost bbs]# echo "gem 'therubyracer'" >> Gemfile
[root@localhost bbs]# bundle
[root@localhost bbs]# rails g scaffold bbs name:string 
comment:text
</pre>

<pre>
[root@localhost bbs]# sed -i s/localhost/ここにDBサーバーのプライベートIPアドレスを書く/g config/database.yml
</pre>

<pre>
[root@localhost bbs]# rake db:create
[root@localhost bbs]# rake db:migrate
[root@localhost bbs]# rails server -p 80
</pre>

ここまでやると http://ここにアプリサーバーのグローバルIPアドレスを書く/bbs でアプリケーションにアクセスできます。

![無題.png](https://qiita-image-store.s3.amazonaws.com/0/40053/ed38de70-b38f-6fbb-52ed-62b8101423c6.png)