github.comでphp-users.jpを管理するまでの作業ログ

SPONSORED LINK

Pocket

「ドメインとって放置かよ・・・」という声がちらほら聞こえていたphp-users.jpですが(すみません・・・)、なんとかgithub.comで管理できる準備ができました。

いろいろはまったのでメモ的に作業ログをエントリー。いつもながら青い人にお世話になりました。感謝感激。

では早速。

■ やりたかったこと

まずはざっくり図解。

git_goal.gif

↑ すまん、夜なんでテンション高め。

もちょっとわかりやすく言うと次のような感じ。

  • 開発サーバーで適当にサイト開発。git addとかgit commitとか。
  • 公開のめどがついたらgit pushでgithub.comへ。
  • github.comには「Post-receiver URL」なる機能があり、Pushされたら自動的に指定したURLを叩いてくれる。
  • そのURLにコマンドを仕込んでおき、本番サーバーへgithub.comから最新バージョンをpull。

つまり「pushすれば自動的にgithub.comにも本番サーバーへも反映される仕組み」ですね。オープンソース系の人には当たり前の仕組みですが、僕みたいにやったことがない人もいるだろうから、以下説明していきます。

■ 作業ログ

やったことを淡々と語るよ。

  1. github.comの設定
  2. アカウントを取得してプロジェクトを作ります。プライベートなプロジェクトを作らない限り無料で使えます。超絶便利。

    git-php.gif

    ↑ こんな感じで。

    ちなみにphp-users.jpのTreeはここね。

    » taguchi’s php-users.jp at master — GitHub

  3. 開発サーバーの準備
  4. VMwareでやろうと思いましたが、VMware自体が遅いので別途マシンを用意してローカル接続。192.168.0.3に設定します。

    まずは雛形のサイトが必要なのでYUIを使って適当に。使ったサイトは以下。

    css_layout.gif

    » CSS Layouts: A collection of 168 Grid and CSS Layouts

    作ったサイトはこちら。

    php-users.gif

    ↑ 適当にささっと。一応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に登録します。

    ssh_key.gif

    ↑ アカウント情報のここね。

    あとは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してみてちゃんとコードが格納されるか確認しましょう。

  5. Post-receive URLの設定
  6. さて次に「Post-receive URL」を設定します。これは「pushされたらこのURLをpingするよー」というURLです。ここのURLに「本番サーバーにgithub.comの内容を反映させる」というプログラムを仕込むことにします。

    github-ping.gif

    ↑ プロジェクトの「Admin」メニューのこちらね。

    ここでは説明のために、このURLを「http://ping.php-users.jp/pingme.php」とします(本当は違うけど)。その中身とかは後述。

    なお、http://php-users.jp/pingme.phpという具合にphp-users.jp直下に置いてしまうと、これ自体を変更されてしまう恐れがあるので別のサブドメインにしてgithub.com管理外にしています。

  7. 本番サーバーの設定
  8. さてここまで出来たら本番サーバーの設定です。基本的に開発環境と同じように設定しますが、次のような点を変更。

    • php-users.jpのセキュリティポリシーを設定
    • サイトにもよりますが、ちょっとPHPとか動かされると怖いのでRemoveHandlerとかRemoveTypeで.phpが動作しないように設定。これは開発サーバーもそのように設定してもいいのですけどね。

    • ping.php-users.jpを用意
    • Post-recieve URL用にping.php-users.jpのVirtualHostを設定します。こちらはPHPが動く設定で。

    • sudoの設定
    • 今回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の内容がコピーされたはずです。

  9. pingme.php
  10. さて次は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しているだけですな。

  11. テスト!
  12. さてここまで出来たら開発サーバの方で変更を加え、pushしてみます。見事github.comと本番サーバー(ちょっと時間かかるっす)に反映されたらOKです。

ふー、ここまでで2日かかっちゃいましたよ。でも勉強になりました。あとはサイト管理に協力していただける人にpushの権利を差し上げるだけで楽々管理できますね。今のところphp-users.jpの中身はとてつもなく適当なので・・・みんなで作っていきましょうね。

なお、今回の作業でとってもお世話になったツール&リンクを最後にご紹介。

■ おすすめツール

へたれwebディレクターの覚え書き」で紹介されているこれらのツールが超絶便利でした。なんで今まで導入していなかったのか。

  • Hosts File Manager
  • Hostsの切り替えを管理するフリーソフト。すっごく便利。

    hosts.gif

    » Hosts File Manager

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

    dns_flush.gif

    » Firefox DNS Flusher :: Firefox Add-ons

■ お役立ちリンク

おもにgit系。最初にここらへんを読んでおくと理解が早いかと。

ふー、以上ですかね。というわけでphp-users.jpを一緒に手伝ってもいいよー、というワンダフルな方は是非 webmaster@100shiki.com までご連絡くださいな。

■ 関連記事

ツイッターもやっています!

SPONSORED LINK

  1. No comments yet.