2012年7月18日水曜日

EBS が attaching から attached にならない


EC2にて、EBSを何度かattach/detachしている際に、
ステータスがattachingのまま変化せず、インスタンス側に接続されない事がありました。


■原因
attachしようとしていたデバイスが既に使用(mount)されていたから。

今回は、detachが成功していたのでそのままattachしてしまったのですが、インスタンス側でデバイス(/dev/sdg)がmountされたままでした。
なので、attach出来ずattachingから進まなかったのです。。。




■対応方法
1.mountされていないか確認し、もしされていたらumountする
2.未使用のデバイスを使用する(sdf - sdpの中から選択)
3.インスタンスを再起動する

umount で -l を使う前に fuser で確認


umountしようとしたら device is busy とエラーが出ること、ありませんか?

どこかで使われてるよ!って言われているのですが、心当たりが全くないので強制的にumountしたくなります。
その気持ちを抑えて、一度使われているプロセスを確認しましょう。


# fuser -muv <umountしようとしているディレクトリ>



このプロセスなら消しても大丈夫と確認した上で、強制umountします。

# umount -l <ディレクトリ>



このオプション、シェル上だと使えませんでした。。。

2012年7月12日木曜日

https接続できるGitサーバを立てるならgit-http-backendを使おう


Gitサーバに接続する方法は3つあります。
・SSH
・git
・https


httpsで接続できるようにするには、WebDAVが一般的だったようですが、
どうにも接続が出来ずにいたら「git-http-backend」を使うといいよという情報を発見!



CentOS5で、Trac と git の連携 より
正確なソースがよくわからないけど、どうやら WebDAV だと、push がサポートされないっぽい。最近は、git-http-backend を使うらしい。なので、こいつを使うことに。


gitリポジトリをホストするのにWebDAV使わないほうがいい より
共有gitリポジトリをホストする方法をググると、WebDAVを使ったやり方が結構出てくる。このやり方には明確なデメリットしか無いにもかかわらず、WebDAVを使ってホストする方法を紹介するページでは触れられていないことが多い。(中略)もうWebDAVを導入してしまって構成変えるのも面倒くさい場合は、Smart HTTPを導入することでWebDAVによるホストの欠点を完全に隠すことができる。速度もssh経由に劣らないし、サーバサイドフックも起動する。



「git-http-backend」を使ったら超カンタンにhttpsなGitサーバが出来上がりましたよっと。

2012年7月10日火曜日

symfonyでカラムの更新を判断する


phpで、条件によってあるカラムを変更する、という処理を行う関数があるとします。
この時、戻り値で変更があったかどうかsymfonyなら分かるんです!



ざっくり、こんな感じ。

function change() {
  if ($this->name === 'test') {
    $this->name = 'hoge';
  }

  return $this;
}


// $user->name = 'test'

$user->change();
$lastModified = $user->getLastModified(); // $lastModifiedは配列

if (isset($lastModified['name']) {
  echo 'change!';
}


symfony使いなら知ってるよ( ´_ゝ`) かもしれないけど、初めて知ったので(^_^;)