サクラインターネットでSVNでソース管理してますが、

SVNにコミットしたソースを、シェルかツールなどを1回実行すると、
SVNと本番ディレクトリのファイルを比較して、
新しければファイルを上書きする。ということがしたいです。
ツールなど、何か便利な方法があれば教えて下さい。
WEBアプリケーションでPHPで作ります。
PHPファイルやSmartyテンプレート、HTMLファイル、CSS、画像等をセットしたいです。
JAVAで使ってるANTのようなものが、PHPであるのか、自作しないといけないのか不明です。
よろしくお願い致します。

回答の条件
  • 1人10回まで
  • 登録:
  • 終了:2007/12/18 00:35:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:y-kawaz No.1

回答回数1422ベストアンサー獲得回数226

ポイント27pt

SVNで管理しているなら、本番サーバ上にチェックアウトして更新がある度に svn up を実行すれば良いのではないでしょうか?

開発は別ディレクトリかもしくはローカル環境にチェックアウトしてそこで行い、修正したらしたらSVNにcommitして、サーバ上で svn up をして本番に反映させるという手順です。

id:nemutaiyo

そうか! そんな簡単にできるのですね!

長い間うんうん考えていましたが、全く気づきませんでした。

ありがとうございます。

=================

と、試してみて気づいたのですが、

svn up するには、.svnディレクトリが必要(つまり事前にチェックアウトが必要)ですよね。

本番環境ではやはりそれはまずいので、

.svnが無い状態(SVN関連のファイルが無い状態)にしたいです。

そんなことできますか?

2007/12/12 00:30:56
id:toshiwo No.2

回答回数2ベストアンサー獲得回数0

ポイント27pt

Capistrano というデプロイツールを使ってみてはどうでしょうか?

http://www.capify.org/


このツールは、簡単に言うと下記のことをコマンド1つでほぼ全自動で行えるようになるツールです。

  • SSHで本番サーバへログイン
  • svn checkout(またはsvn export)を行ってソースコードの更新
  • 必要なシンボリックリンクの作成や不要なファイルの削除などの必要に応じてカスタマイズした処理
  • apacheなどのWebサーバの再起動の処理
  • Databaseへの更新の処理

よくRuby on Railsと一緒に使われることが多く、Capistrano自体もRubyで作られていますが、希望されているようなPHPで作られたWebアプリケーションの更新処理を行うくらいであれば、少し設定をカスタマイズしてやれば十分可能です。


あとは、すでに書いてあるようにCapistranoはRubyで出来ているため、手元のCapistranoを実行するサーバ(恐らくSVNリポジトリがあるサーバ)にRubyをインストールしたりする必要はあります。

ですが、Capistranoを使うことで手間のかかる更新処理をほぼ自動化できてしまうメリットに比べればRubyのインストールとCapistranoの設定にかかる手間はすぐにでも取り返せると思います。

id:nemutaiyo

toshiwoさんありがとうございます。

Capistranoは初めて知りました。

紹介頂いたサイトやGoogleでいろいろ調べて見ましたが、便利そうです。が、今の私にはレベルが高そうなので、勉強してみて、運用上必要な機能の使い方を調べます。

2007/12/11 23:40:56
id:y-kawaz No.3

回答回数1422ベストアンサー獲得回数226

ポイント26pt

1の回答の補足です。

確かにサーバ上にチェックアウトすると .svn ディレクトリが公開状態になってしまいますが、以下の内容の .htaccess をトップディレクトリに一つ置くだけで .svn ディレクトリにアクセスを禁止することが出来ます。

RewriteEngine on
RewriteRule (^|/)\.svn - [F]

この .htaccess も SVN 上に commit しておくと便利です。

id:nemutaiyo

.htaccessの設定まで書いて頂きありがとうございます。

実際に試してみて、できました。(SVN co するとき権限も変わらないので助かりました)

ありがとうございます。これで運用していきます。

2007/12/12 23:42:32

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません