Vagrant + CentOS6.4 + rbenv でRuby環境構築
Step.0 前提条件
- VirtualBoxインストール済み
- Vagrantインストール済み
- WindowsならばPuTTY or TeraTermインストール済み
Step.1 Vagrant上CentOSを導入
ターミナルから作業ディレクトリに移動。なければmkdir
でつくります。
Vagrantbox.esから 使えそうなCentOSを探しましょう。今回はこの
を使用。Copyのボタンを押して、ターミナル(コマンドプロンプト)に戻ります。
vagrant box add centos-testhttps://github.com/2creatives/vagrant-centos/releases/download/v6.4.2/centos64-x86_64-20140116.box
と打ち込んで実行。Copyボタンを押しているならば、URL部分はコピーの方が早いです。
centos-testの部分はボックスの名前ですが、自分のわかるものであれば好きな名前で
構いません。2、3個であれば問題ないですが、多くなってくると混乱します。間違えて違うボックスを
消してしまったりしないようにしましょう。
ボックスが追加されているか確認するには
vagrant box list
と打ち込みます。centos-testと追加されていれば成功です。
続いて、作業用のディレクトリを作成し、その中に移動します。もちろん自分のつけたい名前でオーケイです。
mkdir centos-test cd centos-test
そこまでできたら
vagrant init centos-test
と入力。centos-testの部分は自分のつけたディレクトリ名を打ち込ましょう。
ディレクトリ内にVagrantfileというファイルが作成されれば成功です。
次に、このVagrantfileを編集します。好みのエディタで開いて
config.vm.network "private_network", ip: "192.168.33.10"
という部分の#を外しましょう。
たいていは192.168.33.10だと思いますが、もし、ipの数字部分が違う人がいればメモするなり
しておきましょう。
いよいよ仮想マシンを起動します。起動するには、Vagrantfileが存在するディレクトリ下で
vagrant up
と入力するだけです。起動したか確認するには
vagrant status
と打ち込みます。runningと表示されれば無事起動しています。
Macならばvagrant ssh
を使い、WindowsならばPuTTYかTeraTarmを
使って仮想マシンに接続します。このとき、ipの番号が書かれていたものと違っていた人は、書かれていた
番号を使って接続しましょう。
接続に成功するとユーザ名を聞かれます。ユーザ名はデフォルトでvagrant
となっています。
次にパスワードを聞かれますが、パスワードも同じくvagrant
です。
無事入ることができたら少し休憩でもしましょう。
仮想マシンを切断するにはexit
仮想マシンを止めるにはvagrant suspend
かvagrant halt
を使います。
Step.2 gitを導入
gitを使うので
git --version
でgitが入っているか確認します。入っていなかったら
sudo yum install -y git
でインストール。
BreakTime なぜrbenvを導入するか
rbenvとは、複数のバージョンのRubyを管理できるコマンド群です。今まで知らなかったのですが、アールビーエンヴとかアールベンヴって読むらしいですね。
して、なぜ普通にyum install ruby
としないかと言うと、2系のRubyが入らないからです。
このコマンドだと、1系のRubyが入ってしまいます。(2016年6月 現在)
もちろん、それでオーケイだという方は面倒な手順をふまずに、yum
を使ってインストールしてもらっても
構いません。
Step.3 rbenvを導入
いちいちsudoを打つのが面倒なのでルートユーザになります。
su -
パスワードは初期設定でvagrantでした。
つづいて、/usr/local/src下に、rbenvのリポジトリをクローンします。
git clone git://github.com/sstephenson/rbenv.git /usr/local/src/rbenv
つづいて、パスを通します。
~/.bash_profile
に書き込んでしまうと、実行ユーザしか読み込んでくれないので、/etc/profile.d/
下
に、rbenv.shというファイルをつくって設定を書き込みます。
echo 'export RBENV_ROOT="/usr/local/src/rbenv"' >> /etc/profile.d/rbenv.sh echo 'export PATH="${RBENV_ROOT}/bin:${PATH}"' >> /etc/profile.d/rbenv.sh echo 'eval "$(rbenv init -)"' >> /etc/profile.d/rbenv.sh source /etc/profile.d/rbenv.sh
ちゃんと書き込まれているかを、エディタで開くかcat
コマンドで確認しましょう。
確認したら、exec $SHELL -l
とコマンドを打ち、シェルを再起動します。(exitで一度出ても良い)
ルートユーザから一般ユーザに戻ってrbenv -v
と打ち込んでバージョンが表示されればオーケイです。
Step.4 ruby-buildの導入
rbenvはRubyのバージョンを管理するためのコマンド群なので、これだけでインストールすると普通にyum install ruby
とするのと変わりません。rbenvディレクトリ下にpluginsというディレクトリをつくり、その中にruby-buildのリポジトリをクローン
します。
git clone git://github.com/sstephenson/ruby-build.git /usr/local/src/rbenv/plugins/ruby-build
Step.5 依存パッケージのインストール
rubyをインストールするにあたり必要なものをまとめてインストールしてしまいましょう。
sudo yum install -y gcc make openssl-devel readline-devel libffi-devel zlib-devel libcurl-devel
1個ずつgrep
等を使ってすでに入っているか確かめて行っても良いですね。
っていうかこんなにインストールしなくていいような気がする・・・。
Step.6 エラーの解決
rbenv install --list
でインストールできるRubyのバージョンが確認できます。
当然インストールするのは2系。ここでは2.2.2をインストールしてみます。
(ここで注意点があります。ルートユーザになりましょう。グループ作成をしておらず、グループがrootの
ままになっているからです)
rbenv install 2.2.2
ここで「足りないものがあるよ」と怒られた場合には、それをインストールしましょう。ただ、僕の場合は 少し違いました。
mkdir: cannot create directory `/usr/local/src/rbenv/versions/2.2.2': Permission denied
Permission denied
だからRuby2.2.2のディレクトリを作成できない、と言われているようです。
ちょっと危険ですが
chmod -R 775 rbenv
か
chmod -R 775 versions
でアクセス権を変更しました。(どっちでやったか忘れた)2番目の7は、グループのアクセス権を表しており、それの読み、書き、実行のすべてができる
ように許可したわけですね。ls -l
で確認すればわかるようにroot root
となっています。2番目のroot
がグループを表しているわけです。こういうのは、あまり良くないですが、練習用の仮想環境下なので今回はこれで良しとします。
もう一度インストールを試みると今回は上手くいきました。念のため、本当に成功したか下記のコマンドで確認します。
rbenv versions
インストールはできましたが、まだ、Rubyは使えません。
rbenv global 2.2.2
とコマンドを打ち、「2.2.2のバージョンを使うよ」と宣言しましょう。ruby -v
で確認して2.2.2のバージョンが表示されれば、
あとは自由にRubyを使うことができます。
step.7 バージョンの切り替え
せっかくなので、もう一つ違うバージョンをインストールしてみます。
rbenv install 2.3.0
もちろん違うバージョンをインストールしただけでは、前のバージョンのままです。
rbenv vesions
で確認すると、2.2.2のバージョンの前に * がついていると思います。現在使っているバージョンを表す記号です。
新しくインストールしたバージョンを使うことを下のコマンドで宣言します。
rbenv global 2.3.0
もう一度rbenv vesions
で確認すると、アスタリスクが新しいバージョンの方についていると思います。
これで新しく追加した方のRubyが使えるようになりました。
rbenv便利ですね!
参考
gitを使ってみよう(共同作業編)
チーム作業を想定
- 共有リポジトリ(share.git)
- Aさんの環境(dir_a)
- Bさんの環境(dir_b)
の3つがあると想定します。
共有リポジトリの作成
リモートサーバやネット上に存在するものです。
共有リポジトリの初期化は(share.git下で)
git init --bare
というコマンドを打ちます。
.gitという拡張子は共有リポジトリであることを表します。
共有リポジトリにpushする
Aさんの環境に、コミット済みのファイルがあるとします。
そのファイルを共有リポジトリにあげたい場合
git remote add origin ~/share.git git push origin master
とコマンドを実行すれば上手くいきます。 ~/share.gitの~はhttp://wwwなどが入ります。
共有リポジトリの内容を共有したい
Bさんの環境に、共有リポジトリにあるファイルを引っ張ってきたい とします。そういう場合は
git clone ~/share.git/dir_b
と打ちます。最後に.doneと表示されれば
オーケイです。git log
でも確かめてみましょう。
ちゃんとコミットされているはずです。
もちろん、Bさんがファイルを編集して共有リポジトリに pushすることもできます。 Aさんがやったときと同じように
git push origin master
と打ちましょう。git remote...
は
すでに共有リポジトリに認識されているので入力しなくても
良いです。説明を省いていましたが、このコマンドは最初に
共有リポジトリに、「こういうファイルを共有して扱いますよ」と
教えてあげるメッセージだったんですね。
pullコマンド
Bさんが編集したファイルになるよう、Aさんはファイルを更新したいですね。 その場合は
git pull origin master
と実行します。pullとcloneはどう違うんだ、というと、pull は編集された部分だけを更新するコマンドで、cloneはリポジトリ の内容そのままを自分のリポジトリにコピーするイメージです。
こちらも参考に
Vagrant + Ubuntu14.04 でLAMP環境構築
追記(2017.1.7)
- 久々に見直したところ、step.5の工程が必要ないことに気づきました。必要ない方は飛ばしてもらって結構です。
Step.0 前提条件
- VirtualBoxインストール済み
- Vagrantインストール済み
- WindowsならばPuTTY or TeraTermインストール済み
Step.1 Vagrant上にUbuntuを導入
ターミナルから作業ディレクトリに移動。なければmkdir
でつくります。
Vagrantbox.esから 使えそうなUbuntuを探しましょう。今回はこの
https://github.com/kraksoft/vagrant-box-ubuntu を使用(MITライセンス)。Copyのボタンを押して、ターミナル(コマンドプロンプト)に戻ります。
vagrant box add ubuntu-test https://github.com/kraksoft/vagrant-box-ubuntu/releases/download/14.04/ubuntu-14.04-amd64.box
と打ち込んで実行。Copyボタンを押しているので、URL部分はコピーの方が早いです。
ubuntu-testの部分はボックスの名前ですが、自分のわかるものであれば好きな名前で
構いません。2、3個であれば問題ないですが、多くなってくると混乱します。間違えて違うボックスを
消してしまったりしないようにしましょう。
ボックスが追加されているか確認するには
vagrant box list
と打ち込みます。ubuntu-testと追加されていれば成功です。
続いて、作業用のディレクトリを作成し、その中に移動します。もちろん自分のつけたい名前でオーケイです。
mkdir ubuntu-test cd ubuntu-test
そこまでできたら
vagrant init ubuntu-test
と入力。ubuntu-testの部分は自分のつけたディレクトリ名を打ち込ましょう。
ディレクトリ内にVagrantfileというファイルが作成されれば成功です。
次に、このVagrantfileを編集します。好みのエディタで開いて
config.vm.network "private_network", ip: "192.168.33.10"
という部分の#を外しましょう。
たいていは192.168.33.10だと思いますが、もし、ipの数字部分が違う人がいればメモするなり
しておきましょう。
いよいよ仮想マシンを起動します。起動するには、Vagrantfileが存在するディレクトリ下で
vagrant up
と入力するだけです。起動したか確認するには
vagrant status
と打ち込みます。runningと表示されれば無事起動しています。
Macならばvagrant ssh
を使い、WindowsならばPuTTYかTeraTarmを
使って仮想マシンに接続します。このとき、ipの番号が書かれていたものと違っていた人は、書かれていた
番号を使って接続しましょう。
接続に成功するとユーザ名を聞かれます。ユーザ名はデフォルトでvagrant
となっています。
次にパスワードを聞かれますが、パスワードも同じくvagrant
です。
無事入ることができたら少し休憩でもしましょう。
仮想マシンを切断するにはexit
仮想マシンを止めるにはvagrant suspend
かvagrant halt
を使います。
Step.2 UbuntuにLAMP環境を整える
ぼくもちょっと前まではapache、PHPというふうに一個一個入れていたんですが、ubuntu では少量のコマンドでLAMP環境を整えることができることを最近知りました。ちょっとショック。
sudo apt-get update sudo apt-get install tasksel sudo tasksel install lamp-server
途中MySQLのrootユーザのパスワード入力を求められるので、入力します。
インストールが終わったら、次のコマンドで本当に入っているか確認します。
apache2 -v php -v mysql --version
Step.3 apache2の動作確認
sudo /etc/init.d/apache2 start
とコマンドを入力し、ブラウザのアドレスバーに192.168.33.10
を打ち込みます。It works!と書かれたページが表示されれば
apache2が問題なく動作している証拠です。
ちなみに終了するときは
sudo /etc/init.d/apache2 stop
です。
Step.4 MySQLの動作確認
mysql -u root -p
と入力して、インストールのときに入力したパスワードを打ち込みます。
ログインできればMySQLのインストールにも成功しています。
Step.5 PHP動作確認の前に
※ step.5は別にやらなくても良いです
ただ、これをやっておくと、mac上から仮想環境ををいじれるようになります。
仮想マシンのapacheが探索するのは/var/www/htmlです。 いちいちsudoを打っていてはたまらないのでシンボリックリンクを作成します。シンボリックリンク とはターミナル上のショートカットのようなものです。
やり方としては、最初に/var/www/に移動して、存在するhtmlを削除します。
追記:これもいらない。htmlを削除する必要はありません。シンボリックリンクを張るだけで良いです。
cd /var/www sudo rm -r html
次に/vagrant上にhtmlディレクトリを作成し、シンボリックリンクをつくります。
mkdir html sudo ln -s /vagrant/html /var/www/html
さあ、いよいよ最後にPHPの動作チェックをして終わりです。
Step.6 PHPの動作確認
htmlディレクトリ(つくってない方は /home/vagrant下で良いです)にもぐって、適当なPHPファイルを作成します。今回は test.phpというファイルを作成しました。
<?php echo "Hello,PHP!"; ?>
続いて以下のコマンドでPHPサーバを立ち上げます。
php -S 192.168.33.10:8000
ポート番号(:8000の部分)は予約されたものでなければ好きな番号で いけるはずです。
ブラウザから
192.168.33.10/test.php
でアクセスして表示されれば、きちんと動作しています。
これまでの過程が面倒くさいと思った方
上はScotch Box、下はchefを利用しています。