2012年11月8日木曜日

redmineとjenkinsの仕込み #2(redmine編)

#1の続き。 redmine + backlogsをインストール。


6. ruby のインストール

  • まずyamlを入れる 
 # wget http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz
展開してそのディレクトリへ移動
# configure
# make
# make install
  • ruby 1.9.3 のインストール
# wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p286.tar.gz
# configre
# make
# make install
  • bundlerのインストール
gem install bundler --no-rdoc --no-ri

7. mysqlセットアップ

  • /etc/my.cnf編集
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under different user or group,
# customize your systemd unit file for mysqld according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld]
datadir=/vol1/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# utf8
character-set-server=utf8
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[mysql]
default-character-set=utf8
  • mysqldの起動とOS起動時設定
/etc/init.d/mysqld start
chkconfig mysqld on
  • 一応キャラクタセットを確認
# mysql -uroot
mysql> show variables like 'character_set%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
  • rootユーザのパスワード設定
mysql> use mysql;
mysql> update user set password=password('*******') where user='root';
mysql> delete from user where user='';
mysql> flush privileges;
  • redmineデータベース作成
mysql> create database redmine default character set utf8;
mysql> grant all on redmine.* to redmine@localhost identified by '*******';
mysql> flush privileges;
  • mysqlのCバインディングをインストール
# gem install mysql2

8. redmineのインストール

  • redmine2.0.4 をget
# wget http://rubyforge.org/frs/download.php/76444/redmine-2.0.4.tar.gz
  • /usr/localに展開
  • config/database.yml を作る
production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  password: ********
  encoding: utf8
  • config/configuration.yml を作る
default:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      address: "localhost"
      port: 25
  • Gemパッケージのインストール
redmineインストールディレクトリで
#bundle install --without development test postgresql sqlite
  • Redmineの初期設定とデータベースのテーブル作成
redmineインストールディレクトリで
# rake generate_secret_token
# RAILS_ENV=production rake db:migrate
# RAILS_ENV=production rake redmine:load_default_data
  • Passengerのインストール
# gem install passenger --no-rdoc --no-ri
  • PassengerのApache用モジュールのインストール
# passenger-install-apache2-module

9.Apacheの設定

  • /etc/httpd/conf.d/passenger.conf を作成
RackBaseURI /redmine
LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.18/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.18
PassengerRuby /usr/local/bin/ruby
PassengerMaxPoolSize 20
PassengerMaxInstancesPerApp 4
PassengerPoolIdleTime 3600
PassengerUseGlobalQueue on
PassengerHighPerformance on
PassengerStatThrottleRate 10
PassengerSpawnMethod smart
RailsAppSpawnerIdleTime 86400
RailsFrameworkSpawnerIdleTime 0
  • redmineをドキュメントルートにシンボリックリンク(/redmineでアクセスできるように)
# ln -s redmineのインストールディレクトリ/public /apcheのドキュメントルート/redmine
  • apache上で動かすのでオーナーをapacheにする
# chown -R apache:apache redmineのインストールディレクトリ
  • apacheの設定チェックと再ロードとOS起動時設定
# /etc/init.d/httpd configtest
# /etc/init.d/httpd graceful
# chkconfig httpd on
  • http://仕込んだサーバ/redmie にアクセスして確認
  • adminのパスワードを変える
  • adminじゃない管理ユーザを作る
  • 作った管理ユーザでログインしてadminをロックする

10. backlogsを入れる

基本的にbacklogsサイトの手順に従えばOK。
  • backlogsをget
pluginsディレクトリで
# git clone git://github.com/backlogs/redmine_backlogs.git
# cd redmine_backlogs
# git tag (バージョンのリストを確認)
# git checkout v0.9.26 (最新をチェックアウト)
  • XML関係のライブラリをインストール
# yum install -y libxml2 libxml2-devel libxslt libxslt-devel
  • bundle install
# bundle install --without development test postgresql sqlite
You cannot specify the same gem twice with different version requirements. You specified: test-unit (>= 0) and test-unit (= 1.2.3)
と言われる。
redmine_backlogsのtest-unitは
gem "test-unit", "=1.2.3" if RUBY_VERSION >= "1.9"
となっていて、1.2.3を指定しているが、redmine本体の方のGemfileはそれがない。
本体の方のGemfileでも"=1.2.3"を指定するように書き換えて再実行。
  • holydaysをインストール
holidaysは1.0.3を入れてからじゃないと調子悪いらしい
# gem install holidays --version 1.0.3
# gem install holidays
  • 環境変数RAILS_ENVを設定しちゃう
export RAILS_ENV=production
  • マイグレート
# bundle exec rake db:migrate
  • おまじない
# bundle exec rake tmp:cache:clear
# bundle exec rake tmp:sessions:clear
  • インストール
# bundle exec rake redmine:backlogs:install
  •  オーナーをapacheに
# chown -R apache:apache redmineのインストールディレクトリ
  • httpdを再起動
