鴨川にあこがれる日々

軽い技術っぽい記事かいてます

yosemiteにVagrantとclojureとその他

はじめに

環境構築は,プログラミングをする際に最も敷居が高い作業だと思っています.
MysqlJavaに何度泣かされたことか)
環境構築を楽にするツールとしてVagrantがあります.
Macに導入したので,その手順(備忘録)です.
ついで,clojureもインストールしました.

環境

  • MacOSX:10.10.2(ホスト)
  • CentOS:6.5(ゲスト)

手順

まずはVagrantVirtualboxをインストールします


適当なディレクトリをつくったら移動してVagrantfileを生成

> pwd
~/Documents/virtual
> vagrant init
# Vagrantfile ができる

A list of base boxes for Vagrant - Vagrantbox.es
から好きなOSを選びます.
今回はscientific Linuxを我慢してcentOS 6.5を入れます.
boxファイルはサイズが大きいので,このコマンドは時間がかかります.

> vagrant box add centos65 https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box

vagrantfileを開いてさっきaddしたboxのtitleに書き直します

# config.vm.box = "base" # これを下にかえる
config.vm.box = "centos65"

起動とログイン

> vagrant up
> vagrant ssh

vagrantMacで共有されるディレクトリがあり,Vagrantfileで共有するディレクトリを変更可能です.
デフォルトはMacのVagrantfileのあるディレクトリとvagrant側の/vagrantディレクトリです

# vagrant上 ~/vagrant/とMacのVagrantfileがあるディレクトリが共有
vagrant@centos65 > ls /vagnrat
Vagrantfile


centosを起動したら,まずyum updateして,emacsを入れて...という作業が面倒なので,"setting.sh"という名前でshellスクリプトを書きます.

sudo yum -y update
rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
sudo yum -y install nginx
sudo rm -rf /usr/share/nginx/html
ln -fs /vagrant/html /usr/share/nginx/html
sudo chkconfig --add nginx
sudo chkconfig nginx on
sudo yum -y install zsh
sudo yum -y install emacs
sudo chsh -s $(which zsh) vagrant


Vagrantfileを書き直します

  config.vm.box = "centos65" #さっき書き換えたところ
  config.vm.provision :shell, :path => "setting.sh" #追加
  config.vm.network :forwarded_port, host: 4567, guest: 80 #追加 http://127.0.0.1:4567 でアクセス可能


shellスクリプトを実行します.

vagrant provision


初期設定は以上ですが,clojureの実行環境が欲しかったので導入します.


を参考にしつつsetting.shに追加していきます.



最終的なsetting.sh

sudo yum -y update
rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
sudo yum -y install nginx
sudo rm -rf /usr/share/nginx/html
ln -fs /vagrant/html /usr/share/nginx/html
sudo chkconfig --add nginx
sudo chkconfig nginx on
sudo yum -y install zsh
sudo chsh -s $(which zsh) vagrant
sudo yum -y install wget
cd /opt/
wget --no-check-certificate --no-cookies - --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u25-b17/jdk-8u25-linux-x64.rpm
rpm -ivh jdk-8u25-linux-x64.rpm
sudo yum -y install rlwrap --enablerepo=epel
sudo yum -y install gcc make ncurses-devel

最新のemacsとleinをインストール,これはcentOS上で行いました.

> wget https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein
> mkdir bin
> mv lein ~/bin
> chmod 755 ~/bin/lein
> lein version

# emacsのインストール
> wget http://core.ring.gr.jp/pub/GNU/emacs/emacs-24.4.tar.gz
> tar xvfz emacs-24.4.tar.gz
> cd emacs-24.4
> ./configure --without-x
> make                  
> sudo make install

以上です.

- - -

追記(2015年2月21日)

使いたいサーバーがapacheだったので,その設定を追記します.
rbenvが入っていることを前提とします.

apacheをいれます

sudo yum -y install httpd
sudo chkconfig httpd on
sudo yum -y install libcurl-devel
sudo yum -y install httpd-devel
sudo yum -y install apr-devel
sudo yum -y install apr-util-devel

apacheとpassengerに必要なものを入れたらgemをいれます

gem install passenger
rbenv rehash
passenger-install-apache2-module

あとはシンボリックリンクとconfの設定を書き換えるだけです.


参考

Apache + Passenger で Sinatra アプリを動かす - crisis.tk's blog