gitoliteでリポジトリの追加してWEBサーバーに反映

gitoliteでリポジトリの追加してWEBサーバーに反映させたい

まず、リポジトリの追加

gitolite-adminリポジトリをgit cloneして
vim gitolite-admin/conf/gitolite.conf

repo (追加するリポジトリ)
RW+ = @all

を追記
@allだと全ユーザー、読み書きが可能になります

git commit -am ‘add new reposiry’
git push
でgitoliteサーバーにリポジトリが作成されます

WEBサーバーにあがってるソースを公開フォルダからごっそりローカルに落とします
scp -r user@server:/var/www/(git管理したいフォルダ) (好きなフォルダ名: src)

cd src
git init
git commit -am ‘prepare’

リモートリポジトリを登録します
git remote add origin ssh://user@gitserver/(追加するリポジトリ).git
git push origin master
でサーバーのリポジトリにソースが上がります

gitoliteのフォルダは、WEBの公開フォルダではないので、
push されたらWEBの公開フォルダへ反映するようフックスクリプトを用意します。

gitoliteサーバーへログインして
su – (gitlite用ユーザー)
cd ~/repositories/(追加したリポジトリ).git/hooks

vim post-receive (なければつくります)

#!/bin/sh
GIT_WORK_TREE=(WEBの公開フォルダ) git checkout -f

を保存
実行権限をつけます
chmod a+x post-receive

ローカルにある今回つくったリポジトリで何か修正して
git commit -am ‘commit’
git push origin master
でWEBの公開フォルダにも反映されれば成功です

が、いくつかハマりました。

1.WEBの公開フォルダ上の権限が足りない
とりあえず
chmod o+w .
chmod o+w *
chmod o+x .
chmod o+x *
とかして応急処置

2. git pushするとWEBの公開フォルダ上の権限が勝手に400とか変わる
gitoliteサーバーへログイン、
su – (gitlite用ユーザー)
vim .gitlite.rc

UMASK => 0077,

UMASK => 0022,
に変更

とりあえずできました

centosでgitoliteを導入

gitサーバーとして使いたいのでgitoliteを入れてみる

<環境>
centos

rootでログイン
yum install gitolite

cat /etc/passwd
でgitoliteユーザーができてることを確認

ホームディレクトリは/var/lib/gitolite

普段使ってる公開鍵を用意しコピーしておきます
cp (普段使ってる公開鍵) /var/lib/gitolite/

権限を変えておきます
chmod 600 /home/gitolite/(鍵の名前)

gitoliteユーザーに切り替え
su – gitolite
gl-setup /var/lib/gitolite/(鍵の名前)

で準備ができました

違うパソコンからssh経由でgit cloneしてみます
git clone ssh://gitserver/testing

うまくいけば成功

fatal: destination path ‘testing’ already exists and is not an empty directory.
なんてエラーがでた場合は、
サーバーでの.ssh/authorized_keysの中を確認

# gitolite start
command=”~

の記載の前に、なにかあるときは邪魔してログインできないようで
消したらできました
もともとgitoliteユーザーがいたときのものだと思います

開発者用ユーザーを追加します
git clone ssh://gitserver/gitolite-admin

gitolite-admin/keydir
に開発者用の公開鍵[gitolitedev.pub]を入れます

git add gitolitedev.pub
git commit -m “add dev key”
git push

うまくいけば
git clone ssh://gitserver/testing
とれればできた

centosでsshユーザーを追加する

centosでsshユーザー[testuser]を追加してみます

<環境>
centos
sshdは用意済

まずcentosにログイン

root になります
sudo -s

useradd testuser
passwd testuser
(パスワードを2回打ち込む)

su – testuser
でログインできることを確認

sshでログインできるようにします
今回は鍵を用意
ssh-keygen
(パスワードを2回打ち込む)

権限を変えておきます
一旦、rootになります
exit
rootになったら
cd /home/testuser/
chmod 700 testuser
cd .ssh
chmod 600 *

testuserで入り直します
su – testuser

sshで入れるか確認
ssh localhost
でログイン確認
エラー発生
Permission denied (publickey,gssapi-keyex,gssapi-with-mic)

authorized_keysを追加
cat id_rsa.pub > authorized_keys

もう一度
ssh localhost
で成功

秘密鍵[id_rsa]を違うPCへコピーして
試しにログインできたら終わり

rsyncでsshに鍵指定する

rsyncでsshを使うときに鍵指定するメモ

rsync -av -e “ssh -i (鍵)” user@example.com:(コピー元) (コピー先)

ダブルクォーテーションで囲えばいいみたい