# /etc/init.d/httpd restart 
  • redmineにアクセスしてbacklogsがインストールされていることを確認


今日はここまで。

Cockburnのユースケース実践ガイド

”ユースケース実践ガイド―効果的なユースケースの書き方”という本がある。
アリスター・コーバーン氏が書いたとてもイイ本。
僕がこの本を手にしたのはもう10年前になる。


つかみどころが無いユースケース。特に初めはどう書いたらいいか迷いまくって、うまく書けない。
この本はその『つかみどころ』を教えてくれる。この本に出合って、「ユースケースって使える」って思った。例もたくさん示されていてわかりやすい。
ユースケースをしっかりガッツリ書くやり方が示されている。実際の開発にあたっては、もうちょっと簡単に書くとしても、一度この本を読んでおいた方がいい感じに書けるはずだ。
ホントにいい本だと思う。

このブログのサイドバーに、Amazonのウィジェットがある。
このウィジェットにある本は全て僕が持っている本だから、自分では特に気にして見ないんだけど、たまたまこの”ユースケース実践ガイド”の値段が7,246円になっていたのに気づいた。定価は3,800円なので倍近い値段だ。
思わずクリックしてみたら、出品者からお求めいただけます。と来た。
なんとこの良書がもう絶版か? とても残念な事だ。

この本の価値は7,246円~という中古の値段が物語っている。
ユースケースで迷いとかある人は、高くてもこの本を入手することをお勧めする。


2012年11月7日水曜日

redmineとjenkinsの仕込み #1(土台編)

今のおオシゴトの為にEC2redminejenkinsを仕込んだので覚え書き。

1. EC2 Instanceを作る

  • Region:US West (Oregon) (Tokyo, N. Californiaよりちょっとお安いので。)
  • AMI:Amazon Linux AMI 2012.09 64bit
  • Instance Type: M1 Small(m1.small)
  • Security Group: 使うポートを開ける
  • Elastic IPを今作ったEC2インスタンスに割り当て
  • ホスト名を決めてDNSに登録

2. ユーザの設定

端末はteratermを使う。puttyはpemファイルを変換するとか面倒。同じ理由でSFTPはBitKinexを使う。
  • ec2-userでログイン(インスタンス生成の時に作ってダウンロードした鍵ファイル使用)
  • まずrootのパスワードを設定($ sudo passwd root)
  • rootになってec2-userのパスワードを変える(# passwd ec2-user)
  • 通常使うユーザを作る(仮にuser1とする)
  • teratermでuser1用にSSH鍵生成
  • 公開鍵をサーバへ転送(teratermのSCPを利用)
  • user1のホームに.sshディレクトリを作成
  • # cat ec2-userのホームに転送されている公開鍵ファイル » .ssh/authorized_keys
  • # chown -R user1:user1 .ssh
  • # chmod 600 .ssh/authorized_keys
  • # chmod 700 .ssh
  • # rm ec2-userのホームに転送されている公開鍵ファイル
  • 一旦出てuser1で入りなおしてみる
  • 無事入れたら.bashrcをお好みで編集 
  • またrootになる
  • timezoneをAsia/Tokyoにする
    # rm /etc/localtime; ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

3. sendmailはウザいのでpostfixにする

  • postfixとmailxをインストール
#  yum -y install postfix
#  yum -y install mailx
  • /etc/postfix/main.cfを編集
myhostname = FQDNでホスト名
mydomain = ドメイン
myorigin = $mydomain
mynetworks_style = host
  • /etc/aliasesを編集してnewaliases
  • sendmail停止
# /etc/init.d/sendmail stop
  • MTAを切り替える
# alternatives —config mta (←このコマンドで切り替える)
There are 2 programs which provide ‘mta’.

Selection    Command
———————————————————————-
*+ 1           /usr/sbin/sendmail.sendmail
   2           /usr/sbin/sendmail.postfix
Enter to keep the current selection[+], or type selection number: 2 (←2のpostfixを選択)
  • postfixの起動とOS起動時の設定
# /etc/init.d/postfix start
# chkconfig postfix on
# chkconfig sendmail off
  • テスト
# mail 誰@何処

4. ルートパーティションの8Gだけだと足りなくなりそうなのでEBSボリュームを作ってマウント

  • EC2コンソールでEBSボリュームを一つ作成
  • EC2インスタンスにアタッチ
  • ファイルシステムを作る
 # yes | mkfs -t ext4 /dev/sdf
  • /etc/fstabを編集
# /dev/sdf    /vol1       ext4    defaults        1   2
  • /vol1をマウント

5. 色々要る物をインストール

# yum -y groupinstall "Development Tools"
# yum -y install openssl-devel readline-devel zlib-devel curl-devel
# yum -y install httpd httpd-devel
# yum -y install mysql-server mysql-devel
# yum -y install ImageMagick ImageMagick-devel
# yum -y install emacs
# yum -y install telnet


今日はここまで。