github.comでphp-users.jpを管理するまでの作業ログ
- October 15th, 2008
- Posted in 開発ツール・技術
- Write comment
「ドメインとって放置かよ・・・」という声がちらほら聞こえていたphp-users.jpですが(すみません・・・)、なんとかgithub.comで管理できる準備ができました。
いろいろはまったのでメモ的に作業ログをエントリー。いつもながら青い人にお世話になりました。感謝感激。
では早速。
■ やりたかったこと
まずはざっくり図解。

↑ すまん、夜なんでテンション高め。
もちょっとわかりやすく言うと次のような感じ。
- 開発サーバーで適当にサイト開発。git addとかgit commitとか。
- 公開のめどがついたらgit pushでgithub.comへ。
- github.comには「Post-receiver URL」なる機能があり、Pushされたら自動的に指定したURLを叩いてくれる。
- そのURLにコマンドを仕込んでおき、本番サーバーへgithub.comから最新バージョンをpull。
つまり「pushすれば自動的にgithub.comにも本番サーバーへも反映される仕組み」ですね。オープンソース系の人には当たり前の仕組みですが、僕みたいにやったことがない人もいるだろうから、以下説明していきます。
■ 作業ログ
やったことを淡々と語るよ。
- github.comの設定
- 開発サーバーの準備
- Post-receive URLの設定
- 本番サーバーの設定
- php-users.jpのセキュリティポリシーを設定
- ping.php-users.jpを用意
- sudoの設定
- pingme.php
- テスト!
アカウントを取得してプロジェクトを作ります。プライベートなプロジェクトを作らない限り無料で使えます。超絶便利。

↑ こんな感じで。
ちなみにphp-users.jpのTreeはここね。
» taguchi’s php-users.jp at master — GitHub
VMwareでやろうと思いましたが、VMware自体が遅いので別途マシンを用意してローカル接続。192.168.0.3に設定します。
まずは雛形のサイトが必要なのでYUIを使って適当に。使ったサイトは以下。

» CSS Layouts: A collection of 168 Grid and CSS Layouts
作ったサイトはこちら。

↑ 適当にささっと。一応PHPカラーで。
あとは(というか一番重要な)gitのインストール。yumとかでinstallできないのでソースから。「たかやぶろぐ: とあるサーバに git を入れる」が参考になります。
そんでもって、作業ディレクトリをgit initします。
$ pwd /home/webadmin $ mkdir -p php-users.jp/public_html $ cd php-users.jp $ git init
つまり/home/webadmin/php-users.jp/以下をgitで管理します。
あとはちょこちょこっとgitの初期設定をば。
$ git config --global user.name "Gen Taguchi" $ git config --global user.email taguchi@gmail.com
ちなみにgitの設定一覧はこうすれば見れるので便利。
$ git config --list
あとは適当に作業してコミットとかします。
$ git add . $ git status $ git commit -m "initial commit"
次にgithub.comにpushできるように設定します。「Providing your SSH Key」を参考に、公開鍵をgithub.comに登録します。

↑ アカウント情報のここね。
あとはgitの設定をば。
$ git remote add origin git@github.com:taguchi/php-users.jp.git
これであとは次のようにすればmasterブランチがgithub.comにpushされます。
$ git push origin
なお、remoteの設定は、いつでも次のようにすれば見れますよ。
$ cat /home/webadmin/php-users.jp/.git/config
一度pushしてみてちゃんとコードが格納されるか確認しましょう。
さて次に「Post-receive URL」を設定します。これは「pushされたらこのURLをpingするよー」というURLです。ここのURLに「本番サーバーにgithub.comの内容を反映させる」というプログラムを仕込むことにします。

