CentOS 6の開発環境を一発で構築するスクリプトを公開しました。NetBeansやRedmineも紹介します。
GitHubのリポジトリ
気が向いた時に更新するかもしれません。
想定している開発フロー
- Redmineでプロジェクト管理
- NetBeansで開発
- ローカルのGitリポジトリでコミット
- リモートのベアリポジトリへプッシュ(Redmineが参照するのはココ)
- 本番環境リポジトリ(
/var/www/html
以下)で自動プル
スクリプトの概要
- セキュリティ関係の設定(ローカル開発環境なので甘々に設定)
- yumのリポジトリを追加(epel, remi)
- yum updateと、必要なパッケージのインストール
- 不要なサービスの停止
- LAMP環境のインストールと最低限の設定
- RubyとPassenger周りのインストール
- Gitユーザーの作成と関連する設定
- phpMyAdminのインストール
- Redmine本体、テーマ、プラグインをインストール
- おまけ:ベアリポジトリ用フックスクリプトの雛形
詳細は、シェルスクリプトを読んでみてください。たいしてトリッキーなことはしていません。
動作環境
- LAN内のサーバPC、またはVirtualBox等の仮想マシン(Vagrant可)
- CentOS6 x86/64 minimal isoイメージでのインストール直後であること
インストール
rootでログインし、gitをインストール後、取得したbootstrap.shを実行するだけです。
yum -y install git
cd
git clone https://github.com/ryu-blacknd/bootstrap.git
chmod +x bootstrap/bootstrap.sh
bootstrap/bootstrap.sh
ほぼノンストップで進みますが、Passengerのインストール時のみ画面に表示される通りEnterを押して進んでください。
※2013.10.16 追記:Passengerインストール時にEnterを自動入力することで、ノンストップになりました。
インストール後はシステムを再起動します。
reboot
開発に関する情報
種別 | 値 |
---|---|
Gitユーザー | gituser:gituser |
Gitベアリポジトリ *1 | /var/repos/[プロジェクト名] |
Git公開鍵を追記するファイル *2 | /home/gituser/.ssh/authorized_keys |
RedmineのURL | http://[ホスト名]/redmine/ |
Redmineユーザー | admin:admin |
phpMyAdminのURL | http://[ホスト名]/phpmyadmin/ |
各プロジェクトのURL | http://[ホスト名]/[プロジェクト名]/ |
*1 NetBeansでのプッシュ先リポジトリ = Redmineでの参照リポジトリ
*2 開発ユーザー毎にSSH公開鍵を作成し、このファイルに追記していく(後述)
初回の開発フロー
初回のみGit絡みで面倒ですが、以下のフローが済めば、以降は自動化され楽になります。
- [サーバ] ユーザー
gituser
でSSHログイン - [サーバ]
/var/repos/[プロジェクト名]
を作成し、ディレクトリ内でgit init --bare
- [ローカル] NetBeansでローカルのリポジトリにファーストコミット
- [ローカル] NetBeansから先ほど作成したベアリポジトリにプッシュ
- [ローカル] Redmineで新規プロジェクトを作成、リポジトリを設定、ユーザー割り当て
- [サーバ]
cd /var/www/html
してgit clone /var/repos/[プロジェクト名]
- [サーバ]
/var/repos/[プロジェクト名]/.git/hooks/
にpost-update
をコピーして編集
post-update
ファイルはユーザーroot
のホームディレクトリにあるため、gituser
はアクセスできません。
chown gituser. post-update
としておき、gituser
のホームディレクトリにでもコピーしておくとよいでしょう。
post-updateのコピーと編集
フックスクリプトpost-update
は、プロジェクトを作成する毎に手動でコピー、****
の部分を編集します。
#!/bin/sh
/usr/bin/wget -q -O /dev/null http://localhost/redmine/sys/fetch_changesets?key=****
(cd /var/www/html/**** && git --git-dir=.git pull)
2行目は、Redmineの 管理 → 設定 → リポジトリ で生成したAPIキーを記述します。
3行目は、上記手順のプロジェクト名(=リポジトリのディレクトリ名)を記述します。
これで冒頭に書いたようなフローの準備が整いました。
以後はNetBeansで、ローカルコミットとベアリポジトリへのプッシュを繰り返して開発を進めます。
コミット・メッセージでチケットの状態を更新する
NetBeansからのコミット時は、コミット・メッセージの文末にrefs #1 @1.5h
等を付与すると、Redmineのチケットと連携することができます。
このとき、作成者とコミッタをRedmineのユーザー名に合わせるようにしてください。
上記ユーザー名がRedmine側と一致しない場合は、チケット連携が正常に行われません。その場合はプロジェクト毎の 設定 → リポジトリ から、ユーザーの関連付けを行ってください。
※詳しくはこちらを参照してください。
リポジトリへのアクセスにSSH鍵認証を利用する
ユーザー毎のSSH公開鍵をユーザーgituser
のauthorized_keys
に追記していきます。
以下の手順でSSH公開鍵と秘密鍵のペアを生成します。
ssh-keygen -C user@example.com
なお、この鍵ペアを外部サーバへの接続用途に使わないのであれば、パスフレーズは無視して構いません。
これでユーザーのホームディレクトリに2つの鍵ファイルが作成されます。
役割 | ファイル名 |
---|---|
SSH秘密鍵 | ~/.ssh/id_rsa |
SSH公開鍵 | ~/.ssh/id_rsa.pub |
この公開鍵をサーバ管理者に渡し、管理者はgituser
ユーザーで~/.ssh/authorized_keys
に追記します。
cd ~/.ssh
cat id_rsa.pub >> authorized_keys
次にNetBeans側で、「秘密鍵ファイル」に上記の秘密鍵ファイルを指定すれば、リポジトリにアクセスすることができるようになります。