CentOS6でLodgeをセットアップした

# OS
- CentOS 6のminimal.isoでインストール
- ユーザはrootのみ

# Network
- デフォルトではeth0のONBOOTがnoになっているので変更する

## Network設定変更手順
```
vi /etc/sysconfig/network-scripts/ifcfg-eth0
service network restart
```

### ifcfg-eth0の内容
```
DEVICE=eth0
HWADDR=ないしょ(変更しない)
TYPE=Ethernet
UUID=ないしょ(変更しない)
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=固定IPふります
PREFIX=24
GATEWAY=ゲートウェイのアドレスうちます
DNS1=DNSのアドレスうちます
```

## iptables停止
```
service network stop
chkconfig --level 35 iptables off
```

## SELinux停止
```
setenforce 0
vi /etc/selinux/config　　　　# SELINUX=disableにする
init 6　　　　　　　　　　　# OS再起動
```

# 前提パッケージのインストール
## Ruby 2.1のインストール
公式ではRuby2.0以上になっているが2.2以上だとエラーがでる　(今はでないかも）

### Ruby 2.1インストール手順
```
yum -y groupinstall "Development Tools"
yum -y install openssl-devel readline-devel zlib-devel libcurl-devel libicu-devel cmake
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
source ~/.bash_profile
rbenv install 2.1.8
rbenv global 2.1.8
```

## MySQLインストール
### MySQLインストール手順
```
yum -y install mysql-server mysql-devel
```

### MySQLの設定
```
chkconfig --level 35 mysqld on
service mysqld start
```

### Bundlerのインストール
```
gem install bundler
rbenv rehash
```

### nginxのインストール
```
rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
yum -y install nginx
```

#### nginxの設定
```
service nginx start
vi /etc/nginx/nginx.conf　　　　　# 「nginx.confの内容」
```

#### nginx.confの内容
http内に下記を追記

```
upstream unicorn {
        server 0.0.0.0:3000;
    }

    server {
        listen 80;
        server_name _;
        location / {
            proxy_pass http://0.0.0.0:3000;
        }
    }
```

# Lodgeのインストール

## Lodgeのインストール手順

```
cd /var
git clone https://github.com/m-yamashita/lodge.git
cd lodge
```

## Lodgeの初期設定
```
cp config/database.example.yml config/database.yml
vi config/database.yml　　　　　　　　# 内容は「database.ymlの内容」に別記
vi Gemfile　　　　　　　　　　　　　  # gem 'therubyracer', platforms: :rubyをコメントアウト
vi Gemfile　　　　　　　　　　　　　  # database周りの設定を変更「Gemfileのdatabase設定変更」に別記
bundle install --path vendor/bundle
bundle exec rake secret　　　　　　　# ここで出力したものを.envのSECRET_KEY_BASEとDEVISE_SECRET_KEYにコピペする
cp .env.example .env
vi .env　　　　　　　　　　　　　　　# 内容は「.envの変更箇所」に別記

bundle exec rake db:create RAILS_ENV=production
>　　　　　　　　　　　　　　　　　# mysqlのrootのパスワードを入力してEnterキーを押す
bundle exec rake db:migrate RAILS_ENV=production

bundle exec rake emoji
mkdir /var/lodge/tmp
```

### database.ymlの内容
```
default: &default

  # === mysql ===
  adapter: mysql2
  host: localhost
  username: 任意のMySQLユーザ名
  password: 任意のMySQLユーザ名のパスワード
  encoding: utf8
  pool: 5

development:
  <<: *default
  database: lodge_development

test:
  <<: *default
  database: lodge_test

production:
  <<: *default
  database: lodge_production
```

### Gemfileのdatabase設定変更
Gemfileの内容を一部抜粋

変更ポイント

- if adapters.any?ブロックをコメントアウト
- if adapters.any?行の前に gem "mysql2", '~> 0.3'を追記
 
```
database_file = File.join(File.dirname(__FILE__), "config/database.yml")
if File.exist?(database_file)
  database_config = YAML::load(ERB.new(IO.read(database_file)).result)
  adapters = database_config.values.map {|c| c['adapter']}.compact.uniq
  gem "mysql2", '~> 0.3'
  #if adapters.any?
  #  adapters.each do |adapter|
  #    case adapter
  #    when 'mysql2'
  #      gem "mysql2", '~> 0.3'
  #     when /postgresql/
  #      gem "pg", '~> 0.17'
  #    when /sqlite3/
  #      gem "sqlite3", '~> 1.3'
  #    else
  #      warn("Unknown database adapter `#{adapter}` found in config/database.ym
l")
  #    end
  #  end
  #else
  #  warn("No adapter found in config/database.yml, please configure it first")
  #end
else
  warn("Please configure your config/database.yml first")
end
```


### .envの変更箇所
```
LODGE_DOMAIN      = http://自身のIPアドレスうちました

SECRET_KEY_BASE   = ここは bundle exec rake secret で出力したものをコピペ
DEVISE_SECRET_KEY = ここは bundle exec rake secret で出力したものをコピペ

MAIL_SENDER       = 任意のメールアドレス

SMTP_ADDRESS              = Google以外の自分が使っているSMTPのアドレスでOK
SMTP_PORT                 = 587
SMTP_USERNAME             = SMTPに登録しているユーザ名
SMTP_PASSWORD             = SMTPに登録しているユーザ名のパスワード
```


# Lodgeの起動
```
bundle exec unicorn -c config/unicorn.rb -E production
```


# 補足
unicornでタイムアウトが出るときは``config/unicorn.rb``内のtimeoutを15から30(またはそれ以上)に変更してみる。

それでもダメな時はOSを再起動してから「Lodgeの起動」を行い、ローカル環境でアクセスしてみると不思議とつながる(キャッシュの何かが問題？）