Vagrantでさくらインターネットもどきを作る
Vagrant を使って一気にさくらインターネットと同等のサーバをローカルに作ってしまおうと思い, 調べたことからVagrant設定のファイルまでを備忘録でまとめておきます.
経緯
最近ひょんなことから, さくらインターネットでwebページの管理を担当することに.
Rubyでcgiを書いていたためデバッグ環境が欲しいのですが, あいにく手元にwebサーバは無い.仮想マシンを用意することにしました.
せっかく用意するなら,チーム内全員で同じ環境を使いたいですよね. そんなこんなで,ちょうど気になっていたVagrantを使用してみました.
前提
めざす仮想マシン
最低限,htmlが表示できてRubyのcgiが動く程度までを再現します.
- Apacheを動かす
- ホスト側からlocalhost:8080でアクセスできるようにする
- 仮想マシンとの共有フォルダを設定して,ファイル編集はホスト側からできるようにする
- Rubyを使えるようにする
- RubyのPATHを/usr/local/bin/rubyにする(さくらインターネットと同じ)
- Apacheのルートディレクトリ以下すべてでcgiが実行できるように設定する
本当はsendmailなどの設定もしたいのですが,まずはここまで.
設定内容
設定内容はGithubで公開してます.
Vagrantfileは下記の通り.
# -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure(2) do |config| config.vm.box = "hashicorp/precise64" config.vm.network :forwarded_port, guest: 80, host: 8080 config.vm.provision :shell, path: "bootstrap.sh" end
各部分を書いた理由などは下記の通り.一番上の2行はおまじない.
config.vm.box = "hashicorp/precise64"
とりあえずapacheとrubyが動けばいいので,Vagrantのチュートリアルと同じhashicorpのubuntuを導入します. さくらはFreeBSDだけど,ちょっと面倒なので楽しちゃいます
config.vm.network :forwarded_port, guest: 80, host: 8080
ゲスト側の80番ポートにホスト側からlocalhost:8080でアクセスできるよう設定しています. これでホスト側のブラウザからwebページの閲覧ができます.
config.vm.provision :shell, path: "bootstrap.sh"
OS導入後,初期設定(プロビジョニングっていうらしい?)として,bootstrap.shを呼び出しています. この中でapacheの導入などなど行ってます.
bootstrap.shの中身は下記の通り.
#!/usr/bin/env bash apt-get update apt-get install git -y apt-get install vim -y apt-get install -y apache2 if ! [ -L /var/www ]; then rm -rf /var/www ln -fs /vagrant/sharedFolder /var/www fi apt-get install ruby1.8 -y # Link for ruby binary as if it is in the sakura ln -s /usr/bin/ruby /usr/local/bin/ruby # Enable CGI sed -i -e "/..*Directory \/var\/www..*/a\ \t\tAddHandler cgi-script .cgi" /etc/apache2/sites-available/default sed -i '/Directory \/var\/www/,/\/Directory/s/Options/Options ExecCGI/' /etc/apache2/sites-available/default service apache2 restart
gitやvimを入れているあたりは本筋とは関係ないので省略.
apt-get install -y apache2 if ! [ -L /var/www ]; then rm -rf /var/www ln -fs /vagrant/sharedFolder /var/www fi
ここでapacheを導入し,/var/wwwから共有フォルダへリンクを貼ります. このあたりはチュートリアルのこの辺をもらってきました.
apt-get install ruby1.8 -y # Link for ruby binary as if it is in the sakura ln -s /usr/bin/ruby /usr/local/bin/ruby
ここはさくらインターネットのバージョンに合わせてrubyを入れています. また,さくらインターネットではrubyのバイナリの場所がちょっと違うのでシンボリックリンクで対応.
# Enable CGI sed -i -e "/..*Directory \/var\/www..*/a\ \t\tAddHandler cgi-script .cgi" /etc/apache2/sites-available/default sed -i '/Directory \/var\/www/,/\/Directory/s/Options/Options ExecCGI/' /etc/apache2/sites-available/default service apache2 restart
cgiを許可するために,apacheの設定を書き換えてます(無理やり).
apacheは2から設定ファイルがhttpd.conf以外にも大量にあるようで,cgiの実行許可などはsites-available/defaultの中に設定を書くようです. 詳しい書き方などは他のページを参照.
Apache Tutorial: CGI による動的コンテンツ - Apache HTTP サーバ,Apache2の設定メモ(CGI設定) - あかいつき,など
あとはこのファイル内の書き換え箇所をsedで探して,
あとはこれを実行すれば,localhost:8080でアクセスができるさくらサーバもどきの完成です.
sendmailの設定なんかもしてしまいたいなぁ