###これを記述した日時
- 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のアクセスポイント(終端は光へ接続している)
###事前ダウンロード先
- Oracle VM VirtualBox(VirtualBox 4.3.6 for OS X hosts)
- CentOS(ISOイメージ、CentOS-6.5-x86_64-bin-DVD1.iso)
- epelリポジトリ(RPM、epelリポジトリパッケージ)
- remiリポジトリ(RPM、remiリポジトリパッケージ)
- Node.js(ソースファイル、node-v0.10.24.tar.gz)
###何か利用できるようになるか
- 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等で編集します。
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等で編集します。
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で行ないます。
```bash:インストール直後のモジュールを最新にアップデートする
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 を入力する。
#外部のリポジトリを追加する
yum install wget
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を編集します。
[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
[epel]
・・・
enabled=0
・・・
priority=5
[epel-debuginfo]
・・・
enabled=0
・・・
priority=5
[epel-source]
・・・
enabled=0
・・・
priority=5
[epel-testing]
・・・
enabled=0
・・・
priority=5
[epel-testing-debuginfo]
・・・
enabled=0
・・・
priority=5
[epel-testing-source]
・・・
enabled=0
・・・
priority=5
[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
以下のファイルを編集し環境変数を追加します。
export KERN_DIR=/usr/src/kernels/`uname -r`
再ログインします。
VBoxAdditionsをインストールする
#この作業はrootで行ないます。
#VirtualBoxの共有フォルダをマウントできるようにする準備
VirtualBoxのメニューからCDイメージを挿入します。
デバイス -> Guest Additions のCDイメージを挿入… (Host+d)
CDイメージをマウントしてCentOSから読めるようにします。
mkdir /media/cdrom
mount -r /dev/cdrom /media/cdrom
マウントしたCDへディレクトリを移動します。
cd /media/cdrom
ls -l
Guest Additionsをインストールします。
./VBoxLinuxAdditions.run
リブートします。
sync;sync
reboot
#共有フォルダをマウントする
#この作業は一般ユーザで行ないます。
#VirtualBox側の操作
VirtualBoxのメニューからCDイメージを挿入します。
デバイス -> 共有フォルダー設定...
右側のアイコンをクリックします。
「フォルダーのパス:」にホストOS(mac)のフォルダーを指定します。
「フォルダー名:」にゲストOS(CentOS)の共有デバイス名をしています。
フォルダーのパス:/Users/ユーザ名/Share
フォルダー名:vboxshare
設定をして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を通す。
以下のファイルを編集しサービスを再起動します。
# 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をインストールする
#この作業は一般ユーザで行ないます。
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をインストールする
#この作業は一般ユーザで行ないます。
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
以下のファイルを作成し簡単なページを作成します。
<h2>Hello World</h2>
<p>
The time is now: <%= Time.now %>
</p>
webサーバにアクセスしたときのページを指定します。
root 'welcome#index'
ローカルでwebサーバを起動します。
rails server
ブラウザーでアクセスし以下のように表示されたら成功。
#Herokuにデプロイする
Gemfileを編集します。
gem 'sqlite3', group: :development
gem 'pg', group: :production
# Heroku
gem 'rails_12factor', group: :production
データベースの設定をします。
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へブラウザでアクセスし表示されたら完成!!
#参考