EC2のLinux上にApache + Gitサーバ構築

スポンサーリンク

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)

いざというときのスキルやノウハウも蓄積していきたいところです!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です