« 無料SSL証明書(Let's Encrypt)でVirtualHost | メイン | フックでプル&バックアップを自動化 »

Git

サーバー上のGitでWEBコンテンツリリース

(A)WEBサーバ   (B)開発/検証/バックアップ機
(1) /opt/git/◆◆◆.git      
(2) ★★★
  <<-----ssh
ssh----->>
 
(3) △△△◆◆◆.git
(4) ★★★
   
★★★:作業ディレクトリ(絶対パスが安全)
◆◆◆:リポジトリ名(~.git)
●(A)でマスター用のベアリポジトリを置く場所を本家に習って /opt/git に。
$ sudo mkdir /opt/git
$ sudo chown admin:wheel /opt/git
$ chmod g+w /opt/git
●(A)でマスター用のベアリポジトリを作成(作業ディレクトリの設定が楽)。
$ mkdir /opt/git/◆◆◆.git
$ git --git-dir=/opt/git/◆◆◆.git init --bare
---(1)
●(B)で マスター用ベアリポジトリから 作業ディレクトリを作成。
$ git clone USER@HOST:/opt/git/◆◆◆.git ★★★
(★★★を省略するとカレントディレクトリに◆◆◆ができる) ---(2)
●(B)で バックアップ用ベアリポジトリを作る。
$ git clone --mirror USER@HOST:/opt/git/◆◆◆.git △△△◆◆◆.git
△△△:(B)内の /backup/ や /opt/git/ など ---(3)
●(A)で作業ディレクトリを作る。
$ git clone /opt/git/◆◆◆.git ★★★
(4)の★★★がWEBのドキュメントルートの場合 /etc/httpd/conf/httpd.conf で
.git で始まるファイルへのアクセスを禁止
.git/ フォルダ以下のファイル・ディレクトリへのアクセスを禁止
が必要 ---(4)
●(B)でバックアップする場合
$ git --git-dir=△△△◆◆◆.git fetch --all
cron などで定期的にバックアップする場合、最後のバックアップから障害時までの更新データを失うので注意。
●(A)で(3)へバックアップする場合
$ git --git-dir=/opt/git/◆◆◆.git push --mirror USER@HOST:△△△◆◆◆.git
障害時のリカバリは バックアップ用ベアリポジトリから clone。
$ git clone USER@HOST:△△△◆◆◆.git ★★★

以降、(B)の★★★で
$ cd ★★★
$ git pull
コンテンツを設置しでベアリポジトリを更新
$ git add .
$ git commit
$ git push
(A)でリリースするには
$ git --git-dir=★★★/.git pull


git version 1.7.1 / CentOS6.9

トラックバック

このエントリーのトラックバックURL:
https://www.remix.asia/cgi/mt/mt-tb.cgi/7685

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)