LoginSignup
17
17

More than 5 years have passed since last update.

MacBook AirにVirtualBoxを入れ仮想マシンにCentOS6.5(64)をインストールしRails環境を構築してHerokuにサンプルをデプロイするまでの手順

Last updated at Posted at 2014-01-05

これを記述した日時

  • 2014年01月05日

前提条件

  • VirtualBoxを多少使ったことがある。
  • Linuxのインストール経験が一度以上ある。
  • Linuxの(CUI)コマンド操作の経験がある。
  • Herokuの操作経験がある。
  • viでファイルの編集ができる。
  • やる気がある。

説明内容

  • VirtualBoxのインストールする(省略)
  • 仮想マシンの新規作成する(省略)
  • 仮想マシンを設定する(省略)
  • CentOSのインストールする(省略)
  • ネットワークを設定する
  • 必要なモジュールをインストールする
  • 外部のリポジトリを追加する
  • リポジトリの優先順位を有効にする
  • モジュールを追加する
  • シンボリックリンクを設定します。
  • VBoxAdditionsをインストールする
  • 共有フォルダをマウントする
  • Node.jsのインストール
  • 一般ユーザを作成する
  • ファイヤーウォールの設定を変更する(追記:2014/1/5)
  • rbenvをインストールする
  • Rubyをインストールする
  • Railsをインストールする
  • Railsの簡単なアプリを作成する
  • Herokuにデプロイする

使用した機器

  • MacBook Air(OSX Mountain Lion)(ACアダプタの接続を推奨)
  • WiFiのアクセスポイント(終端は光へ接続している)

事前ダウンロード先

何か利用できるようになるか

  • CentOS 6.5(64ビット)
  • macとCentOSの間でファイル共有
  • rbenv 0.4.0-89-g14bc162
  • Ruby 2.0.0-p353
  • Rails 4.0.2
  • Heroku

VirtualBoxのインストールする(省略)


仮想マシンの新規作成する(省略)


仮想マシンを設定する(省略)


CentOSのインストールする(省略)


ネットワークを設定する

#この作業はrootで行ないます。
ホストOS:mac
ゲストOS:CentOS
アダプター1:NAT
アダプター2:ホストオンリーアダプター

ゲストOSからインターネットへ接続するためのネットワークを準備します。
以下のファイルをvi等で編集します。

/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=xx:xx:xx:xx:xx:xx
TYPE=Ethernet
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
ONBOOT=no
NM_CONTROLLED=yes
BOOTPROTO=dhcp
変更内容
ONBOOT=yes

ホストOS(mac)と通信する為のネットワークを設定します。
以下のファイルをvi等で編集します。

/etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
HWADDR=xx:xx:xx:xx:xx:xx
TYPE=Ethernet
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
ONBOOT=no
NM_CONTROLLED=yes
BOOTPROTO=dhcp
変更内容
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.56.101
NETWORK=192.168.56.0
NETMASK=255.255.255.0
ONBOOT=yesにしたことで次回はブート時に有効になります。

今回は以下のコマンドでネットワークを有効にします。

ネットワークを有効にする
ifup eth0
(参考コマンド)
ifup [インタフェース名] ・・・有効にする
ifdown [インタフェース名] ・・・無効にする
ifconfig ・・・(IP)ネットワークの確認

必要なモジュールをインストールする

#この作業はrootで行ないます。
インストール直後のモジュールを最新にアップデートする
yum check-update
yum update
確認の入力が要求される
Total download size: x.x M
Installed size: x.x M
Is this ok [y/N]: 

yを入力しenterキーを押す。

(補足)
 [y/N]: yes または no の入力を求める意味。大文字がデフォルトを示す。この場合はNoとなる。  

無事にアップデートが完了しました。

アップデートが完了すると、
Complete!
[root@localhost ~]# 

更に必要なモジュールをインストールします。

#確認が表示されら y を入力する。

外部のリポジトリを追加する

wgetをインストールします。
yum install wget
RPMをダウンロードしてインストールします。
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
rpm -Uvh remi-release-6.rpm epel-release-6-8.noarch.rpm

リポジトリの優先順位を有効にする

使用するリポジトリに優先順位を付けるモジュールをインストールします。

プラグインをインストールします。
yum install yum-plugin-priorities

以下のファイルにpriorityを編集します。

/etc/yum.repos.d/CentOS-Base.repo
[base]
・・・
priority=1

#released updates
[updates]
・・・
priority=1

#packages used/produced in the build but not released
[addons]
・・・
priority=1

#additional packages that may be useful
[extras]
・・・
priority=1

#additional packages that extend functionality of existing packages
[centosplus]
・・・
priority=1

#contrib - packages by Centos Users
[contrib]
・・・
priority=2
/etc/yum.repos.d/epel.repo
[epel]
・・・
enabled=0
・・・
priority=5

[epel-debuginfo]
・・・
enabled=0
・・・
priority=5

[epel-source]
・・・
enabled=0
・・・
priority=5
/etc/yum.repos.d/epel-testing.repo
[epel-testing]
・・・
enabled=0
・・・
priority=5

