概要

github便利ですよね! プラウザから「ポチッ」とリポジトリ作成したり、気になるコードを簡単にfork出来る所が大変気に入っています。 ただ、外に持ち出せないコードとかだと、その恩恵を享受出来なかくって歯がゆい思いをする時があります。 githubが自宅内・社内にあったら良いのに!!って思ったことありませんか? そんなあなたに、github風プロジェクト管理ツール「Chaw」のセットアップ方法を紹介します((Chaw同梱のINSTALL.txtの焼き直しです))

chaw.jpg

  • Chawの主な機能

    • プロジェクト管理(ユーザやパーミッション管理)
    • ブラウザから一発でgit/Subversionのリポジトリを作成
    • forkの作成・削除・管理
    • プロジェクトのタイムライン表示
    • Wiki・BTS(チケット管理)・マイルスーン
  • 以前MOONGIFTでも紹介された事があるので、ご存知の方もいるかもしれません。

  • 最近だとLithiumの公式リポジトリにも使われています。((LithiumとChawは作ってる人が同じなのだとか!@cakephperさんに教えてもらいました。))

事前準備

CentOS 5.5 x86_64な仮想マシン × 1台

  • VM
name type
OS CentOS 5.5 x86_64
CPU 1Core
Memory 512MB
HDD 20GB
  • PHP 5.3.3
 # php -version
 PHP 5.3.3 (cli) (built: Sep 13 2010 01:58:19)
 Copyright (c) 1997-2010 The PHP Group
 Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
  • MySQL 5.1.50
 # mysql --version
 mysql  Ver 14.14 Distrib 5.1.50, for redhat-linux-gnu (x86_64) using readline 5.1
  • Apache 2.2.3
 # apachectl -version
 Server version: Apache/2.2.3
 Server built:   Aug 30 2010 12:28:40
  • git 1.7.3
 # git --version
 git version 1.7.3
  • Subversion 1.4.2
 # svn --version
 svn, バージョン 1.4.2 (r22196)
    コンパイル日時: Aug 10 2009, 17:54:46

githubとthechawのアカウントとsshkeyの登録

  • CakePHPの最新版とChawの最新版を入手するのに必要
    • どちらの取得も「無料です。」アイテム課金とかありませn
  • githubChawでそれぞれレジストしてください。

構築場所の確認

  • 設置先ドメイン
 hogehoge.com
  • CakePHPのインストールパス
 /var/www/cakephp
  • Chawのインストールパス
 /var/www/html/chaw
  • gitリポジトリの場所
 /var/www/html/chaw/content/git/
  • gitリポジトリの管理ユーザ
 git
  • Subversionリポジトリの場所
 /var/www/html/chaw/content/svn/
  • Subversionリポジトリの管理ユーザ
 svn

構築開始

DBとユーザの作成

 # mysql -u root -p
 > CREATE DATABASE  `chaw` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
 > CREATE USER 'chaw'@'localhost' IDENTIFIED BY  'hogehoge';
 > GRANT USAGE ON * . * TO  'chaw'@'localhost' IDENTIFIED BY  'hogehoge' 
 > WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
 > GRANT ALL PRIVILEGES ON  `chaw` . * TO  'chaw'@'localhost' WITH GRANT OPTION ;
 > quit;

CakePHP1.3を導入

  • 導入先に移動
 # cd /var/www/
  • githubからCakePHP1.3の最新版を取得
 # git clone git://github.com/cakephp/cakephp.git
 Cloning into cakephp...
 remote: Counting objects: 106943, done.
 remote: Compressing objects: 100% (21598/21598), done.
 remote: Total 106943 (delta 86440), reused 103467 (delta 83986)
 Receiving objects: 100% (106943/106943), 12.94 MiB | 2.80 MiB/s, done.
 Resolving deltas: 100% (86440/86440), done.
 # chown -R apache:apache cakephp
 # ln -s /var/www/cakephp/cake/console/cake /usr/bin/
 # ln -s /var/www/cakephp/cake/console/cake.php /usr/bin/
  • twitterで@cakephperさんからご指摘いただいたので修正。感謝! # git clone git://github.com/cakephp/cakephp1x.git Cloning into cakephp1x... remote: Counting objects: 83549, done. remote: Compressing objects: 100% (16256/16256), done. remote: Total 83549 (delta 67764), reused 81814 (delta 66189) Receiving objects: 100% (83549/83549), 9.90 MiB | 2.40 MiB/s, done. Resolving deltas: 100% (67764/67764), done. # chown -R apache:apache cakephp1x # ln -s /var/www/cakephp1x/cake/console/cake /usr/bin/ # ln -s /var/www/cakephp1x/cake/console/cake.php /usr/bin/

  • CakePHP1.3最新版のブランチを利用する

 # cd cakephp
 # git checkout -b 1.3 origin/1.3
 Branch 1.3 set up to track remote branch 1.3 from origin.
 Switched to a new branch '1.3'

