capistrano+gitでソースコードのデプロイサーバ構築①(gitサーバ構築)


私の当面行うことになっているミッションと現在の状況は下記の通り
・既存プライベートクラウド環境に構築されたサーバ群のAWSへの移設
・既存プライベートクラウド環境はVMWareのようなメジャーな仮想化OSではなく、残念ながらVM import/exportツールなどに頼る事は難しそう
・お客様毎にサーバ群を分けて大量に構築を行いたい
・お客様毎にサーバの台数はいつでもスケールできるようにしたい
・現在はSVNにてコードの管理を行っており、コミットと同時にデプロイされるようにしている

上記の状況から今回は下記のような環境構築を試みたいと思う。
・capistranoを使用しデプロイを自動化したい
・SCMをgitに変えてみる(gitでSSHを使ってコードのアップロードが行えることを利点と考えた)
・git-hookを使って、コミットと同時にデプロイを実現させたい
・1台のEC2インスタンスを全てのお客様用のデプロイサーバとして使用

今回は上記の実現を行うため、まずはgitサーバの構築を行う手順を記載する

■前準備
・EC2インスタンスは立ち上げ済み
・セキュリティグループでSSHを開放してある
初期設定は終わっている

■2015/01/08追記
下記の設定でgitユーザーでgitのリポジトリを作るとgitのプッシュと同時にデプロイをすることが難しいようでした。
そのため、同時にデプロイするところでこの設定をやり直していますので、予めご了承ください。

■gitサーバのインストール
gitユーザーの作成と鍵認証の設定

# useradd git
# passwd git
# su - git
$ ssh-keygen -t rsa
$ cd .ssh/
$ cp id_rsa.pub authorized_keys
$ chown git. authorized_keys
$ chmod 600 authorized_keys
$ chmod 700 ../.ssh
$ vi config

configファイルの編集

Host localhost
  User git
  hostname 127.0.0.1
  identityfile ~/.ssh/id_rsa

sshの接続をテスト

$ ssh localhost

無事にログインできることを確認できればOK

yumでgitのインストール

# yum -y install git
# su - git
$ mkdir ~/repos
$ cd repos/
$ mkdir test.git
$ cd test.git/
$ git --bare init

無事にサーバが構築できたかはgitクライアントを使って確認をしてみてください。

■ちなみに
gitクライアントからの接続の際に別の認証鍵を使いたい場合は、
/home/git/.ssh/authorized_keys に公開鍵の内容を追記する

gitユーザーのセキュリティを高めたい場合は下記の様にgit-shellに限定する設定を行うと良い

# usermod -m -s /usr/bin/git-shell git

次回はcapistranoのインストールを行う

■参考

投稿者:

nikuatsu

大学時代にWebアプリ開発を中心とした会社を企業し、約15年経営した末に倒産。現在はとあるインターネット上でのビジネスを展開する企業の開発部門で、あらゆる技術関連について対応している。 スキルの範囲: ・主にPHPを中心としたWebアプリケーション開発 ・Linuxサーバを中心としたインフラストラクチャー全般 ・MySQL、PostgreSQLを中心としたRDBMSの設計、運用 ・Objective-CによるiPhoneアプリの開発 などなど。

コメントを残す

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