↑ プロジェクトの「Admin」メニューのこちらね。
ここでは説明のために、このURLを「http://ping.php-users.jp/pingme.php」とします(本当は違うけど)。その中身とかは後述。
なお、http://php-users.jp/pingme.phpという具合にphp-users.jp直下に置いてしまうと、これ自体を変更されてしまう恐れがあるので別のサブドメインにしてgithub.com管理外にしています。
さてここまで出来たら本番サーバーの設定です。基本的に開発環境と同じように設定しますが、次のような点を変更。
サイトにもよりますが、ちょっとPHPとか動かされると怖いのでRemoveHandlerとかRemoveTypeで.phpが動作しないように設定。これは開発サーバーもそのように設定してもいいのですけどね。
Post-recieve URL用にping.php-users.jpのVirtualHostを設定します。こちらはPHPが動く設定で。
今回Post-receive URLを動かすためにapacheにsudo権限を与えています。visudoを使って設定します。NOPASSWDでいっときましょう。
そんな感じで設定したあとにgitをインストールし、まずはgit cloneしておきましょう。
$ cd /home/webadmin/php-users.jp/ $ git clone git@github.com:taguchi/php-users.jp.git
これで現在のgithub.comの内容がコピーされたはずです。
さて次はpingme.phpの中身を作っていきます。/home/webadmin/ping.php-users.jp/public_html/pingme.phpに設置します。中身は次のような感じ。
<?php
system("sudo -u webadmin -H /bin/sh /home/webadmin/ping.php-users.jp/pull.sh 2>&1");
最後のうにょうにょはエラーメッセージを出力するためのものです。デバッグのときに便利っす。ちなみにぶっちゃけよくわかっていません。「シェルのリダイレクトを「こわいものなし」というくらい完全に理解しよう – 檜山正幸のキマイラ飼育記」を参考に。あとで勉強する。
ちなみにここではまりまくったのはsudoの「-H」オプション。これをやらないと実行ディレクトリがそのユーザーのに変わってくれません・・・。青い人のおかげでわかりました。これがわかったときはうれしかった。
なお、ここでやっているのはpull.shの呼び出しです。pull.shの中身は以下のとおり。
#!/bin/sh cd /home/webadmin/php-users.jp/ /usr/local/bin/git pull origin master
cdしてpullしているだけですな。
さてここまで出来たら開発サーバの方で変更を加え、pushしてみます。見事github.comと本番サーバー(ちょっと時間かかるっす)に反映されたらOKです。
ふー、ここまでで2日かかっちゃいましたよ。でも勉強になりました。あとはサイト管理に協力していただける人にpushの権利を差し上げるだけで楽々管理できますね。今のところphp-users.jpの中身はとてつもなく適当なので・・・みんなで作っていきましょうね。
なお、今回の作業でとってもお世話になったツール&リンクを最後にご紹介。
■ おすすめツール
「へたれwebディレクターの覚え書き」で紹介されているこれらのツールが超絶便利でした。なんで今まで導入していなかったのか。
- Hosts File Manager
- Firefox DNS Flusher 1.3
Hostsの切り替えを管理するフリーソフト。すっごく便利。

FirefoxのDNSをフラッシュ。開発サーバーと本番サーバーの切り替えをhostsでやったあとに一発でIPアドレスを変更できます。

■ お役立ちリンク
おもにgit系。最初にここらへんを読んでおくと理解が早いかと。
- git(1)
- Git User’s Manual (for version 1.5.3 or newer)
- gittutorial(7)
- GitHubをRemote Repoとして、MacにインストールしたGitから使ってみる:Goodpic
- Git Cheat Sheet — GitHub Guides — GitHub
- せっかちな人のための git 入門 – git をインストールし、共同で開発できる環境を整えるまで : 僕は発展途上技術者
コマンドリファレンス的な。
公式サイトの詳細なマニュアル。
公式サイトのチュートリアル。
金子さんのgit体験記。
gitの実践的なテクニックが満載。githubのヘルプですね。使い込んでくるとここがすごく便利。
Junyさんの作業ログ。
ふー、以上ですかね。というわけでphp-users.jpを一緒に手伝ってもいいよー、というワンダフルな方は是非 webmaster@100shiki.com までご連絡くださいな。
■ 関連記事


No comments yet.