ウェブサービスを作っています。

さくらのVPSでカスタムOSインストールができないとき

さくらの VPS で、カスタム OS インストールをしようとしたのですが、VNC コンソールが立ち上がりませんでした。

原因は、Java のセキュリティ設定でした。

以下、Mac の場合ですが、Windows などでも同様の手順で対処できると思います。

対処方法

  1. 最新版の Java をインストールする http://java.com/

  2. システム環境設定の Java から「Javaコントロール・パネル」を開く

  3. 「セキュリティ」タブの「例外サイト・リスト」に https://secure.sakura.ad.jp/ を追加

  4. FirefoxSafari で、VPS コントロールパネルを開く。Mac Chrome は、Java7 に対応していないようです

Chef Solo 基本操作まとめ

初回の操作

必要ならば Virtualbox, Vagrant をインストールしておく。

gem インストール

gem install chef  # chef-solo, knife コマンドが入る
knife configure  # 空欄で OK
gem install knife-solo  # knife solo が使えるようになる

レポジトリ作成

cd ~/dev/private
knife solo init chef-repo
cd ~/dev/private/chef-repo
git init
git commit -m ‘initial commit’

サーバごとの操作

サーバ名を melody とする。

サーバ準備

cd ~/dev/private/chef-repo
knife solo prepare melody
git add nodes/melody.json
git commit -m ‘add node json file’

クックブック作成

cd ~/dev/private/chef-repo
knife cookbook create nginx -o site-cookbooks
vi site-cookbooks/nginx/recipes/default.rb
vi nodes/melody.json

Chef Solo 実行

knife solo cook melody
git add site-cookbooks/nginx
git commit -m ‘Add nginx recipe’

サーバ上の不要ファイル削除

knife solo clean melody

参考

入門Chef Solo - Infrastructure as Code

入門Chef Solo - Infrastructure as Code

はてなブログに移行しました

何となく変えてみました。新しいものはいいですね。

Zen for Hatena Blog というテーマを使わせていただいています。

記事下のバナー広告がどうも気に入らなかったので、お金を払って広告非表示にしました。

今後とも、よろしくお願いいたします。

wercker + Capistrano で自動デプロイ

GitHub / Bitbucket のプライベートリポジトリも無料で CI し放題の wercker というサービスがあります。(2013/11/30 現在)
サイトもきれいで素敵です。ビルド成功後、Capistrano でデプロイが自動実行される方法を書いておきます。


まず、アプリの設定で SSH 公開鍵を作成します。


生成された公開鍵は、デプロイ先サーバの ~/.ssh/authorized_keys や Bitbucket のデプロイ鍵などに追加しておきます。
次に、アプリの設定から Deploy targets の設定をします。Custom deploy を選択して、


master ブランチのビルドに成功したら、自動デプロイするようにします。
入力したら、Deploy pipeline の Add new variable をクリック。


SSH Key pair を選択し、先ほど作成した鍵を選択します。
名前の欄には、WERCKER_SSH_KEY と設定しました。
これで、デプロイ時に WERCKER_SSH_KEY_PUBLIC, WERCKER_SSH_KEY_PRIVATE という環境変数が設定されます。
OK をクリック。


Save をクリック。


あとは、wercker.yml に deploy 部分を追加して commit & push すれば、自動デプロイ環境構築完了です。
Capistrano の config/deploy.rb も、適切に設定してあるか確認しておくと良いと思います。
以下、wercker.yml の追加部分です。

deploy:
    steps:
        - script:
            name: make .ssh directory
            code: mkdir -p "$HOME/.ssh"
        - create-file:
            name: write ssh key
            filename: $HOME/.ssh/id_rsa
            overwrite: true
            hide-from-log: true
            content: $WERCKER_SSH_KEY_PRIVATE
        - script:
            name: set permissions for ssh key
            code: chmod 0400 $HOME/.ssh/id_rsa
        - cap


最後に、とある Rails アプリの wercker.yml 全体例も貼っておきます。

box: wercker/ubuntu12.04-ruby2.0.0
services:
    - wercker/mysql
build:
    steps:
        - bundle-install
        - rails-database-yml
        - script:
            name: echo ruby information
            code: |
                echo "ruby version $(ruby --version) running"
                echo "from location $(which ruby)"
                echo -p "gem list: $(gem list)"
        - script:
            name: setup config files
            code: |
                cp config/resque.sample.yml config/resque.yml
                cp config/sunspot.sample.yml config/sunspot.yml
        - script:
            name: setup db
            code: bundle exec rake db:schema:load RAILS_ENV=test
        - script:
            name: rspec
            code: bundle exec rspec
    after-steps:
        - hipchat-notify:
            token: $HIPCHAT_TOKEN
            room-id: 357378
            from-name: wercker
deploy:
    steps:
        - script:
            name: make .ssh directory
            code: mkdir -p "$HOME/.ssh"
        - create-file:
            name: write ssh key
            filename: $HOME/.ssh/id_rsa
            overwrite: true
            hide-from-log: true
            content: $WERCKER_SSH_KEY_PRIVATE
        - script:
            name: set permissions for ssh key
            code: chmod 0400 $HOME/.ssh/id_rsa
        - cap
    after-steps:
        - hipchat-notify:
            token: $HIPCHAT_TOKEN
            room-id: 357378
            from-name: wercker

order メソッドをチェインしたときの挙動が Rails3 と Rails4.0.0 で逆

ActiveRecord の AR::Relation#order メソッドですが、チェインした場合の挙動が Rails4.0.0 で変更されていました。
追記(2013/11/7 18:00):
Rails4.0.1 で、Rails3 の挙動に戻りましたので、この記事は Rails4.0.0 に対してのみ有用です。ご注意ください。
Ruby on Rails 4.0.1リリース!大量のバグ修正、3系からの移行も少し簡単になりました | TechRacho


Rails3

User.order(:a).order(:b)  # => ORDER BY a, b


Rails4.0.0

User.order(:a).order(:b)  # => ORDER BY b, a


後から設定した値が、優先されるようになったんですね。