Webアプリケーションのデプロイ方法を考えたけどダメダメだった件

perlのWebアプリケーションをデプロイする方法を考えてましたが、
納得いく方法ができずに残念なことに。

サーバ構成

  • ①デプロイサーバ兼webサーバ
  • ②デプロイ先webサーバ数台

やりたかった流れ

WebサーバのOSとアーキテクチャが一緒であれば
複数サーバへのデプロイはrsyncだけでいいというのをどこかで見た気がするので
以下のような流れで考えていました。

問題点?

cpanm --installdeps したときに以下の問題が2点ほど。

  • 既にモジュールがインストールされている場合、extlibに入らない

既に共有モジュールにインストールされているとextlibにインストールされないので
他サーバにrsyncするときにモジュール抜けが発生したり。

  • バージョン指定してインストールが出来ない

最近mojoのバージョンが上がってテスト通らなくなったのでバージョン指定インストールしたくなりました。
これについてはあらかじめそのバージョンのtarをアプリ配下に置いておいて
cpanm --installdeps する直前に 指定インストールしてしまえばいいような気も。



残念な現状

extlibに入れる方法ではありません。*1
なのでデプロイサーバだけでテストしても
他サーバのテストにはならんよなぁ、という感じで微妙。



他の方法なども考えてる

CPAN::Packagerとか?でもこれはうまくrpm出来なくて断念。


または各サーバでデプロイサーバと同じことすればいい気もするけど、
Test::mysqld使ってるので全サーバにmysql本体を入れないといけいないのがどうかなーと。
でもまあこの方法が一番何も考えなくていい気もしてます。



複数サーバデプロイに関しても

Archerとかcapistranoも使ってみたかったけど、rsyncとrestartだけなので
自前スクリプト作ってNet::OpenSSHでデプロイしちゃってます。
でもなんかツール使ったほうがいいですよね。たぶん

*1:普通にcpanmで入れてる