Chaw導入

  • 導入先に移動
 # cd /var/www/html/
  • thechawのリポジトリからChawの最新版を取得
 # git clone git@thechaw.com:chaw.git
 Cloning into chaw...
 bash: warning: setlocale: LC_ALL: cannot change locale (ja_JP.UTF-8)
 remote: Counting objects: 8181, done.
 remote: Compressing objects: 100% (4787/4787), done.
 remote: Total 8181 (delta 5635), reused 4475 (delta 2916)
 Receiving objects: 100% (8181/8181), 1.20 MiB | 595 KiB/s, done.
 Resolving deltas: 100% (5635/5635), done.
 # chown -R apache:apache chaw
  • データベースの設定
 # cake -app chaw bake db_config
 Welcome to CakePHP v1.3.6 Console
 ---------------------------------------------------------------
 App : chaw
 Path: /var/www/html/chaw
 ---------------------------------------------------------------
 ---------------------------------------------------------------
 Database Configuration:
 ---------------------------------------------------------------
 Name:
 [default] >
 Driver: (db2/firebird/mssql/mysql/mysqli/odbc/oracle/postgres/sqlite/sybase)
 [mysql] >
 Persistent Connection? (y/n)
 [n] >
 Database Host:
 [localhost] >
 Port?
 [n] >
 User:
 [root] > chaw
 Password:
 > hogehoge
 Database Name:
 [cake] > chaw
 Table Prefix?
 [n] >
 Table encoding?
 [n] > UTF8

 ---------------------------------------------------------------
 The following database configuration will be created:
 ---------------------------------------------------------------
 Name:         default
 Driver:       mysql
 Persistent:   false
 Host:         localhost
 User:         chaw
 Pass:         ********
 Database:     chaw
 Encoding:     UTF8
 ---------------------------------------------------------------
 Look okay? (y/n)
 [y] > y
 Do you wish to add another database configuration?
 [n] >

 Creating file /var/www/html/chaw/config/database.php
 File `/var/www/html/chaw/config/database.php` exists, overwrite? (y/n/q)
 [n] > y
 Wrote `/var/www/html/chaw/config/database.php`
  • データベースにスキーマを作成
 # cake -app chaw schema create
 Welcome to CakePHP v1.3.6 Console
 ---------------------------------------------------------------
 App : repos
 Path: /var/www/html/chaw
 ---------------------------------------------------------------
 Cake Schema Shell
 ---------------------------------------------------------------
 The following table(s) will be dropped.
 comments
 commits
 permissions
 projects
 queues
 tags
 tags_tickets
 tickets
 timeline
 users
 versions
 wiki
 Are you sure you want to drop the table(s)? (y/n)
 [n] > y
 Dropping table(s).
 comments updated.
 commits updated.
 permissions updated.
 projects updated.
 queues updated.
 tags updated.
 tags_tickets updated.
 tickets updated.
 timeline updated.
 users updated.
 versions updated.
 wiki updated.

 The following table(s) will be created.
 comments
 commits
 permissions
 projects
 queues
 tags
 tags_tickets
 tickets
 timeline
 users
 versions
 wiki
 Are you sure you want to create the table(s)? (y/n)
 [y] >
 Creating table(s).
 comments updated.
 commits updated.
 permissions updated.
 projects updated.
 queues updated.
 tags updated.
 tags_tickets updated.
 tickets updated.
 timeline updated.
 users updated.
 versions updated.
 wiki updated.
 End create.
  • 設定
  • mod_rewriteを有効にする
 # cd /var/www/html/chaw
 # vi .htaccess
 <IfModule mod_rewrite.c>
     RewriteEngine on
     RewriteRule    ^$    webroot/    [L]
     RewriteRule    (.*) webroot/$1    [L]
  </IfModule>
  • プロジェクトの設定項目(最低限以下の項目を編集)
 # vi ./config/bootstrap.php 
 'git' => 'git@thechaw.com',
 'svn' => 'svn+ssh://svn@thechaw.com''git' => 'git@hogehoge.com',
 'svn' => 'svn+ssh://svn@hogehoge.com'
  • cakephp本体へのパスを指定
 # vi ./webroot/index.php
 define(CAKE_CORE_INCLUDE_PATH', ROOT);

 define(CAKE_CORE_INCLUDE_PATH', DS. 'var' .DS. 'www' .DS. 'cakephp);
  • アクセス権の設定
 # chmod -R 777 /var/www/html/chaw/tmp/*
  • ユーザの作成
 # adduser --shell /bin/sh --home /var/www/html/chaw/content/git/repo git
 # adduser --shell /bin/sh --home /var/www/html/chaw/content/svn/repo svn
 # chown -R apache:apache /var/www/html/chaw/content
 # chmod 777 /var/www/html/chaw/content/git/repo
 # chmod 777 /var/www/html/chaw/content/svn/repo

Chaw設定

  • ブラウザからアクセス
 http://hogehoge.com/chaw/
  • 管理ユーザを登録 chaw02.jpg

  • 登録したユーザでログイン chaw04.jpg

  • 最初のリポジトリを作成 chaw05.jpg

  • 管理リポジトリを登録(最初に作成したリポジトリが管理リポジトリになります) chaw07.jpg

  • 完了!Chawな世界をお楽しみください! chaw08.jpg

その他

  • 不明な所とか、間違っている所があったらご指摘下さい
  • Chawよりももっと便利なツールあるよ!って話大歓迎です。是非教えてください。
  • @cakephperさんからご指摘いただいた箇所修正しました。2010/12/31 23:08

Comments