[epel-testing-debuginfo]
・・・
enabled=0
・・・
priority=5

[epel-testing-source]
・・・
enabled=0
・・・
priority=5
/etc/yum.repos.d/remi.repo
[remi]
・・・
enabled=0

[remi-php55]
・・・
enabled=0

[remi-test]
・・・
enabled=0

[remi-debuginfo]
・・・
enabled=0

[remi-php55-debuginfo]
・・・
enabled=0

[remi-test-debuginfo]
・・・
enabled=0

モジュールを追加する

モジュールを追加する
yum --enablerepo=epel install libyaml libyaml-devel
yum install zlib-devel
yum install readline-devel
yum install openssl-devel
yum install libxml2-devel
yum install libxslt libxslt-devel
yum install curl-devel
yum install gcc kernel-devel kernel-headers
yum --enablerepo=epel install dkms
yum install gcc-c++
yum install git
yum install sqlite-devel
yum install subversion
yum install byacc
yum -y install xorg*
(補足)
 yum -y とすると、確認時にすべて y を入力したことと同等になる。ただし予め結果が分かっている場合に使うべきです。
(補足)
 yum --enablerepo=epel とすると、先ほど追加したリポジトリを対象にモジュールを検索する。この場合は、epelリポジトリを対象に追加したことになる。

インストールが終了したらリブード(再起動)します。

リブート
reboot
リブートしたら、
CentOS release 6.5 (Final)
Kernel 2.6.32-431.1.2.0.1.e16.x86_64 on an x86_64

localhost login: 

rootでログインします。

(例)
CentOS release 6.5 (Final)
Kernel 2.6.32-431.1.2.0.1.e16.x86_64 on an x86_64

localhost login: root
Password: パスワードは表示されません
Last login: 前回ログインした日時 on tty1
[root@localhost ~]# 

シンボリックリンクを設定します。

#これはVBoxLinuxAdditionsに必要な設定です。
設定する
cd /usr/src/kernels/`uname -r`/include/drm/  
ln -s /usr/include/drm/drm.h drm.h  
ln -s /usr/include/drm/drm_sarea.h drm_sarea.h  
ln -s /usr/include/drm/drm_mode.h drm_mode.h  
ln -s /usr/include/drm/drm_fourcc.h drm_fourcc.h

以下のファイルを編集し環境変数を追加します。

/root/.bash_profile
export KERN_DIR=/usr/src/kernels/`uname -r`

再ログインします。


VBoxAdditionsをインストールする

#この作業はrootで行ないます。
#VirtualBoxの共有フォルダをマウントできるようにする準備

VirtualBoxのメニューからCDイメージを挿入します。

VirtualBoxのメニューから以下の順番で選択します
デバイス -> Guest Additions のCDイメージを挿入… (Host+d)

CDイメージをマウントしてCentOSから読めるようにします。

マウント用のディレクトリを作成する
mkdir /media/cdrom
マウントする
mount -r /dev/cdrom /media/cdrom

マウントしたCDへディレクトリを移動します。

ディレクトリを移動する
cd /media/cdrom
CDのファイル一覧を表示する
ls -l

スクリーンショット

Guest Additionsをインストールします。

インストール
./VBoxLinuxAdditions.run

リブートします。

リブート
sync;sync
reboot

共有フォルダをマウントする

#この作業は一般ユーザで行ないます。
#VirtualBox側の操作

VirtualBoxのメニューからCDイメージを挿入します。

VirtualBoxのメニューから以下の順番で選択する
デバイス -> 共有フォルダー設定...

右側のアイコンをクリックします。

スクリーンショット 2014-01-04 20.53.16.png

「フォルダーのパス:」にホストOS(mac)のフォルダーを指定します。
「フォルダー名:」にゲストOS(CentOS)の共有デバイス名をしています。

(例)
フォルダーのパス:/Users/ユーザ名/Share
フォルダー名:vboxshare

スクリーンショット 2014-01-04 20.53.39.png

設定をしてOKをクリックします。

#CentOS側の操作

マウントポイントのディレクトリを作成します。

マウント用のディレクトリを作成する
mkdir /media/share

共有デバイスをマウントします。

マウントする
mount -t vboxsf vboxshare /media/share

Node.jsのインストール

#この作業はrootで行ないます。
解凍する
cd
tar -zxvf /media/share/node-v0.10.24.tar.gz
cd node-v0.10.24
./configure
make
make install

一般ユーザを作成する

#この作業はrootで行ないます。
ユーザを作成しパスワードを設定
useradd admin
passwd admin

ファイヤーウォールの設定を変更する(追記:2014/1/5)

#この作業はrootで行ないます。

デバック用のwebサーバーのポート3000を通す。
以下のファイルを編集しサービスを再起動します。

/etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3000  -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
追加した部分
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3000  -j ACCEPT
サービスを再起動する
service iptables restart

rbenvをインストールする

#この作業は一般ユーザで行ないます。
rbenvのインストール
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

