仮想環境への各種ミドルウェアインストール（&使い方）手順メモ

#概要
- 所用で各種ミドルウェアの入った環境をつくることになったので、そのメモ
- バージョンの指定とかは特にせず、一部を除き、yumで入るものをベースにインストールしています
- 最低限のことしかしないので、必要に応じて各種変更すること
- わけあって32bitのCentOS6を利用してますが、一部のコマンドを除いてさほど変化はないかと思います

#CentOS6.7（32bit）のインストール
- インストールはminimalで良い
- ネットワーク設定時に、自動接続を有効にしておく
- ホストオンリーアダプターを使ったホスト⇒仮想のssh接続を行う場合は、該当アダプタのIPv4設定でIPアドレスを手動にして入力しておく。

 - ※ネットワーク設定を後で設定する場合は、以下のファイルを編集して、ネットワークを再読み込みすること。
 <pre>
 /etc/sysconfig/network-scripts/ifcfg-eth0 = NAT
 /etc/sysconfig/network-scripts/ifcfg-eth1 = ホストオンリーアダプタ
 service network restart =ネットワーク再読み込み
 </pre>

- インストール完了後に再起動
- 再起動後にrootでログイン
 - 以後rootでの作業も良いが、新規に作業用のユーザーを作成する
 - パスワードは複数回入力を求められるので、必要回入力する
 <pre>
useradd [ユーザー名]
passwd [パスワード]
</pre>
<br />
- 作成したユーザーでsudoを使えるようにする
 - 『\#\# Allow root to run any commands anywhere』に項目を追加する
<pre>
visudo
　
[ユーザー名]    ALL=(ALL)       ALL
</pre>
<br />
- firewallを停止させる
<pre>
sudo /etc/rc.d/init.d/iptables stop
chkconfig iptables off
chkconfig ip6tables off
</pre><br />

- selinuxを無効にする
 - SELINUX=enforcingをdisabledに変更する
<pre>
sudo vi /etc/selinux/config
</pre>

- 環境再起動
<pre>
reboot
</pre>

***
#前準備
- 作成したアカウントでログイン
- yumのアップデート
<pre>
sudo yum -y update
</pre>

- remiのリポジトリを追加
<pre>
sudo rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
</pre>

- wgetをインストール
<pre>
sudo yum -y install wget
</pre>

***
# jenkinsのインストール
- インストール
<pre>
sudo yum -y install java
sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
sudo yum -y install jenkins
</pre>

- 起動と自動起動を設定
<pre>
sudo /etc/init.d/jenkins start
sudo chkconfig jenkins on
</pre>

- アクセスして確認
<pre>
http://[IPアドレス]:8080/
</pre>

***
#Apache
- インストール
<pre>
sudo yum -y install httpd httpd-devel
</pre>

- 起動
<pre>
sudo service httpd start
</pre>

- ホスト側ブラウザからアクセス確認
<pre>
http://[IPアドレス]:80
</pre>

- ディレクトリの権限を変える
<pre>
sudo chown [アカウント名]. /var/www/html/
</pre>

- indexファイル作成
 - 内容は適当で良いです
<pre>
vi /var/www/html/index.html
</pre>

- 再度ブラウザからアクセス、上記入力した内容が表示されればOK

***
#PHP
- インストール
<pre>
sudo yum -y install php php-mbstring php-pear php-mysql php-devel
</pre>

- インストール確認
<pre>
php -v
</pre>

- Apache再起動
<pre>
sudo service httpd restart
</pre>

- phpのインストール時にディレクトリの権限が変わってしまうので戻す
<pre>
sudo chown [アカウント名]. /var/www/html/
</pre>

- ApacheからPHPの確認
<pre>
vi /var/www/html/phpinfo.php
　
//以下記載
<?php phpinfo(); ?>
</pre>

- 入力後該当ファイルにアクセスして、PHPの各種情報が表示されたらOK

***
#mysql
- mysql インストール
<pre>
sudo yum -y install mysql-server
</pre>

- 文字コードを変更（追記）する
 - sudo vi /etc/my.cnf
<pre>
[mysqld]
…
default-character-set = utf8
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8
…
[client]
default-character-set=utf8
</pre>

- mysql起動
<pre>
sudo /etc/rc.d/init.d/mysqld start
</pre>

- 初期設定
<pre>
sudo mysql_secure_installation
</pre>

- 設定内容
 - パスワード設定以外はすべてEnterで良いです
 <pre>
Enter current password for root (enter for none):= 初期パスなしなのでそのまま
Set root password? = rootパスワードを設定するか
Remove anonymous users? = 匿名ユーザーの削除するか
Disallow root login remotely? = rootリモートログインを無効にするか
Remove test database and access to it? = testデータベースを削除するか
Reload privilege tables now?= ユーザーの情報リロードをするか
</pre>

- 自動起動設定
<pre>
sudo chkconfig mysqld on
</pre>

- 接続して確認
<pre>
mysql -uroot -p
[パスワード入力]
select user,host,password from mysql.user;
</pre>

##PHPからmysqlに繋げる
- 適当なデータを入れる

```sql:testdb
create database test;
use test;
create table testaccess( id int auto_increment, name varchar(255), index(id));
show tables;
insert into testaccess (name) values ('あああ');
insert into testaccess (name) values ('いいい');
select * from testaccess;
```

- Apache再起動
<pre>
sudo service httpd restart
</pre>

- PHPから繋げる
<pre>
vi /var/www/html/mysqltest.php
</pre>

