polidog lab++

Blog
ブログをさくらVPSからDigitalOrceanに乗り換えた

ブログをさくらVPSからDigitalOrceanに乗り換えた

Dec 16, 2015 | tech | vagrant digitalocean wercker

ずっとさくらVPS(2G)でこのブログを運用していましたが、月1,500円支払うの必要があるのかと悩むようになりました。 年間15,000円払うのであれば、その分節約して美味しい日本酒でも飲みたいものです。

ということで、この前のsymfony meetup #7で@koriymさんに開発環境にDigitalOceanを勧められたので、まずは自分のブログから導入してみました。

vagrant + chefで構築

今回はvagrant + chefという環境で構築しました。 OSはCentOS7.1で、webサーバにはh2oを利用しています。

まずはDigitalOceanでAPIキーを入手する

Login後のページの上部にあるリンクAPIからPersonal Access Tokensを作成しましょう。

適当にcookbookとか用意する

ChefDK入っているので、適当にchef-repoを作りましょう。

$ chef generate repo blog
$ cd blog

Berksfileを用意します。

$ vi Berksfile

source 'https://supermarket.chef.io'

cookbook 'h2o', '~> 0.1.1'

cookbookファイルができているのでデフォルトのレシピに以下のように記述します。

$ vi cookbooks/example/recipes/default.rb

include_recipe 'h2o::default'

directory '/var/www/polidog.jp' do
  action :create
  owner 'root'
  mode '0755'
  recursive true
end


begin
  t = resources(:template => "/etc/h2o/h2o.conf")
  t.source "h2o.conf.erb"
  t.cookbook "blog"
rescue Chef::Exceptions::ResourceNotFound
  Chef::Log.warn "could not find template /etc/rsyslog.conf to modify"
end

h2o用のconf用のテンプレートを用意します

$ vi cookbooks/templates/default/h2o.conf.erb

hosts:
  "polidog.jp":
    listen:
      port: 80
    paths:
      "/":
        file.dir: /var/www/polidog.jp/public

access-log: <%= node['h2o']['logdir'] %>/access.log
error-log: <%= node['h2o']['logdir'] %>/error.log
pid-file: <%= node['h2o']['pid'] %>
user: <%= node['h2o']['user'] %>

Vagrantプラグインインストール

vagrant-digitaloceanをインストールしましょう。

$ vagrant plugin install vagrant-digitalocean

Vagrantfileを用意する

Vagrantfileは以下のように書いてあげます。 今回はCentOS7.1で、リージョンはシンガポールを選択しています。

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure('2') do |config|

  config.vm.provider :digital_ocean do |provider, override|
    override.ssh.private_key_path = '~/.ssh/vagrant-digitalocean.pem'
    override.vm.box = 'digital_ocean'
    override.vm.box_url = "https://github.com/smdahlen/vagrant-digitalocean/raw/master/box/digital_ocean.box"

    provider.token = 'your token'
    provider.image = 'centos-7-0-x64'
    provider.region = 'sgp1'
    provider.size = '512mb'
  end

  config.vm.provision 'chef_zero' do |chef|
    chef.cookbooks_path = ["cookbooks", "berks-cookbooks"]
    chef.data_bags_path = 'data_bags'
    chef.roles_path = 'roles'
    chef.add_role "digital"
  end
end

Chef-Zeroも使えていろいろとハッピーですね!

ハマった箇所

ローカルでvagrant操作する感覚で操作できるので特に問題はないんですが、一つだけ気になるところがありました。

vagrant haltが出来ないんですよね。。。
まあ止めることないからいいんですが、どうやらAPIのバージョンが1系になっているのかエラーが発生してしまいます。

まだ詳しく調べてないので、あとで調べます。

最後に

リージョンが国内にないのはちょっと辛いですが、静的ページ返すだけの簡単なサーバであれば月500円ぐらいで借りられるDigitalOceanはなかなか良いかと思います。

さくらVPSでvagrant upできれば最高なんだけどなぁ・・・(笑)

comments powered by Disqus

関連記事

© 2017 polidog lab++