BlogCakePHPを中心としたサイト開発情報をメインに公開。新しもの好きなので時々製品レポートなんかも。Library」周りで整備をした、ソースコードの公開方法について晒してみようと思います。Library」は少々特殊かもしれませんが「主にCakePHP内で利用されているライブラリ」ではありますが一応PHP全般で利用が可能な携帯サイト向けライブラリです。それぞれのCakePHP環境に「上書きコピー」で適用していただく方が利便性が高いと思い、CakePHPに実装した形ではなく、必要なファイルのみをアーカイブにまとめて公開していました。ところが、当方では基本的にCakePHP内に実装した形で開発を行い、そこから必要なものを抜き出して公開イメージを作っていました。この作業が非常に面倒で、そのうちバージョン管理ミス等も起きるだろうと考え、なんとかしたい要因の一つとして前々から方法を模索していました。Libraryを生成するような仕組みが必要になってきました。共にgithabにて公開するつもりでしたので、つまりgitでバージョン管理されたものについて、いくつかの操作を行って連携していく必要があります。そんなわけで、どうしようかとずっと悩んでいた開発環境とリポジトリ周りの構築についてようやく実用的なものが出来たので、「ktai-dev」のリリースと共に運用を始めた次第です。簡単に図にしたものをご覧ください。ご覧の通り、gitリポジトリがた~くさんあるのですが、分散管理できるgitならではという感じかもしれません(笑)。左はローカル環境です。自宅のデスクトップと持ち運びようのノートPCに、それぞれVMWareServerを稼働させ、VMでFedora11を動かしています。よるktai-devの作業ディレクトリがあり、その右側にある非公開サーバ内にあるktai-devリポジトリに対してのみコミットしています。ここについては、最初は非公開サーバにリポジトリを置かずにUSBメモリで作業ディレクトリを共有していたこともあるのですが、何か事故があってはいけないと思いやめてそれぞれでcloneするようにしました。他の作業者が増えた場合にも対応に困る場合もあるので。欠点もあり、「作業途中で続きをデスクトップとノートで行き来できない」点でUSBメモリ方式と比べて使い勝手が悪い点があります。当方は「電車開発」を常時行っていて、作業が未完のまま帰宅するのが当たり前なので。途中のままコミットするのが気持ち悪いので、仕方がないのでノートで作業を完結するようにしています(笑)。次に非公開サーバなのですが、これは外にある専用サーバです。sshにてやりとりしています。ssh://user@mydomain.com/home/user/git/ktai-devのように取得しておけば、次からここに対して更新を行えます。git操作時(push/pull等)では、sshのパスワードを聞かれます。ここが面倒ですが、共有リポジトリを作るにはとても面倒な設定作業が必要になるのでとりあえずそのままです。initで「–bare」を付けないことです。いうと、ここに集められたコードを「KtaiLibrary」リポジトリに反映させる必要があるからです。このために、仮の作業ディレクトリを展開して実ファイルを取り出すことを行っています。必要なファイルを抜き出してKtaiLibraryリポジトリに反映させるための「デプロイツール」があります。これは単純なrmやらcpが列挙されているコマンドスクリプトです。これを叩いてファイルをKtaiLibrary作業ディレクトリに反映させます。commitを行い、その右のgithubリポジトリにpushします。ktai-devはそれで別途pushします。ここの部分についてはもう一つポイントがあります。masterをすると、作業ファイル内に更新されたファイルがあると見なされてcheckoutがされないのです。ここで相当はまりました。masterで、作業ディレクトリの内容を問わずに最新のファイルが展開されます。ググってもなかなかこの情報が出てきませんでしたので、気づくのが遅すぎました(^^;。githubですが...github内は特に何も行ってなくて、純粋な公開窓口です。多くを語ることもないでしょう。リポジトリ公開はここまでですが、それとは別にBTSをRedmineにて行っていて、その中でgitリポジトリ(のリスト)を公開しています。これをやるためにはRedmine内にcloneをfetchする必要があり、さらにリポジトリを作っています。cronでリポジトリを定期的にfetchしています(ちなみに、現在fetchを行っているのはKtaiLibraryリポジトリの方であり、図とはちょっと違います。kta-devに対して行うように修正予定です)。現在非公開サーバ側からgithubにpushする行程は全て手動で行っています。ktai-devのpushについては当面ため込んでから行いたいというのもあるので非公開サーバ側でコマンドを叩く方式でいいのですが、KtaiLibraryに対しては、前述のktai-devに対してのcheckoutや、githubへのpushもデプロイツールに入れてしまおうと考えています。Redmine側のリポジトリもある意味無駄なので、なんとか出来ないかなと思っています。github側にフックできる仕組みがあるみたいなのでそれを活用するか、そもそもgithubを見ずに非公開サーバ側で解決するべきかなとも考えています。こんな感じで多少他のプロジェクトと比べて複雑かもしれませんが、このように別のリポジトリからの複製物に対してgit管理が出来るとか、間接的にgithub公開できるとか、多少なりともノウハウがお見せできたかなと思います。何か他におもしろいアイデアがあるようでしたら是非教えてください!追記(2010.05.01)Twitterでいくつかアイデアをいただきました!ありがとうございます。●非公開サーバ側の.ssh/authorized_keysに公開鍵を登録すればパスワードは聞かれなくなる(@nojimageさん)これは常識的なものでしたね。(githubのURL)」とかすれば、サーバのコンソールからでなくてもgithubにpushできる(@kaz_29さん)確かにその通りです。(木)【サーバ関連】Fedora10でdaemontools(qmail)にはまりまくった1日もしかしたら、当サイトにご来訪した際に一時的に閲覧不可能だったかもしれません。リブートを何回かやりました(汗)。メールのマルチドメイン化がすっかりご無沙汰だったのですが、必要に迫られたので対応していました。MTAもPostfixからqmailに変更することにしました。前回別のサーバでsubmission化したPostfixの導入ではまったので。qmail(以前の)会社で使い慣れているのと、同じく前回導入して、その際の成果物としてインストール手順書を作ってあるので。そんなわけで、1時間もあればバッチリ動くだろうと思っていたのが甘かったです。子鬼を軽くあしらうつもりが、完全にあしらわれました(涙)。いうわけで、daemontoolsにはまりまくっていたのでした。エラーなく手順書通りにインストールされ、動作テストをしようということでtelnetでアクセスするも反応なし。psを確認すると、常駐しているはずのsvscanbootが見あたらず。あれ、自動的にどこかに登録されるんじゃなかったっけ、とinittabを見ると、正しく追加されている。見てもinittabが呼ばれていないような気がするのです。まっさらにして再インストールを試みたり、いろいろ試しても結局daemontoolsは起動できず。おかしいなぁと、半ば半べそ状態(嘘)でグーグル先生にしつこく相談すると「Fedora10はinittab呼ばないんじゃね?」ということで、やっと有用な情報に巡り会えました。Editionへdaemontoolsをインストールするhttp://backslash.ddo.jp/wordpress/index.php/archives/183当方のサーバは先日Fedora10にアップグレードしまして、その際にinittabからupstartに変わったそうです。前回はCentOSにインストールしたのですが、CentOSはinittabのままなので、大丈夫だった...という訳なのです。いうわけで、5時間くらい無駄な時間を使ってしまったようです。daemontoolsのズバリの情報がなかったことにビックリ。OSにqmailを入れる場合...とりわけFedoraに入れる場合ははまるぜよ、たぶん。AdminでSMTP-AUTH&バーチャルドメインなメールサーバをたてようかと頑張ってみたのですが、見事に玉砕しました。最初はSSLもついていたんですが、一晩やっても動かず。まあSSLはいろいろあってしょうがないかと思っていたので抜きで再構築したんですが...思いっきりはまってしまい、解決する見込みもないので諦めた次第です。Express6でメール送信すると失敗するのですが、他のソフト(Shuriken2008)では上手く送信できるのです。PLAIN」としか表示されず、「LOGIN」が無いためにOE6で認証が出来ず、Rejectされてしまう模様。ネット検索するとどれも問題なくくっついているみたいなのですが...ネット情報では「cyrus-sasl」の設定ミスではないかということで、いろいろと設定項目をチェックしてみたのですが、何をやっても変わらず。vpopmailに乗り換えることにしました。qmailは仕事でずっと使っていたので、こちらの方がまあオペレーションは慣れているのですが。コマンド一発でバーチャルメール発行も出来るし、わかりやすいと思うのでこちらで十分なのですが。ソースからのインストールになるのと、あまりバージョンアップされない点が引っかかるといえば引っかかりますけど...まあでも、とっとと終わらせないと、タダでさえ忙しいスケジュールなのに無駄な時間だけがどんどん過ぎていきますので、とりあえずはやっつけないとです。自分の鯖も、実はバーチャルドメインな設定をしていないため、いずれPostfixでやらなければならないので、まあ今回の経験は無駄にはなりません。こっちはちゃんと動いていて、cyrus-saslの影響でないことは分かっているため、あとはmysqlなDB認証を何とかすれば良いだけだし。結局何が悪かったのか、断定できていないのが気持ち悪いというのか...CentOS5.3(x86_64)で、しかもPostfixはmysql対応のために一度ビルドし直しているんですよね。この辺の影響もぬぐいきれない。レーザとインクジェットでどちらを取るか迷っているのですが、賞味期限の長いトナーの魅力がある反面高ランニングコストはどうしても考えてしまう。パンフとかもこまめに出したいと考えていたので、縁なしA3両面が出来るというのもなかなかのポイント。良さそうだったら、amazonでかなり安いため、帰ってきたら即ポチる予定です(笑)。■購入候補な複合機はこちらアマゾンのサーバでエラーが起こっているかもしれません。一度ページを再読み込みしてみてください。アマゾンのサーバでエラーが起こっているかもしれません。一度ページを再読み込みしてみてください。アマゾンのサーバでエラーが起こっているかもしれません。一度ページを再読み込みしてみてください。アマゾンのサーバでエラーが起こっているかもしれません。一度ページを再読み込みしてみてください。LibraryやCakePHPとは違う話題を久しぶりに。某所から頼まれてレンタルサーバの設定を一からやっているのですが、これがまた難題です。自分でない人がこれから管理することになるので、じゃあということでwebminを導入したのですが、確かに設定が楽になったところもあるのですが、メールサーバの設定だけは難しい!メールについてはいくつかの注文があり、これらをこなすのはなかなか難しく困っている状況です。既存のドメイン・メールアカウントで置き換えるため、配送を止めない作業が必要(サーバは別)というものなのですが、この中の「バーチャルドメイン」と「簡単なメールアドレス発行」の両立が大変に難しくて...バーチャルでなければ、UNIXユーザを作ってもらえば終わりなのですが、バーチャルでしかも名前がかぶるような場合だと、いちいち別名を考えるのも大変だし、ユーザが増えた場合に管理が難しくなるので、たぶんこのやり方だとダメだろうということでバーチャル向けな認証を使うしかないでしょう。qmail+vpopmailですと、バーチャルドメインでのメールアカウントの作成がコマンド一発で非常に簡単であり、導入したかったのですが、どうもwebminではvpopmailのモジュールがないらしくて管理が不可能。なるとpostfix+dovecotになるのですが、これだと「簡単なメールアドレス発行」は難しい。webminでバーチャルドメインなメール設定&運用の情報が何処にもなく、大変にしきいが高いです。時間無いのであんまり無駄な時間をかけたくないし...とりあえずpostfix+dovecotで模索していますが、どうなることやら。(木)【サーバ関連】SSLとりあえず動いたみたい昼間コーヒーを飲み過ぎたのか、眠れないので(汗)、少しSSL関連をいじってみることにしました。結論から言いますと、とりあえず動かすことに成功しました\(^O^)/。動かなかった原因なのですが...結局謎のまま。OSをバージョンアップしたので、その際にyumでSSL関連が全てアップグレードしているのと、証明書関連を再度作り直したのと、http-ssl.confを再度見直したのと、SSLのポートが開いていなかったのと...といろいろやってしまったので(^^;;;。ダウンロード可能な証明書を作っていなかったり、SSLを正規に購入した場合にどうするのかとか、いろいろ不明点はありますけど、とりあえず目的は達したようなので、これで次に進める感じです。あ、後は複数サブドメインで使えているかのチェックをしないと。大丈夫だとは思いますけど。これでやっと秘密サイトが作れます(謎)。(木)【お知らせ】サーバメンテナンス中断のお知らせ長時間サーバが停止してしまい申し訳ございませんでした。SSLをやる前に、ちょうど良い機会なのでOSのアップグレードまでやってしまおうかと思いついたのが運の尽きでした(大汗)。トラブルが発生しまして、PHPが起動しない事態に遭遇してしまいました。復旧しましたが、肝心のSSLはまだやっていない感じです(^^;;;。教訓:OSアップグレードをしたら、PHP関連でソース版を使っているモノは全て再コンパイルしましょう(特にDB)という感じですかね(T^T)。ちなみに、OSは2バージョン上げてしまい、レン鯖遠隔なので起動できなくなってしまったらどうしようとびくびくしながらやりました(過去にも2バージョン上げていますが、その時もびくびくしました)。途中依存パッケージが大量に出てびっくりしましたが、なんとか対処できてインストール失敗は免れました。どちらにしろ、長時間サーバを止めることになるのであんまりやりたくない作業ですね。いうわけで、明日明後日は仕事なのでやらないとは思いますが、まあ近日中にもう一回メンテナンスをします。