```php:mysqltest.php
<?php
    $con = mysql_connect('localhost', '[ユーザー]', '[パスワード]') or die('error(connect)');
    mysql_select_db('test', $con) or die('error(select_db)');

    $sql = 'select * from testaccess';
    $result = mysql_query($sql, $con);
    while ($row = mysql_fetch_array($result)) {
        echo $row['id'] . ' : ' . $row['name'] . '<br />';
    }

    mysql_close($con);
?>
```

- CIやブラウザからアクセスし、保存したデータが表示されたらOK

***
#memcached
- インストール
<pre>
sudo yum -y install memcached memcached-devel
</pre>

- 起動
<pre>
sudo /etc/init.d/memcached start
</pre>

- Apache再起動
<pre>
sudo service httpd restart
</pre>

## PHPと繋ぐ
- 必要なライブラリをインストール
<pre>
sudo yum -y install php-pecl-memcached
</pre>

- つなげてみる
 - vi /var/www/html/memcachedtest.php

```php:memcachedtest.php
<?php
    $memcache = new Memcached();
    $memcache->addServer('localhost', 11211);

    $memcache->set('[キー名]', [保存データ], [保存秒数]);

    echo $get_data = $memcache->get('key');
?>
```

- CIやブラウザからアクセスして、dataに保存されている内容が表示されていればOK
- 念のため、ツールから内容を確認
 - dumpはすべて表示されるので、運用中などは利用にお気を付け下さい
<pre>
memcached-tool localhost dump
</pre>

***
#redis
- インストール
<pre>
sudo yum --enablerepo=remi,remi-test -y install redis
</pre>

- 起動と自動起動設定
<pre>
sudo service redis start
sudo chkconfig --add redis
sudo chkconfig --level 345 redis on
</pre>

- redis-cliでの接続テスト
<pre>
redis-cli
　
127.0.0.1:6379> set [キー] [保存データ]
OK
127.0.0.1:6379> get [キー]
"[保存データ]"
</pre>

##PHPと繋ぐ
- ライブラリインストール
<pre>
sudo yum -y install php-pecl-redis --enablerepo=epel
</pre>

- Apache再起動
<pre>
sudo service httpd restart
</pre>

- PHPから繋げる
 - vi /var/www/html/redistest.php

```php:redistest.php
<?php
    $redis = new Redis();
    $redis->connect("127.0.0.1",6379);

    $redis->delete('[キー名]');
    $redis->set('[キー名] ', '[セットデータ]');
    $getdata = $redis->get('[キー名]');

    echo $getdata;
    exit;
?>
```
- CIやブラウザからアクセスして、セットデータが表示されればOK

***
#ruby on rails
- rubyのインストール
 - [以前書いたこの辺を参考に](http://qiita.com/daraxuma04/items/97d33f98d8d2a4bfabc2)

- railsをインストール
<pre>
gem install rails
</pre>

- 必要なライブラリをインストールする
<pre>
sudo yum -y install sqlite-devel gcc-c++ mysql-devel
gem install mysql2
</pre>

- mysql接続オプションにてrails newする
<pre>
rails new [プロジェクト名] --database mysql
</pre>

- Gemfileのtherubyracerをコメントアウトしてbundle install
<pre>
cd [プロジェクト名]
vi Gemfile
\# gem 'therubyracer', platforms: :ruby ←これのコメントを外す
bundle install
</pre>

- データベースの設定をする
<pre>
vi config/database.yml
</pre>

- 設定情報をもとにデータベースを作成する
<pre>
bundle exec rake db:create
</pre>

- migration/modelファイルを生成する
<pre>
bundle exec rails g model testaccess name:string
</pre>

- seedファイルを編集する
 - vi db/seed.rb
<pre>
# coding: utf-8
Testaccess.create!( :name =>  'あああ')
Testaccess.create!( :name =>  'いいい')
</pre>

- migrationをかける
<pre>
bundle exec rake db:migrate
bundle exec rake db:seed
</pre>

- controller/Actionを作る
<pre>
bundle exec rails g controller [コントローラー名] [アクション名:1] [アクション名:2] …
</pre>

- controllerを編集する
 - 一例：mysqlのデータを取得し、jsonで返す

```ruby:mysqltest_controller.rb
class MysqltestController < ApplicationController
  def list
   @user = Testaccess.all
   render :json => @user
  end
end
```

- rails serverを立ち上げてアクセスしてみる
 - http://[IPアドレス]:3000/[コントローラー名]/[アクション名]
<pre>
bundle exec rails s -b 0.0.0.0 -edevelopment
</pre>

##memcachedにアクセス
- Gemfileに追記して、bundle install
<pre>
gem 'dalli'
　
bundle install
</pre>

- config/enviroments/xxxx.rbの各環境ファイルに追記
<pre>
config.cache_store = :dalli_store
</pre>

- railsコンソールで確認（最低限）
<pre>
rails c
　
書込：Rails.cache.write '[キー名]', '[保存情報]'
読込：Rails.cache.read '[キー名]'
削除：Rails.cache.delete '[キー名]'
</pre>

##redisにアクセス
- Gemfileに追記して、bundle install
<pre>
gem 'redis'
gem 'redis-rails'
　
bundle install
</pre>

- 環境変数にredisのサーバー情報を追加
 - vi config/environments/xxxx.rbの各環境ファイルに追記
<pre>
ENV["REDIS"] = "localhost:6379"
</pre>

- config/initializers/redis.rbの作成

```ruby:config/initializers/redis.rb
require 'redis'

uri = URI.parse(ENV["REDIS"])
RedisOBJ = Redis.new(host: uri.host, port: uri.port)
```

- railsコンソールで確認（最低限）
<pre>
rails c
　
書込：RedisOBJ.set '[キー名]', '[保存情報]'
読込：RedisOBJ.get '[キー名]'
削除：RedisOBJ.del '[キー名]'
</pre>