HTTPD公開コンテンツをgitで管理してみる

そろそろ適当管理な自宅サーバもできるだけコンテンツをgit管理にしておこう、と思いゴニョゴニョと手を動かし始めてしまった日曜夜の作業メモ。

まずgitを入れる。CentOSの場合公式レポジトリにgitがないので、rpmforgeで追加レポジトリからgitを入れる必要がある。私の場合すでに過去に入れた rpmforge-release-0.3.6-1.el5.rf があったんで詳しいことは忘れたけど、確かこのへんに書いてあるようなことをして rpm 経由で rpmforgeの追加レポジトリを入れたと思う。入れた後は、/etc/yum.repos.d/rpmforge.repo の「enabled = 0」を「enabled = 1」にして準備完了。あとはいつものように「yum install git」とかすれば git が入ってくれます。個人的に公式レポジトリ以外はあんま使いたくないので、用が終わったら「enabled = 0」としている。ただ、あまりyumのレポジトリ管理を汚したくない人は、gitをソースコードから入れた方がいいかもしれない。

次にgitを使ってみる。gitは、CVSのようなディレクトリごとに管理するのとは違いレポジトリ化したディレクトリ以下まるごと管理できるので、レポジトリにしたいディレクトリにいって「$ git init; git add . ; git commit」すればほぼ完了。またsubversionとかのようなサーバを必ずしも必要としないので、とりあえずはレポジトリをローカルにおいとけばいいと思う。「git init」したディレクトリに「.git/」というディレクトリができてこれがレポジトリになるので、この「.git」さえバックアップしとけばOKになる。

いきなりgit commitしようとしたら実は怒られる。そのときはこういうページ参考に自分の設定を作ろう。慣れてる人は、~/.gitconfig を直接編集した方が手っ取り早いかもしれない。

$ git config --global user.name rarul
$ git config --global user.email rarul@rarul.com
$ git config --global color.ui auto

gitに全部登録したいからといって、あんまり登録するのにはふさわしくないファイルもあるかもしれない。そのときは .gitignore というファイルを作ってそこに登録したくないファイルを書きつつ、このファイルをgit commitしてしまえばいい。よくある.gitignoreの例

*~
\#*

git commitしてから.gitignoreを用意すると、.gitignoreに書かれてるファイルのgit操作ができなくてgit deleteもできなくなることが時々ある。どうするのが正しいのかよく知らないけど、個人的には.gitignoreファイルを一時的にmvしたりして回避してる。

最後に、Apacheなどで公開してるコンテンツの下に .git を残したままだと、リモートから HTTP ごしに gitレポジトリ丸ごととれちゃいます。これはまずいので、Apacheで「.git」は見えないようにする必要がある。httpd.confにはたいてい「^\.ht」を無視する設定があるので、それを参考に追加で書く。

<Files ~ "^\.git">
Deny from all
</Files>
<Directorymatch "^/.*/\.git+/">
Deny from all
</Directorymatch>

.gitディレクトリだけでなく.gitignoreファイルも場合によっちゃ見えると困るので設定。ちなみに上記だと、もしアクセスがあったときに HTTP STATUS 403 が返るので「何か設定している」ということはバレてしまう。それすらイヤな場合は、今のところはmod_rewriteとか使ってうまくごまかすしかなさげっぽい。

このブログ記事について

このページは、らるるが2013年7月29日 00:56に書いたブログ記事です。

ひとつ前のブログ記事は「Effective C++ は必ず読んどこう」です。

次のブログ記事は「画像系の短縮URLの雑記」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ

ウェブページ

Powered by Movable Type 7.9.0