ローカル環境で Apache+Subversion(+Dreamwever)

作っていたデータをミスって上書きして消してしまったり、1 日分の作業とばして涙目になったりが度々あったので、ローカルに Subversion を入れて使うようになりました。この記事は以前書いておいた個人メモの内容なのですが、どうせなので公開。

ローカルで Subversion を使いたいだけなら、TortoiseSVN だけ入れれば大丈夫です。しかし Dreamweaver と連携させるには Apache と絡ませないと無理そうだったので、私はAphaceh + Subversion で使ってます。

コマンドでリポジトリを作って~という方法もありますが、私は TortoiseSVN でリポジトリ作成などはしてしまってます。

Subversion のインストール

  1. Subversion for Windows | Free software downloads at SourceForge.net からダウンロード。Dreamweaver CS5 と連携させるため、Subversion のバージョンは 1.6.6 を選択。
  2. インストール途中にある、”Install and configure Subversion modules”オプションをチェック。これで Apache の httpd.conf に必要なことが設定されることもある(なんだか完璧ではないような)

Apache の設定

Subversion インストール時に設定がされている場合もありますが、httpd.conf(大体 c:\program files\apache group\apache2\conf\httpd.conf にある)を確認。

LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so

上記内容の最初に「#」が付いている(=コメントアウトされている)場合、「#」を消しておく。
さらに以下の内容を追加。

LoadModule dav_svn_module mod_dav_svn.so
LoadModule authz_svn_module mod_authz_svn.so

この追加した Module が読み込めない場合、以下の様にフルパスで書けば OK(最初からフルパスで書いてもいいかも)。

LoadModule dav_svn_module "C:/Program Files/Subversion/bin/mod_dav_svn.so"
LoadModule authz_svn_module "C:/Program Files/Subversion/bin/mod_authz_svn.so"

ここで一度 Aphache を再起動。動くか確認。
動かない場合、C:\Program Files\Subversion\bin\libdb42.dll を、C:\Program Files\Apache Group\Apache2\bin にコピー。

httpd.conf の最後に以下のように書いておく。
※ここでは F:/work/svn_apache をリポジトリの場所としてます。

<Location /svn>
    DAV svn
    SVNParentPath "F:/work/svn_apache"
</Location>

ブラウザからは、http://localhost/svn/ でアクセスできます。
F:/work/svn_apache の中にhoge というリポジトリを作った場合には、http://localhost/svn/hoge で。

TortoiseSVN

  1. TortoiseSVN 本体、LanguagePack を落として、両方インストールした後 PC 再起動。
  2. デスクトップ等を右クリック、TortoiseSVN→Settings…→Languageを「日本語」に。

リポジトリ作成

  1. リポジトリを作りたい場所で右クリック→TortoiseSVN→ここにリポジトリを作成
  2. リポジトリに入れたいデータのあるフォルダ(ここでは hoge とする)を右クリック→TortoiseSVN→インポートを実行
  3. hoge フォルダを、念のためリネームしてバックアップ。hoge_bk などにしておく
  4. 新しく hoge フォルダを作成して右クリック→SVN チェックアウト。これで中に元々あったファイル等が戻る

Subversion で管理してるファイルを書き出す

Subversion で管理していると「.svn」というフォルダが出来てしまいます。
サーバにアップする時や、データを誰かに送る際には Subversion からエクスポートをします。

  1. エクスポート用のフォルダを作成して右クリック→TortoiseSVN→エクスポート

Dreamweaver から Subversion を使う時の注意

重要: Dreamweaver CS4 では、Subversion 1.4.5 クライアントライブラリを使用します。Subversion 1.4.5 より後のバージョンのクライアントライブラリは、下位互換性がありません。サードパーティのクライアントアプリケーション (TortoiseSVN など) を更新して Subversion 1.5 以降で使用する場合、更新された Subversion アプリケーションによってローカル Subversion のメタデータが更新され、Dreamweaver は Subversion と通信できなくなります。この問題には、Subversion サーバーの更新は影響しません。サーバーの更新は下位互換性があります。この問題の詳細については、www.adobe.com/go/dw_svn_jp を参照してください。

Adobe Dreamweaver CS4 * Subversion (SVN) によるファイルの取得とチェックアウトより引用』

CS4 で使おうとすると、Subversion 1.4.5 クライアントライブラリでないとエラーがでます。
SVN 接続時に「Subversion の統合を使用してファイルを更新できません」エラーが発生する(Dreamweaver CS4)に、Subversion 1.5 以降でも利用できるようにする Subversion 変換スクリプトが配布されていますが、私はこれが上手く動きませんでした。Subversion 変換スクリプトを動かす場合には、Python を入れる必要もあるようです。

CS5 は Subversion 1.6.6 クライアントライブラリを利用するということだったので、私は 1.6.6 を入れています。

重要: Dreamweaver CS5 では、Subversion 1.6.6 クライアントライブラリを使用します。Subversion 1.4.5 より後のバージョンのクライアントライブラリは、下位互換性がありません。サードパーティのクライアントアプリケーション(TortoiseSVN など)を更新して Subversion の以降のバージョンで使用する場合、更新された Subversion アプリケーションによってローカル Subversion のメタデータが更新され、Dreamweaver は Subversion と通信できなくなります。この問題には、Subversion サーバーの更新は影響しません。サーバーの更新は下位互換性があります。Subversion 1.7 以降で動作するサードパーティのクライアントアプリケーションにアップグレードする場合は、Dreamweaver で再び Subversion を使用するには、先にアドビ システムズ社で更新を確認する必要があります。この問題について詳しくは、www.adobe.com/go/dw_svn_jp を参照してください。

Adobe Dreamweaver CS5 * Subversion(SVN)によるファイルの取得とチェックアウトより引用』

ちなみに、普段は Dreamweaver からコミットなどを行っています。どうも Dreamweaver からのコミットと TortoiseSVN からのコミットなどを併用しようとするとエラーがでることが多いように感じているので、基本的にはリポジトリを作成するのとエクスポートするときだけ TortoiseSVN を利用し、それ以外は Dreamweaver としています。

Dreamweaver での設定

サイト設定→バージョンコントロール
・アクセス「localhost」
・プロトコル「HTTP」
・サーバーアドレス「localhost」
・リポジトリパス「/svn/hoge」

表示確認用ローカルサーバの Virtual Hosts ( Apache ) 設定

ローカルサーバー構築 ( Apache, Perl, PHP, MySQL ) 」で、ローカルサーバをたてる方法を書きましたが、今回はその補足として。実際に使う場合に便利な Virtual Hosts の設定。色々試して、現在こんな形でやっています。

httpd.conf

C:\Program Files\Apache Software Foundation\Apache2.2\conf 内
httpd.conf

#Listen 12.34.56.78:80
Listen 80
Listen 8080
Listen 8000

8080 と 8000 も使えるように。

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

Vitual hosts の設定ファイル httpd-vhosts.conf を読み込むように。

httpd-vhosts.conf

C:\Program Files\Apache Software Foundation\Apache2.2\conf\extra 内
httpd-vhosts.conf

#
# Use name-based virtual hosting.
#
NameVirtualHost *:8080
NameVirtualHost *:8000
<VirtualHost *:8080>
    ServerAdmin test@test.com
    DocumentRoot "C:\work\UserVirtual8080\htdocs"
    ServerName localhost:8080
    AddHandler cgi-script .cgi .pl

    <Directory "C:\work\UserVirtual8080\htdocs">
        Options Includes ExecCGI FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
    ErrorLog "logs/localhost-error.log"
    CustomLog "logs/localhost-access.log" common
</VirtualHost>

<VirtualHost *:8000>
    ServerAdmin test@test.com
    DocumentRoot "C:\work\UserVirtual8000"
    ServerName localhost:8000
    AddHandler cgi-script .cgi .pl

    <Directory "C:\work\UserVirtual8000">
        Options Includes ExecCGI FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
    ErrorLog "logs/localhost-error.log"
    CustomLog "logs/localhost-access.log" common
