CentOS 6にLAMP, Git, Redmine, phpMyAdminな開発サーバを一発構築するスクリプト

CentOS 6の開発環境を一発で構築するスクリプトを公開しました。NetBeansやRedmineも紹介します。

コンテンツ目次

GitHubのリポジトリ

GitHub
GitHub - ryu-blacknd/bootstrap Contribute to ryu-blacknd/bootstrap development by creating an account on GitHub.
りゅう

気が向いた時に更新するかもしれません。

想定している開発フロー

  1. Redmineでプロジェクト管理
  2. NetBeansで開発
  3. ローカルのGitリポジトリでコミット
  4. リモートのベアリポジトリへプッシュ(Redmineが参照するのはココ)
  5. 本番環境リポジトリ(/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のURLhttp://[ホスト名]/redmine/
Redmineユーザーadmin:admin
phpMyAdminのURLhttp://[ホスト名]/phpmyadmin/
各プロジェクトのURLhttp://[ホスト名]/[プロジェクト名]/

*1 NetBeansでのプッシュ先リポジトリ = Redmineでの参照リポジトリ

*2 開発ユーザー毎にSSH公開鍵を作成し、このファイルに追記していく(後述)

初回の開発フロー

初回のみGit絡みで面倒ですが、以下のフローが済めば、以降は自動化され楽になります。

  1. [サーバ] ユーザーgituserでSSHログイン
  2. [サーバ] /var/repos/[プロジェクト名]を作成し、ディレクトリ内でgit init --bare
  3. [ローカル] NetBeansでローカルのリポジトリにファーストコミット
  4. [ローカル] NetBeansから先ほど作成したベアリポジトリにプッシュ
  5. [ローカル] Redmineで新規プロジェクトを作成、リポジトリを設定、ユーザー割り当て
  6. [サーバ] cd /var/www/htmlしてgit clone /var/repos/[プロジェクト名]
  7. [サーバ] /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公開鍵をユーザーgituserauthorized_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側で、「秘密鍵ファイル」に上記の秘密鍵ファイルを指定すれば、リポジトリにアクセスすることができるようになります。

  • URLをコピーしました!
コンテンツ目次
閉じる