このブログは、レンタルサーバーのヘテムルさんで運用してます。
ヘテムルさんは、ブログやサイトを運営するのに快適です。
特に静的サイトの表示が速いのですが、共用サーバーの宿命なのか、データベースを利用したサイト(WordPressなど)になると、表示速度の変動が激しいのです。
そんなこんなで、さくらインターネットのVPS(仮想専用サーバー)に移行してみました。
なんでHerokuやWindows AzureやAmazon EC2などにしないのか?
あー、あー、聞こえない。
せっかくなので、Chefを使ってやってみよう
Chefとは、
私の頭の中で、仮想化がモヤっとしているから、Docker、Vagrant、Chefと一緒にまとめてみる。
にも書きましたが、
複数台のサーバーを同じ環境にできるソフトウェアです。
もちろん、一台でも有効です。
サーバーの環境を整える場合、普通は、サーバーにログインして、コマンドを実行してアプリケーションをインストールしたり、初期設定を変えたりします。
最初から設定したい場合、仮想環境であれば、初期化するのは簡単ですが、自分で変えた設定は、同じ手順でやり直さなくてはいけません。
何度も繰り返すのは、大変です。
そこでChefを利用して、整えたい環境をrecipeとして作成しておくと、手順を覚える必要がなく、何度でもrecipe通りにサーバーを構築することができます。
なんて便利なんでしょう!
それをやってみたいと思います。
まずは、構成を考える
私は、Chef以前に、インフラ初心者ですから、サーバーには何を入れたら良いのか、分かりません。
まずは、何を入れるか考えてみたいと思います。
構成を洗い出す
途方に暮れているわけにもいかないので、検索してみます。
さくら公式のサポート情報によると、まずは、セキュリティの設定やらないといけないようです。
下記のサイトですと、その他にWebサーバーとデータベースのことが書かれていました。
初心者でもわかる!さくらVPS – Sakura VPS マニュアル
tukumemo.comは、WordPressですので、WebサーバーとPHPとMySQLは必須ですね。
あとは、メール機能も入れたいですね。
今回、メールの設定をしてしまいましたが、特にこだわりがなければ、セキュリティのことを考えると、外部のサービスを使う方が良いと思います。
構成を決めました
こんな感じに決まりました。
これを目標に頑張っていきたいと思います。
- rootパスワードの変更
- SSH接続の設定変更
- sudoの設定
- 一般ユーザーの追加
- システムのアップデート
- iptablesの設定
- WEBサーバーの設定
- WEBページの設定
- マルチドメインの設定
- PHPの設定
- MySQLの設定
- Postfix/Dovecot/Postfix Adminの設定
Chefをするためには、こいつらがないと始まらない
以前、Vagrantの記事(WindowsでVagrantを動かした話。)を書きましたが、
- VirtualBox
- Vagrant
- Cygwin
これらがないと始まりません。
インストールをしましょう。
その後も入れるものが、いっぱいありますので、休憩しながら進めましょう。
VirtualBoxとVagrantのインストールは問題ないと思います。
VirtualBoxに環境変数を通すのを忘れないでください。
Cygwinに関しては、下記のサイトが参考になります。
(勝手にお礼言ってしまいます。DQNEOさん、ありがとうございます!)
64bit版Cygwinをインストールしてapt-cygするまで
すでにCygwinをインストール済みでも、後でapt-cygというツールが必要となりますので、apt-cygを必ず入れましょう。
入れ忘れたパッケージがあっても、setup-x86_64.exeを起動すると、再度インストールできるので、気軽にやりましょう。
ChefはRubyで動いているので、rbenvを入れます
次はRubyを入れます。
既にインストールしている人もいるかもしれませんが、Cygwinのために入れていないのであれば、rbenvを入れます。
rbenvとは、Rubyの複数のバージョンを切り替えたり管理したりするツールです。
インストールするRubyのバージョンは、現在の安定版2.1.2が良いです。
$ git clone git://github.com/sstephenson/rbenv.git ~/.rbenv $ git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build $ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile $ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile $ exec $SHELL -l $ rbenv install 2.1.2 $ rbenv global 2.1.2 $ rbenv rehash $ ruby -v ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-cygwin]
こちらのサイトが参考になります。
[Cygwin]rbenvとruby-buildで最新のrubyを入れる
sstephenson/rbenv
sstephenson/ruby-build
RubyGemsをアップデートしよう
RubyGemsとは、色々なパッケージを管理・インストールするためのツールです。
Cygwinで言えば、先ほどのapt-cygであったり、Node.jsで言えばnpmのようなものです。
RubyGemsは、Rubyと一緒にインストールされます。
しかし、古いバージョンの可能性があるので、アップデートする必要があります。
$ gem install rubygems-update $ update_rubygems $ gem -v 2.4.1
Chef/knife-soloをインストールしよう
それでは、Chefをインストールしましょう。
公式サイトからでは、Cygwinにインストールする方法が分かりませんでしたが、RubyGemsからもインストールが可能ですので、そちらで行います。
$ gem install chef $ chef-solo -v Chef: 11.12.8
knife-soloを入れよう
knife-soloは、ChefのknifeコマンドをChef solo用に便利にするプラグインです。
これもインストールしましょう。
$ gem install knife-solo $ gem list | grep knife-solo knife-solo (0.4.2)
その後、knifeの初期設定をします。
特に何か設定する必要はなく、エンターキーを押していけば問題ないです。
$ knife configure
Berkshelfをインストールしよう
Berkshelfとは、ChefのCookbookとその依存関係を管理するツールです。
Cookbookとは、recipeがまとまったものです。
下記のサイトにあるように、すでに便利なCookbookがいくつもあります。
(以降サードパーティCookbookと呼びます)
中には、他のCookbookに依存したものがありますが、Berkshelfを使うと、依存したものを自動で入れてくれます。
今回、いくつか利用していますので、Berkshelfも入れたいのですが、簡単にインストールできないのです!
Berkshelfがインストールできなくて、私の心は折れかけました…。
しかし、下記の参考サイト通り行うと、スムーズに進むことができました。
[決定版]Cygwin(64bit)でBerkshelf v3をインストールする方法
ちなみに、RubyGemsパッケージの依存を管理するものとして、Bundlerというものがあります。
本来であれば、ChefやKnife SoloをBundlerで管理した方が良いのですが、Cygwinでは、Berkshelfを自動でインストールできないので、Bundlerを使いませんでした。
下準備完了
入れるものが多かったですが、ここまで上手くいきましたでしょうか。
Cygwinを使えば、WindowsでもMacとあまり変わらない手順で、環境が作れるはずですが、Cygwinのクセが精神的にやられますね。
長くなったので、続きは次回!
ちなみにこの本を読んで、今回の記事に挑戦しました。
事前に勉強してから読みましたが、かなり良かったです。
コメント