AWS上でいろいろと検証をしていく際、複数人とソースを共有したいのでGitサーバを構築してみました。
githubなどのサービスを使うことができない場合など、自身でgitサーバ構築が必要になったときに参考にしてもらえれば幸いです。
※EC2上で構築した手順になりますが、普通のLinux上でも同じように構築可能な手順となっています。
サーバ準備
今回はAWSのEC2インスタンスを利用します。
大したスペックは必要ないので、t2.microで問題なしです。
インスタンスができたらsshでつなげるように設定しておきます。
構築手順
インストール
sshでログインしたら、まずはrootになります。
sudo su -
続いてgitおよびhttpdのインストールです。
yum -y install git httpd
リポジトリ作成
次はリポジトリを作成します。
ここでは/var/lib/git配下に作成します。
mkdir /var/lib/git cd /var/lib/git mkdir test.git cd test.git git init --bare --shared=true
サーバ用の設定をします。
git update-server-info git config http.receivepack true mv hooks/post-update.sample hooks/post-update chown -R apache.apache /var/lib/git
httpd設定
httpdの設定ファイルを作成します。
今回はconf.d配下にgit.confという名称で作成しました。
vi /etc/httpd/conf.d/git.conf
git.confの中身は以下のような感じです。
SetEnv GIT_PROJECT_ROOT /var/lib/git SetEnv GIT_HTTP_EXPORT_ALL ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/ <LocationMatch "^/git/"> Options ExecCGI AuthName "Git for HTTP" AuthType Basic AuthUserFile /etc/httpd/conf/.htpasswd Require valid-user </LocationMatch>
ユーザ追加
先ほどの手順でgit.confの中に以下のような記載をしました。これによりベーシック認証が有効になっています。
AuthType Basic AuthUserFile /etc/httpd/conf/.htpasswd
ユーザを追加する際はhtpasswdにより追加します。
初回時はファイルがないため、作成オプションの-cをつけて作成しましょう。
htpasswd -c /etc/httpd/conf/.htpasswd username1 # 初回 htpasswd /etc/httpd/conf/.htpasswd username2 # 2回目以降
起動および自動起動設定
設定が完了したらhttpdを起動します。
systemctl start httpd
OS再起動時にも起動するように自動起動も設定しておきます。
systemctl enable httpd
動作確認
サーバ上で正常に動いているかを確認します。
確認内容ですが、
- サーバからpull
- ファイルを作成
- add & commit
- サーバにpush
といった感じです。
※pull時にID/パスワードを求められたら、ユーザ追加の手順で追加した際のID/パスワードを入力します。
git pull http://localhost/git/test.git cd test touch test.txt add test.txt commit test.txt -m "test" git push origin master
上記がうまくいったら問題なく稼働しています。
(EC2動作時のみ)インバウンドルールの追加
EC2で動作させている場合、デフォルトではhttpの通信が外からできません。
セキュリティグループのインバウンドルールに以下の設定追加が必要になります。
タイプ:HTTP
ソース:(自分のIPアドレス)/32
AWSでは意外とハマることが多いのでご注意を・・・
まとめ
普段はgithubなどのサービスを利用しているので、gitサーバ自体を構築するのは新鮮でした。
オンプレとDirectConnectでつないでいるような環境では、外部のgitサーバを使えない場合もあるので、そういうケースのときには本手順が役に立ちそうです。
(というか役に立ちましたw)
いざというときのスキルやノウハウも蓄積していきたいところです!
コメントを残す