Debian (squeeze) ヘッドレス環境で firefox を使う

Debian (squeeze) サーバで、X 環境の代わりに xvfb を使って、firefox を起動してみた。
(おまけでスクリーンショットも撮ってみた。)

これをもとに、Selenium のテスト実行環境を用意しようと思う。

必要なパッケージのインストール:

apt-get -y install xvfb libgl1-mesa-dri ttf-vlgothic iceweasel

xvfb を起動

 Xvfb :99

firefox を起動 (Yahoo!JAPAN を開く)

  DISPLAY=:99 firefox http://www.yahoo.co.jp/

必要なパッケージを追加して、スクリーンショットを撮ってみる。

  apt-get -y install x11-apps imagemagick
  xwd -display :99 -root -out test.xwd
  convert test.xwd test.png

デプロイ自動化チェックリスト

デプロイを自動化するために何から手をつけていいやら、やることが多くて方向を見失いがち。そこで、チェックリストにしてみた。

http://www.ryuzee.com/contents/blog/4461

より、大項目を並べてみる。

# 項目
1 ソースコードのバージョン管理
2 設定ファイルのバージョン管理
3 データベーススキーマとデータのバージョン管理(マイグレーションの導入)
4 動作させるサーバのミドルウェアのインストール自動化や設定自動化
5 テスト自動化
6 CIサーバの構築
7 デプロイスクリプトの作成

方針:

  • 完成度が低くても、まずは一通り実現させることを優先する。
  • 項目の中で最も優先順位が高いのが CIサーバの構築。

チェック結果

プロジェクト毎に対応度合いは異なるが、(2012/9) 時点 は、以下の状況。

1.ソースコードのバージョン管理

ソースコード管理は、もはや当然のこと、以下のツールを使用している。

2.設定ファイルのバージョン管理

まだ有効な管理方法を見いだしていない。パスワードなどのセキュリティ上重要な設定は、ソースと同じように管理するわけにはいかない。

  • Chef Server

が使えるかもしれない。

3. データベーススキーマとデータのバージョン管理(マイグレーションの導入)

Java 系で使い始めたツールは、

  • dbdeploy

PHP 系は、

  • Phpmig

を検討しているが、まだ周辺が固まっていない部分があって保留中。

4. 動作させるサーバのミドルウェアのインストール自動化や設定自動化

以下のツールが便利。

5.テスト自動化

xUnit 系のツールを使用している。

また、モックオブジェクトフレームワークも役に立つ。

  • Mockito
6.CIサーバの構築

Java 系のプロジェクトのみで構築実績がある。

  • Jenkins

を利用している。ビルドツールが必要になる。

7.デプロイスクリプトの作成

Java 系のプロジェクト1つはよく出来たスクリプトがあるので、本当に素早くデプロイできている。
手元でスクリプトを実行するツールとして

を使用している。

Chef の公式 cookbook リポジトリが移動してた

いままで、Opscode が管理する Chef の cookbook リポジトリ

https://github.com/opscode-cookbooks

以下に移動していた。今まで1つのリポジトリで管理していたものが、cookbook 単位で管理されるようになった。

移動してもう4か月前になるのか。おかしいなと思っていたが気づくの遅すぎw

http://www.opscode.com/blog/2012/03/20/cookbooks-migrated-to-new-github-organization/
https://github.com/opscode/cookbooks/blob/master/README.md

定義済みのクラス・関数・定数・変数を取得する

PHP ソース解析のために必要になった。

  • 定数:get_defined_constants()
  • 変数:get_defined_vars()
  • 関数:get_defined_functions()
  • クラス:get_declared_classes()
  • インターフェース: get_declared_interfaces()

命名規則で "defined" 派と "declared" 派が分かれているところが、PHP クオリティ。