読者です 読者をやめる 読者になる 読者になる

さまよえる、Android

Androidのプログラミングで便利なことや残しておきたいことを残しておく。もしオススメのライブラリがあったら教えてくださいね。

CakePHPで学ぶ継続的インテグレーションのデプロイ先をDigitalOceanに移行する。(1)

PHP DigitalOcean Vagrant CakePHP

CakePHPで学ぶ継続的インテグレーション」を1ヶ月ぐらい読んでいる。作者のGitHubからVagrantfileやchefのレシピはダウンロードできるので同じ環境をすぐに構築できるのだが、develop、ci、deployの3つの仮想環境を1つのパソコンに構築するのは、パフォーマンス的にきつい。それに将来サービスとしてリリースするのにローカルにデプロイするのも雰囲気がでないのでデプロイの環境をサーバーへ移そうと思いDigitalOceanというサービスを利用することに決めた。AWSでもいいのだが値段を比較すると使っていないときは料金がかからないのでお得です。

アカウントは以前作成していたのでクレジットカードの登録から始まる。すごい簡単でクレジットカードの登録をしてtokenを取得すれば、あとはVagrantfileに必要項目を書いておけば好きな仮想OSが利用できる。

クレジットカードの登録

f:id:araiyusukej:20150117134241j:plain

もちろんDigitalOceanのWebサイトからも仮想OSのタイプやサーバーのスペックを選択することも可能で、SAKURA VPSに近い。環境を手軽に新規で作成したり、必要なくなったら壊したりするのには自動化させたい。そこでWebサイトからマウス使ってOS選択したりSSHの設定したりするのは面倒くさいので、Vagrantfileというファイルに、その辺の情報を記入しておければVagrantが提供するコマンドからDigitalOcean上に仮想OSを作成したり、削除したりすることができる。sakura vpsを利用していた時は一々ホームページ上でOSの再インストールをマウスを使って月額固定で料金を支払っていたのだが、DigitalOceanだと初期設定(OSやサービス利用情報)はVagrantfileに書いておき、コマンドでOSの再インストールやOSアンインストールが操作できるので必要ないときは金がかからないのがよい。サービスとしてリリースする場合は常に動かさなくてはいけないのだが、勉強目的には丁度いいよね。

OSをアンインストールするということは、インストールした環境を捨てるということになるのだが、Vagrantはchefと連携が可能でVagrant起動時にchef経由で環境構築を自動化することができる。chefというのは今までコマンドでインストールしていたPHPApache、ユーザー作成や権限なんかをレシピという設定ファイルに書いておくと環境構築を自動化することができる。

Vagrantのインストール

サイトからダウンロードしてダブルクリックすればインストール完了。自分はユーザーディレクトリにdegitalOceanというディレクトリを作成して、そこにVagrantfileを入れてる。

https://www.vagrantup.com

cd ~

mkdir degitalOcean

touch Vagrantfile

VagrantにDigitalOceanのプラグインをインストール

vagrant plugin install vagrant-digitalocean ;
vagrant plugin list ;

Vagrantfile

f:id:araiyusukej:20150117222957j:plain

sshの設定

~/.ssh/id_rsaにキーを作成する。

ssh-keygen -t rsa -C "email@example.com"

cat ~/.ssh/id_rsa.pub

②ホスト名を指定する。

管理画面でこんな感じで表示されます。複数運営する場合にわかりやすい名前をつけておくといい。
f:id:araiyusukej:20150117224333j:plain

③token

これは管理画面で作成する。Personal Access Tokensからtokenを生成する。ReadとWriteにチェックを付けるのを忘れずに。tokenは1回しか表示されないので注意すること。

URL
https://cloud.digitalocean.com/settings/applications

f:id:araiyusukej:20150117225009j:plain

f:id:araiyusukej:20150117225149j:plain


④OSの選択

本と同じ環境を構築するため、Ubuntuを選択。

f:id:araiyusukej:20150117215221j:plain

⑤リージョン

日本に近いシンガポールを選択。
f:id:araiyusukej:20150117224610j:plain

⑥タイプ

まずは料金の確認。自分は1ヶ月5ドルの512MBタイプを選択した。
Vagrantfileには、provider.size = '512mb'を指定する。
f:id:araiyusukej:20150117214845j:plain

Vagrantfile

Vagrant.configure('2') do |config|
  config.vm.provider :digital_ocean do |provider, override|
    override.ssh.private_key_path = '~/.ssh/id_rsa'
    override.vm.box = 'digital_ocean'
    override.vm.box_url = "https://github.com/smdahlen/vagrant-digitalocean/raw/master/box/digital_ocean.box"
    override.vm.hostname = 'deploy'
    provider.token = '管理画面で作ったのをコピペする'
    provider.image = 'ubuntu-14-04-x64'
    provider.region = 'sgp1'
    provider.size = '512mb'
  end 
end

VagrantからDigitalOcean上に仮想OSを作成する。

vagrant up --provider=digital_ocean

コマンド実行後、少し時間がかかります。エラーがなければ管理画面に行きSSHの設定や仮想OSがインストールされているか確認できる。

f:id:araiyusukej:20150117222504j:plain

f:id:araiyusukej:20150117222543j:plain

SSHでログイン

vagrant ssh

Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-43-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

  System information as of Sat Jan 17 08:10:37 EST 2015

  System load:  0.18               Processes:           77
  Usage of /:   11.2% of 19.56GB   Users logged in:     0
  Memory usage: 11%                IP address for eth0: 128.199.190.86
  Swap usage:   0%                 IP address for eth1: 10.130.161.208

  Graph this data and manage this system at:
    https://landscape.canonical.com/

0 packages can be updated.
0 updates are security updates.

root@deploy:~# 

仮想OSを終了

vagrant halt

==> default: Powering off the droplet...

管理画面を見ると停止になってます。

仮想OSをアンインストール

vagrant destroy

    default: Are you sure you want to destroy the 'default' VM? [y/N] y
==> default: Destroying the droplet...

管理画面を見ると、インストールされた仮想OSはありません。


CakePHPで学ぶ継続的インテグレーションのデプロイ先をDigitalOceanに移行する。(2) - araiyusuke’s blog