</VirtualHost>

UserVirtual8000 内の任意名のディレクトリ(例、hoge)が、http://localhost:8000/hoge/ でみれて、UserVirtual8080 内の htdocs が http://localhost:8080/ でみれるように。

本番環境にあわせ、普段は 8080 のほうを利用。
本番環境で http://xxx.com/hoge/ のような URL がトップの場合は、8000 のほうを利用。

8080 内の htdocs は、作るサイトが変わるたびにそこに html 等のコーディングデータを入れ替えておいてもいいですが、私の場合、プロジェクトごとにフォルダは掘っておきたいなという気持ちがあるので以下のようにしています。

「プロジェクト名ディレクトリ」の中に「htdocs」ディレクトリを作成(例:C:\work\プロジェクトA\htdocs)。その htdocs のジャンクションを、UserVirtual8000 内に作成。

ジャンクション作成には、以下のリンク作成シェル拡張を使ってます。楽です。

例でいうと、C:\work\プロジェクトA 内の htdocs を右クリックして C:\work\UserVirtual8000 内にドラッグアンドドロップすると、右クリックなのでメニューがでます。その中の、「ディレクトリジャンクションをここに作成」を選択。

これで、C:\work\プロジェクトA\htdocs と、C:\work\UserVirtual8000\htdocs が同じ内容になり、C:\work\プロジェクトA\htdocs 内を変更すれば C:\work\UserVirtual8000\htdocs 内も変更されます。ジャンクションについてはここでは説明しませんが、実体丸ごとのリンク、みたいなイメージです。

参考:WindowsXPにおけるジャンクション作成方法 – GeekなNooblog

こうすることで、プロジェクトを切り替えるたびにジャンクションを変えるだけで済みます。httpd-vhosts.conf を書き換えるより楽なのでこうしてます。

「もっとこうしたほうが良いよ!」とか「こういう設定オススメだよ!」とか「こういう方法もいいよ!」等あれば、是非教えてください :)

XAMPP が起動しない?

OS を入れ直したので、XAMPP も入れ直しました。
※XAMPPについては、「簡単にローカルサーバー環境を作れる XAMPP」をどうぞ。

しかし今回はちょっと躓いてしまいました。なぜか、Apache が起動しない…。
なぜだかさっぱり分からなくてインストールしなおしてみましたがダメ。

同じ症状の人はいないかなとグーグル先生で調べて判明。Skype のせいでした。
Skype はポート 80 を使うという設定にデフォルトでチェックがついており、このため Apache が起動できなかったようです。

Skype > ツール > 設定 > 接続

skype

ここで、「上記のポートに代わり、ポート80を使用」のチェックを外してあげると起動できました。
XAPMPP はバージョンがあがって、さらに使いやすくなっていました。おすすめですよ~ :mrgreen:

簡単にローカルサーバー環境を作れる XAMPP

Perl や PHP を自宅の PC で動作確認したい場合、Apache や AN-HTTPD あたりのフリーのサーバーを入れて、ActivePerl や PHP などをそれぞれ入れて、ひとつひとつ設定して…ちょっと面倒した。
動作確認したいだけなのに、設定するために該当ファイル開いて書き換えて、あっちも直してこっちも直して~と、ローカルサーバー環境を整えるのって、多少なりとも時間がかかっちゃうもんでした。

そんな手間のかかるローカルサーバー構築を、とても簡単に行えるソフトが apache friends の配布しているフリーソフトウェア「XAMPP」です。
前は手作業で 1 つ 1 つ設定してたのですが、XAMPP の存在を知ってからはこれを使ってます。
便利ですよ~楽チン :D これがフリーでお金がかからないのだから、感謝。

データベースなども一気に入れられるので、WordPress をローカルテストしたい方にもお勧めです。
私の場合、ローカル環境でプログラムテストをするほか、データベースの移行作業のいい練習の場となりました。
“簡単にローカルサーバー環境を作れる XAMPP” の続きを読む