Subversionで管理しているWebサイトのデータをsitecopyを使って自動的に更新する方法

Vine Evo

Subversion,sitecopyによるWebサイトの自動更新

AGL's Gamers Evo / ProEvo / Vine Evo / Subversion,sitecopyによるWebサイトを自動更新

Subversionとsitecopyを使って、Webサイトを更新する方法


1. Webサイトの自動更新について

1.1 Webサイトの自動更新とは?

現在、WebサイトはSubversionにより管理されています。そのためSubversionを使うことにより最新のWebサイトの情報と取得できます。またsitecopyを使うことにより必要なファイルだけをWebサーバーに送信することができます。
これらの処理をまとめてシェルスクリプトにすることにより、コマンドを実行するだけでWebサイトを更新することができます。

Linuxではcronを使うことによりコマンドを自動実行することができます。
ここでは、cronとシェルスクリプトを使うことでWebサイトを自動更新する方法を説明します。

1.2 Subversionとは何か?

SubversionはCVSの後継のバージョン管理システムです。今回はWebサイトのデータをまとめて管理するために使用しています。
Subversionについて詳しいことは、Subversion hacksを参照してください。

1.3 sitecopyとは何か?

sitecopyは主にWebサイトを更新することを目的に開発されたファイル転送ツールです。
ftp,WebDAV,scpなどに対応しており、サーバにアップロードしたファイルの状態を記録しているので効率的なファイル転送が可能です。

sitecopyの使い方については、sitecopyを使うを参照してください。

2. 自動更新スクリプトを作成する

2.1 最新のWebサイトデータを取得する

Subversionを使ってWebサイトの情報を取得します。
次の手順で、Webサイト情報を取得します。

  1. 取得用ディレクトリを作成します。
    
    [atsushifx@agartha atsushifx]$ mkdir /tmp/.webupdate
    [atsushifx@agartha atsushifx]$ cd /tmp/.webupdate
    [atsushifx@agartha .webupdate]$ 
  2. Subversionからファイルを取得します。
    
    [atsushifx@agartha .webupdate]$ svn co svn://atsushifx@agartha/agl --password **** agl
    [atsushifx@agartha .webupdate]$ 

以上で、Webサイト情報の取得は完了です。
以後は、svn update でWebサイトの情報を更新できます。

2.2 sitecopyを使ってWebサイトを更新する

sitecopyを設定し、Webサイトを更新できるようにします。
次の手順で、sitecopyを設定します。

  1. .sitecopyrcに次の設定を追加します。
    ~/.sitecopyrc
    site aglabo
      server www.aglabo.com
      protocol ftp
      username atsushifx
      password ********
      remote /public_html/agl
      local /tmp/.webupdate/agl
      permissions all
      exclude ".svn*"
    
  2. ファイル情報ディレクトリ.sitecopyを作成します。
    
    [atsushifx@agartha atsushifx]$ mkdir .sitecopy
    [atsushifx@agartha atsushifx]$ chmod 0700 .sitecopy
    [atsushifx@agartha atsushifx]$ 
  3. .sitecopyに現在のWebサイトの情報を設定します。
    
    [atsushifx@agartha atsushifx]$ sitecopy -ai
    sitecopy: 初期化中 - サイト `aglabo' (on www.aglabo.com in /public_html/agl/)
    sitecopy: サーバーにファイルがないものとして記録しました。
    [atsushifx@agartha atsushifx]$ sitecopy -f aglabo
    sitecopy: ファイルの一覧取得中 - サイト `aglabo' (on www.aglabo.com in /public_html/agl/)
     .
     .
    ディレクトリ: seikaku/クリエイティブ診断結果.files/
    ディレクトリ: seikaku/自己アピール診断結果.files/
    ディレクトリ: seikaku/適職診断結果.files/
    File: profile.html - size 15021
    File: nagesen.html - size 3812
    File: index.html - size 8080
    File: contact.html - size 3582
    File: about.html - size 5603
    File: #google - size 249
     .
     .
    sitecopy: ファイルの一覧取得に成功しました。
  4. sitecopyを使ってWebサイトを更新します。
    
    [atsushifx@agartha atsushifx]$ sitecopy -u aglabo
    sitecopy: 更新中 - サイト `aglabo' (on www.aglabo.com in /public_html/agl/)
     .
     .
    sitecopy: 更新に成功しました。
    [atsushifx@agartha atsushifx]$ 

以上で、sitecopyによるWebサイトが更新できるようになります。
以後は、sitecopy -u aglaboでWebサイトを更新します。

2.3 スクリプトを作成する

2.1,2.2で最新のWebサイトを更新できるようになりました。
次は、スクリプトにしてコマンド一発で実行できるようにします。

  1. ~atsushifx/bin/下に次のファイルを作成します。
    ~/bin/aglaboupdate.cron
        1:#! /bin/sh
        2:PATH=/bin:/usr/bin:/usr/local/bin
        3:cd /tmp/.webupdate/agl
        4:svn update *
        5:sitecopy --update aglabo
    
  2. 作成したシェルスクリプトの実行ビットを立て、実行できるようにします。
    
    [atsushifx@agartha atsushifx]$ chmod +x ~/bin/aglaboupdate.cron
    [atsushifx@agartha atsushifx]$ 

以上でスクリプトの作成は終了です。以後、aglaboupdade.cronでWebサイトの更新ができます。

3. cronを使ってスクリプトを自動的に実行する

3.1 cronとはなにか?

cronはUNIXに付属している機能で、1時間毎・1日毎のように定期的にコマンドを実行する機能です。
cronはcrontabというファイルにcornを実行するための情報がかかれています。このファイルを変更することで いろいろなコマンドを自動的に実行することができます。

crontabはcrontabコマンドで編集することができます。crontabコマンドで設定した場合は、crontabを実行したユーザーとして指定したコマンドを実行します。
この機能によって、セキュリティ的に安全に自動的なコマンド実行が可能です。

次の手順で、Webサイト更新機能を設定します。

  1. crontabコマンドでcrontabを編集します。
    
    [atsushifx@agartha atsushifx]$ crontab -e
    
  2. crontabでスクリプトを設定します。
    今回は1日1回Webサイトを更新させるようにします。
    /tmp/crontab.5001
    	    1:04 04 * * * /home/atsushifx/bin/aglaboupdate.cron > /home/atsushufx/tmp/aglaboupdate.log
    

以上で、cronの設定は終了です。以後はSubversionに変更を登録すると、自動的にWebサイトに反映されるようになります。

AMAZON



$Revision: 66 $
$Date: 2007-05-09 07:55:14 +0900 (水, 09 5月 2007) $