設定を確認します。

ログインプロセスからシェルを起動する
$SHELL -l
type rbenv
(結果)以下のように表示されれば成功!
rbenv is a function
rbenv () 
{ 
    local command;
    command="$1";
    if [ "$#" -gt 0 ]; then
        shift;
    fi;
    case "$command" in 
        rehash | shell)
            eval "`rbenv "sh-$command" "$@"`"
        ;;
        *)
            command rbenv "$command" "$@"
        ;;
    esac
}

rbenv installが実行できるようにします。

プラグインをインストールする
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

インストール可能なRuby一覧を表示します。

コマンド
rbenv install -l
一覧
Available versions:
  1.8.6-p383
  1.8.6-p420
  1.8.7-p249
  1.8.7-p302
  1.8.7-p334
  1.8.7-p352
  1.8.7-p357
  1.8.7-p358
  1.8.7-p370
  1.8.7-p371
  1.8.7-p374
  1.8.7-p375
  1.9.1-p378
  1.9.1-p430
  1.9.2-p0
  1.9.2-p180
  1.9.2-p290
  1.9.2-p318
  1.9.2-p320
  1.9.2-p326
  1.9.3-dev
  1.9.3-p0
  1.9.3-p125
  1.9.3-p194
  1.9.3-p286
  1.9.3-p327
  1.9.3-p362
  1.9.3-p374
  1.9.3-p385
  1.9.3-p392
  1.9.3-p429
  1.9.3-p448
  1.9.3-p484
  1.9.3-preview1
  1.9.3-rc1
  2.0.0-dev
  2.0.0-p0
  2.0.0-p195
  2.0.0-p247
  2.0.0-p353
  2.0.0-preview1
  2.0.0-preview2
  2.0.0-rc1
  2.0.0-rc2
  2.1.0
  2.1.0-dev
  2.1.0-preview1
  2.1.0-preview2
  2.1.0-rc1
  2.2.0-dev
  jruby-1.5.6
  jruby-1.6.3
  jruby-1.6.4
  jruby-1.6.5
  jruby-1.6.5.1
  jruby-1.6.6
  jruby-1.6.7
  jruby-1.6.7.2
  jruby-1.6.8
  jruby-1.7.0
  jruby-1.7.0-preview1
  jruby-1.7.0-preview2
  jruby-1.7.0-rc1
  jruby-1.7.0-rc2
  jruby-1.7.1
  jruby-1.7.2
  jruby-1.7.3
  jruby-1.7.4
  jruby-1.7.5
  jruby-1.7.6
  jruby-1.7.7
  jruby-1.7.8
  jruby-1.7.9
  maglev-1.0.0
  maglev-1.1.0-dev
  maglev-2.0.0-dev
  mruby-dev
  rbx-1.2.4
  rbx-2.0.0
  rbx-2.0.0-dev
  rbx-2.0.0-rc1
  rbx-2.1.0
  rbx-2.1.1
  rbx-2.2.0
  rbx-2.2.1
  rbx-2.2.2
  rbx-2.2.3
  ree-1.8.6-2009.06
  ree-1.8.7-2009.09
  ree-1.8.7-2009.10
  ree-1.8.7-2010.01
  ree-1.8.7-2010.02
  ree-1.8.7-2011.03
  ree-1.8.7-2011.12
  ree-1.8.7-2012.01
  ree-1.8.7-2012.02
  topaz-dev

Rubyをインストールする

#この作業は一般ユーザで行ないます。
Rubyをインストールする
rbenv install 2.0.0-p353
rbenv global 2.0.0-p353
rbenv rehash
アップデート
gem update
gem update --system

Railsをインストールする

#この作業は一般ユーザで行ないます。
gem install rails -v '4.0.2'
gem install bundler
gem install execjs
gem install heroku
rbenv rehash

Railsの簡単なアプリを作成する

#この作業は一般ユーザで行ないます。
アプリのスケルトンを作成する
rails new helloworld
cd helloworld
コントローラを作成する
rails generate controller welcome

以下のファイルを作成し簡単なページを作成します。

app/views/welcome/index.html.erb
<h2>Hello World</h2>
<p>
  The time is now: <%= Time.now %>
</p>

webサーバにアクセスしたときのページを指定します。

config/routes.rb
  root 'welcome#index'

ローカルでwebサーバを起動します。

webサーバーを起動する
rails server

ブラウザーでアクセスし以下のように表示されたら成功。

スクリーンショット


Herokuにデプロイする

Gemfileを編集します。

Gemfile
gem 'sqlite3', group: :development
gem 'pg', group: :production

# Heroku
gem 'rails_12factor', group: :production

データベースの設定をします。

config/database.yml
production:
  adapter: postgresql
  database: helloworld_production

Gemfile.lockを更新します。

更新
bundle install

Herokuへデプロイします。

デプロイ
git init
git add .
git commit -m "init"
heroku apps:create
git push heroku master

Herokuへブラウザでアクセスし表示されたら完成!!

スクリーンショット



参考

17
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
17