2012年12月9日日曜日

Solaris IPv4アドレス割り当てでの試行

別々のNICに同じIPv4アドレスの割り当て自体はできる。但し、同時に活性化はできない。(自分の予想とおりであった)

<事前準備>
bash-3.00# cp /etc/hostname.e1000g0 /etc/hostname.e1000g1
bash-3.00# cp /etc/hostname.e1000g0 /etc/hostname6.e1000g0
bash-3.00# cp /etc/hostname.e1000g0 /etc/hostname6.e1000g1

bash-3.00# more /etc/hosts
#
# Internet host table
#
127.0.0.1 localhost
::1 localhost
172.16.20.5 sol10 loghost

bash-3.00# reboot
bash-3.00# ifconfig e1000g1 inet6 up
bash-3.00# ifconfig e1000g0 inet6 up

<実行手順>
bash-3.00# ifconfig -a
lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000
e1000g0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 172.16.20.5 netmask ffffff00 broadcast 172.16.20.255
        ether 0:c:29:d2:61:36
e1000g1: flags=1000842<BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 3
        inet 172.16.20.5 netmask ffffff00 broadcast 172.16.20.255
        ether 0:c:29:d2:61:40
lo0: flags=2002000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv6,VIRTUAL> mtu 8252 index 1
        inet6 ::1/128
e1000g0: flags=2004841<UP,RUNNING,MULTICAST,DHCP,IPv6> mtu 1500 index 2
        inet6 fe80::20c:29ff:fed2:6136/10
        ether 0:c:29:d2:61:36
e1000g1: flags=2004841<UP,RUNNING,MULTICAST,DHCP,IPv6> mtu 1500 index 3
        inet6 fe80::20c:29ff:fed2:6140/10
        ether 0:c:29:d2:61:40

bash-3.00# ifconfig e1000g1 inet up
ifconfig: setifflags: SIOCSLIFFLAGS: e1000g1: Cannot assign requested address

なお、以下の場合もダメだった。
(1) /etc/hostsファイルに同じIPアドレス(172.16.20.5)で違うホスト名(sol10以外)を割り当てる。
(2) /etc/hostname.e1000g1も(1)で設定した違うホスト名にしてリブートする。

2012年10月26日金曜日

Solaris10でのDHCPデバッグ

DHCPプロトコルは以下のとおり。矢印の左側がDHCPクライアント、右側がDHCPサーバを指す。

<IPアドレス未取得の場合>
 →Message type = DHCPDISCOVER
 ←Message type = DHCPOFFER
 →Message type = DHCPREQUEST
 ←Message type = DHCPACK

<IPアドレス取得済みマシンがリブートした時>
 →Message type = DHCPREQUEST
 ←Message type = DHCPACK

Solaris10にてDHCPのデバッグとして、2通りのやり方がある。
 1.DHCPサーバ側でパケットをキャプチャする
 2.DHCPサーバをデバッグモードで動かす

●DHCPサーバ側でパケットをキャプチャする

以下、snoop実行時にDHCPクライアントが再起動した時の例。

bash-3.00# snoop -d e1000g0 -o /tmp/snoop.out udp port 67 or udp port 68
DHCPクライアントが再起動後、DHCPサーバ側にて[Ctrl]+[C]で閉じる。

bash-3.00# snoop -i /tmp/snoop.out -x0 -v
ETHER:  ----- Ether Header -----
ETHER:
ETHER:  Packet 1 arrived at 5:04:33.73759
ETHER:  Packet size = 342 bytes
ETHER:  Destination = ff:ff:ff:ff:ff:ff, (broadcast)
ETHER:  Source      = 0:c:29:67:84:89,
ETHER:  Ethertype = 0800 (IP)
ETHER:
IP:   ----- IP Header -----
IP:
IP:   Version = 4
IP:   Header length = 20 bytes
IP:   Type of service = 0x00
IP:         xxx. .... = 0 (precedence)
IP:         ...0 .... = normal delay
IP:         .... 0... = normal throughput
IP:         .... .0.. = normal reliability
IP:         .... ..0. = not ECN capable transport
IP:         .... ...0 = no ECN congestion experienced
IP:   Total length = 328 bytes
IP:   Identification = 0
IP:   Flags = 0x4
IP:         .1.. .... = do not fragment
IP:         ..0. .... = last fragment
IP:   Fragment offset = 0 bytes
IP:   Time to live = 255 seconds/hops
IP:   Protocol = 17 (UDP)
IP:   Header checksum = 7aa5
IP:   Source address = 0.0.0.0, OLD-BROADCAST
IP:   Destination address = 255.255.255.255, BROADCAST
IP:   No options
IP:
UDP:  ----- UDP Header -----
UDP:
UDP:  Source port = 68
UDP:  Destination port = 67 (BOOTPS)
UDP:  Length = 308
UDP:  Checksum = 8943
UDP:
DHCP: ----- Dynamic Host Configuration Protocol -----
DHCP:
DHCP: Hardware address type (htype) =  1 (Ethernet (10Mb))
DHCP: Hardware address length (hlen) = 6 octets
DHCP: Relay agent hops = 0
DHCP: Transaction ID = 0x5b32ba17
DHCP: Time since boot = 0 seconds
DHCP: Flags = 0x0000
DHCP: Client address (ciaddr) = 0.0.0.0
DHCP: Your client address (yiaddr) = 0.0.0.0
DHCP: Next server address (siaddr) = 0.0.0.0
DHCP: Relay agent address (giaddr) = 0.0.0.0
DHCP: Client hardware address (chaddr) = 00:0C:29:67:84:89
DHCP:
DHCP: ----- (Options) field options -----
DHCP:
DHCP: Message type = DHCPREQUEST
DHCP: Requested IP Address = 192.168.10.3
DHCP: IP Address Lease Time = -1 seconds
DHCP: Maximum DHCP Message Size = 1472 bytes
DHCP: Client Class Identifier = "SUNW.i86pc"
DHCP: Requested Options:
DHCP:    1 (Subnet Mask)
DHCP:    3 (Router)
DHCP:    6 (DNS Servers)
DHCP:   12 (Client Hostname)
DHCP:   15 (DNS Domain Name)
DHCP:   28 (Broadcast Address)
DHCP:   43 (Vendor Specific Options)
DHCP: Client Hostname = sol10-dhcp-client

           0: ffff ffff ffff 000c 2967 8489 0800 4500    ........)g....E.
          16: 0148 0000 4000 ff11 7aa5 0000 0000 ffff    .H..@...z.......
          32: ffff 0044 0043 0134 8943 0101 0600 5b32    ...D.C.4.C....[2
          48: ba17 0000 0000 0000 0000 0000 0000 0000    ................
          64: 0000 0000 0000 000c 2967 8489 0000 0000    ........)g......
          80: 0000 0000 0000 0000 0000 0000 0000 0000    ................
          96: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         112: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         128: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         144: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         160: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         176: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         192: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         208: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         224: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         240: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         256: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         272: 0000 0000 0000 6382 5363 3501 0332 04c0    ......c.Sc5..2..
         288: a80a 0333 04ff ffff ff39 0205 c03c 0a53    ...3.....9...<.S
         304: 554e 572e 6938 3670 6337 0701 0306 0c0f    UNW.i86pc7......
         320: 1c2b 0c11 736f 6c31 302d 6468 6370 2d63    .+..sol10-dhcp-c
         336: 6c69 656e 74ff                             lient.
ETHER:  ----- Ether Header -----
ETHER:
ETHER:  Packet 2 arrived at 5:04:33.75531
ETHER:  Packet size = 342 bytes
ETHER:  Destination = 0:c:29:67:84:89,
ETHER:  Source      = 0:c:29:52:33:cc,
ETHER:  Ethertype = 0800 (IP)
ETHER:
IP:   ----- IP Header -----
IP:
IP:   Version = 4
IP:   Header length = 20 bytes
IP:   Type of service = 0x00
IP:         xxx. .... = 0 (precedence)
IP:         ...0 .... = normal delay
IP:         .... 0... = normal throughput
IP:         .... .0.. = normal reliability
IP:         .... ..0. = not ECN capable transport
IP:         .... ...0 = no ECN congestion experienced
IP:   Total length = 328 bytes
IP:   Identification = 21163
IP:   Flags = 0x4
IP:         .1.. .... = do not fragment
IP:         ..0. .... = last fragment
IP:   Fragment offset = 0 bytes
IP:   Time to live = 255 seconds/hops
IP:   Protocol = 17 (UDP)
IP:   Header checksum = 0000
IP:   Source address = 192.168.10.4, sol10-dhcp-server
IP:   Destination address = 192.168.10.3, 192.168.10.3
IP:   No options
IP:
UDP:  ----- UDP Header -----
UDP:
UDP:  Source port = 67
UDP:  Destination port = 68 (BOOTPC)
UDP:  Length = 308
UDP:  Checksum = 969D
UDP:
DHCP: ----- Dynamic Host Configuration Protocol -----
DHCP:
DHCP: Hardware address type (htype) =  1 (Ethernet (10Mb))
DHCP: Hardware address length (hlen) = 6 octets
DHCP: Relay agent hops = 0
DHCP: Transaction ID = 0x5b32ba17
DHCP: Time since boot = 0 seconds
DHCP: Flags = 0x0000
DHCP: Client address (ciaddr) = 0.0.0.0
DHCP: Your client address (yiaddr) = 192.168.10.3
DHCP: Next server address (siaddr) = 0.0.0.0
DHCP: Relay agent address (giaddr) = 0.0.0.0
DHCP: Client hardware address (chaddr) = 00:0C:29:67:84:89
DHCP:
DHCP: ----- (Options) field options -----
DHCP:
DHCP: Message type = DHCPACK
DHCP: DHCP Server Identifier = 192.168.10.4
DHCP: UTC Time Offset = 32400 seconds
DHCP: RFC868 Time Servers at = 192.168.10.4
DHCP: IP Address Lease Time = 86400 seconds
DHCP: Broadcast Address = 192.168.10.255
DHCP: Perform Router Discovery Flag flag = 0x1
DHCP: Subnet Mask = 255.255.255.0

           0: 000c 2967 8489 000c 2952 33cc 0800 4500    ..)g....)R3...E.
          16: 0148 52ab 4000 ff11 0000 c0a8 0a04 c0a8    .HR.@...........
          32: 0a03 0043 0044 0134 969d 0201 0600 5b32    ...C.D.4......[2
          48: ba17 0000 0000 0000 0000 c0a8 0a03 0000    ................
          64: 0000 0000 0000 000c 2967 8489 0000 0000    ........)g......
          80: 0000 0000 0000 0000 0000 0000 0000 0000    ................
          96: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         112: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         128: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         144: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         160: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         176: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         192: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         208: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         224: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         240: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         256: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         272: 0000 0000 0000 6382 5363 3501 0536 04c0    ......c.Sc5..6..
         288: a80a 0402 0400 007e 9004 04c0 a80a 0433    .......~.......3
         304: 0400 0151 801c 04c0 a80a ff1f 0101 0104    ...Q............
         320: ffff ff00 ff00 0000 0000 0000 0000 0000    ................
         336: 0000 0000 0000                             ......

●DHCPサーバをデバッグモードで動かす

以下、デバッグモードで実行時にDHCPクライアントが再起動した時の例。

bash-3.00# svcadm disable -t svc:/network/dhcp-server
bash-3.00# /usr/lib/inet/in.dhcpd -d -v
50899ead:  Daemon Version: 3.5
50899ead:  Maximum relay hops: 4
50899ead:  Run mode is: DHCP Server Mode.
50899ead:  Datastore resource: SUNWfiles
50899ead:  Location: /var/dhcp
50899ead:  DHCP offer TTL: 10
50899ead:  ICMP validation timeout: 1000 milliseconds, Attempts: 1.
50899ead:  Name service update enabled, timeout: 15 seconds
50899ead:  Maximum concurrent clients: 1024
50899ead:  Maximum threads: 256
50899ead:  Read 3 entries from DHCP macro database on Fri Oct 26 05:18:53 2012
50899ead:  Monitor (0003/e1000g0) started...
50899ead:  Thread Id: 0003 - Monitoring Interface: e1000g0 *****
50899ead:  MTU: 1500    Type: SOCKET
50899ead:  Broadcast: 192.168.10.255
50899ead:  Monitor (0004/e1000g1) started...
50899ead:  Thread Id: 0004 - Monitoring Interface: e1000g1 *****
50899ead:  MTU: 1500    Type: SOCKET
50899ead:  Broadcast: 10.20.30.255
50899ead:  Netmask: 255.255.255.0
50899ead:  Netmask: 255.255.255.0
50899ead:  Address: 192.168.10.4
50899ead:  Address: 10.20.30.4
★ここで待ち
50899f86:  Datagram received on network device: e1000g1(limited broadcast)
50899f86:  Datagram received on network device: e1000g0(limited broadcast)
50899f86:  e1000g1(limited broadcast): There is no 10.20.30.0 dhcp-network table for DHCP client's network.
50899f86:  name_avail:  unqualified name
qualified with local domain: sol10-dhcp-client.private.net.
50899f86:  name_avail(T):  gethostbyname_r failed
50899f86:  name service update on behalf of client with ID 000C29678489 failed because requested name was not fully-qualified and no DNS domain name was specified for this client in the dhcptab
50899f86:  do_nsupdate:  dns_puthostent returned -1
50899f86:  Client: 01000C29678489 maps to IP: 192.168.10.3
50899f86:  Unicasting datagram to 192.168.10.3 address.
50899f86:  Adding ARP entry: 192.168.10.3 == 000C29678489
★[Ctrl]+[C]押下
^C5089a050:  Signal: INT received...Exiting
5089a050:  Closing interface: e1000g0
5089a050:  Monitor (0003/e1000g0): exiting.
5089a050:  Interface statistics for: e1000g0 **************
5089a050:  Pending DHCP offers: 0
5089a050:  Total Packets Transmitted: 1
5089a050:  Total Packets Received: 1
5089a050:  Total Packet Duplicates: 0
5089a050:  Total Packets Dropped: 0
5089a050:  Total Packets Processed: 1
5089a050:  Total Protocol Errors: 0
5089a050:  Closing interface: e1000g1
5089a050:  Monitor (0004/e1000g1): exiting.
5089a050:  Interface statistics for: e1000g1 **************
5089a050:  Pending DHCP offers: 0
5089a050:  Total Packets Transmitted: 0
5089a050:  Total Packets Received: 1
5089a050:  Total Packet Duplicates: 0
5089a050:  Total Packets Dropped: 0
5089a050:  Total Packets Processed: 0
5089a050:  Total Protocol Errors: 0
5089a050:  Daemon terminated.

2012年9月17日月曜日

Redmineの構築(その2)

Windows 7上でRedmine2.x系の構築を行う。

・apache
apacheのサイト(http://httpd.apache.org/download.cgi#apache22)から以下をダウンロードして、インストールする。
 httpd-2.2.22-win32-x86-no_ssl.msi

・JRE
http://www.oracle.com/technetwork/java/javase/downloads/jre6u35-downloads-1836473.html)より、以下をダウンロードして、インストールする。
 jre-6u35-windows-i586.exe

・MySQL
MySQLのGUIを使うため、マイクロソフト(http://www.microsoft.com/ja-jp/net/netfx4/download.aspx)より、.NET Framework 4をインストールする。

MySQLのサイト(http://dev.mysql.com/downloads/)から以下をダウンロードして、インストールする。
 mysql-installer-community-5.5.27.2.msi

・Ruby
Rubyのサイト(http://rubyinstaller.org/downloads/)より、以下をダウンロードして、インストールする。
 rubyinstaller-1.8.7-p370.exe
 DevKit-tdm-32-4.5.2-20111229-1559-sfx.exe

・redmine
 
redmineのサイト(http://rubyforge.org/frs/?group_id=1850)より、redmine-2.0.3.zipをダウンロードする。

・ImageMagick
rubyのサイト(http://rubyforge.org/frs/?group_id=12)より、RMagick-2.12.0-ImageMagick-6.5.6-8-Q8.zipをダウンロードする。ファイル解凍後、C:\Tempに置く。ImageMagick-6.5.6-8-Q8-windows-dll.exeを実行し、C/C++ のヘッダーファイルも一緒にインストールする。(インストール時のチェックボックスでチェックをつける。)
<事前準備>
①MySQL
・MySQL Workbenchを起動し、[Open Connection to start querying]より、スキーマredmineを作成する。
・[Manage Security]より、ユーザredmineを作成する。Object Rights、DDL Rights、Other Rightsにて、すべての権限を付与する。

②Devkit
DevkitをC:\Devkitにインストール後、以下を実行する。
C:\Devkit> ruby dk.rb init
C:\Devkit> ruby dk.rb install
ダウンロードしたファイルを解凍して、C:\redmineとする。

③Gemfile
・ImageMagick のインストールディレクトリを環境変数の PATH に追加する。
・ImageMagick のインストールディレクトリ内にある include ディレクトリのパスを環境変数 CPATH に追加する。
・ImageMagick のインストールディレクトリ内にある lib ディレクトリのパスを環境変数 LIBRARY_PATH に追加する。
<Webrickでの構築手順>
・C:\redmine> gem install bundler
・C:\redmine> bundle install
・config/database.example.yml をコピーして config/database.yml を作成する。
また、config/database.yml を編集し、"production"環境用のデータベース設定を行う。
====================================
 production:
  adapter: mysql
  database: redmine
  host: localhost
  username: redmine
  password: redmine
====================================
・以下のサイトからダウンロードしたlibmysql.dllをC:\Ruby\binにコピーする。
http://www.dll-files.com/dllindex/dll-files.shtml?libmysql

・C:\Program Files\ImageMagick-6.5.6-Q8\CORE_RL_magick_.dllをC:\Ruby\binにコピーする。

・C:\redmine> rake generate_secret_token
・C:\redmine> rake db:migrate RAILS_ENV=production
・C:\redmine> rake redmine:load_default_data RAILS_ENV=production
Select language: ar, bg, bs, ca, cs, da, de, el, en, en-GB, es, et, eu, fa, fi,fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mk, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sq, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en] ja
====================================
Default configuration data loaded.

・C:\redmine> ruby script/rails server webrick -e production
[Ctrl] + Cで閉じる。

<Mongrelでの構築手順>
・C:\redmine> gem install mongrel --pre
・C:\redmine\gemfileに以下を追記。
gem 'mongrel', '>= 1.2.0.pre2'
・C:\redmine> ruby script/rails server mongrel -e production
[Ctrl] + Cで閉じる。
・自動起動させたいと考え、管理者権限でDOCコマンドを起動して、以下を実行する。
C:\redmine> mongrel_rails service::install -N "Redmine" -c "C:\redmine" -p 3000 -e production

・MySQLとの依存関係を持たせたいので、管理者権限でDOCコマンドを起動して、以下を実行する。
C:\redmine> sc config Redmine start= auto depend= MySql55

・但し、自動起動は不可の模様。C:\redmine\log\mongrel.logより
 C:/Ruby/lib/ruby/gems/1.8/gems/activesupport-3.2.8/lib/active_support/dependencies.rb:251:
 in `require': no such file to load -- dispatcher (LoadError)

 ★unicorn、passengerも同様、Windowsでは動かない。

<thinでの構築手順>
・C:\redmine\gemfileに以下を追記。
gem 'thin'
・C:\redmine> bundle install
・C:\redmine> ruby script\rails server thin -e production
[Ctrl] + Cで閉じる。
・自動起動させたいと考え、http://www.microsoft.com/en-us/download/details.aspx?id=17657より、rktools.exeをダウンロードして、インストールする。

・管理者権限でDOCコマンドを起動して、以下を実行する。
C:\redmine> "C:\Program Files\ Resource Kits\Tools\INSTSRV.EXE" _service "C:\Program Files\Windows Resource Kits\Tools\SRVANY.EXE"

・regeditを実行して、レジストリを編集する。

1.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\redmine_serviceに、Parametersという名前のキーを追加する
2.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\redmine_service\Parametersに、Application、AppParameters、AppDirectoryという名前の文字列値を新規作成する
Applicationは、Ruby.exeのフルパス。例えば、C:\Ruby\bin\ruby.exe
AppParametersは、thinとthinに渡すパラメータ。例えば、C:\Ruby\bin\ start -p 3000 -e production
AppDirectoryは、redmineをインストールした場所。例えば、C:\redmine

・MySQLとの依存関係を持たせたいので、管理者権限でDOCコマンドを起動して、以下を実行する。
C:\redmine> sc config redmine_service start= auto depend= MySql55
・リブートする。

<subdirectory化> ※rails3のみ
・C:\redmine\config.ruの編集
[変更前]
# This file is used by Rack-based servers to start the application.
require ::File.expand_path('../config/environment',  __FILE__)
run RedmineApp::Application
[変更後]
# This file is used by Rack-based servers to start the application.
require ::File.expand_path('../config/environment',  __FILE__)
map ENV['RAILS_RELATIVE_URL_ROOT'] || "/" do
  run RedmineApp::Application
end

・C:\redmine\config\environment.rbの編集
最終行に以下を追記
[変更前]
RedmineApp::Application.initialize!
[変更後]
RedmineApp::Application.initialize!
ENV['RAILS_RELATIVE_URL_ROOT'] = "/redmine"

[変更前]
  config.active_support.deprecation = :log
end
・C:\redmine\config\environments\production.rbの編集
最終行より少し前に以下を追記

[変更後]
  config.active_support.deprecation = :log
  config.action_controller.asset_path = "/redmine%s"
end
・C:\redmine> ruby script/rails server thin -e production -p 3000
http://localhost:3000/redmine
でアクセス可能となる。

<Proxy化>
・httpd.confの修正
LoadModule alias_module modules/mod_alias.so
~省略~
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_scgi_module modules/mod_proxy_scgi.so

~省略~
Alias /redmine/ "C:/redmine/public/"
<Directory "C:/redmine/public">
    Options ExecCGI Includes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>
ProxyPass /redmine http://localhost:3000/redmine
ProxyPassReverse /redmine http://localhost:3000/redmine

・apache再起動
http://<FQDN>/redmine
でアクセス可能となる。

2012年5月18日金曜日

Solaris10でDHCPサーバ構築

Solaris10(x86)でDHCPサーバを構築する。

①DNSの起動
bash-3.00# /usr/local/sbin/named -c /usr/local/etc/named.conf

②DHCPサーバの構成
<前提>

DHCPサーバの固定IPアドレスは192.168.10.4とする。

bash-3.00# /usr/sadm/admin/bin/dhcpmgr &
[1] 1287
bash-3.00# Java Accessibility Bridge for GNOME loaded.

・DHCPサーバとして構成を選択して[了解]をクリックする。


・テキストファイルを選択して[次へ]をクリックする。


・/etc/dhcpを入力して[次へ]をクリックする。



・/etc/hostsを選択して[次へ]をクリックする。



・リース期間を1日とし、「クライアントにリースの更新を許可する」にチェックを入れて[次へ]をクリックする。


・DNSドメインに自ドメインが入っていることを確認して、[次へ]をクリックする。



・ネットワークアドレスとサブネットマスクを設定して、[次へ]をクリックする。



・「ネットワークタイプ:ローカルエリア」、「ルータ検索プロトコルを使用」にチェックを入れて、[次へ]をクリックする。



・NISは使わないので、そのまま[次へ]をクリックする。



・NIS+も使わないので、そのまま[次へ]をクリックする。


・画面内容を確認して、[完了]をクリックする。


・しばらく(2~3分)経過後、以下が表示される。



・IPアドレスの割り当て数を指定する。(例:10個)



・開始IPアドレスやクライアントのホスト名のルールを指定する。










・リースタイプは動的とする。







③DHCPクライアントの設定(Solarisの場合)
# touch /etc/dhcp.e1000g0
# shutdown -y -i6 -g0
※/etc/hosts、/etc/netmask、/etc/defaultrouterには設定不要。/etc/hostname.<NIC>と/etc/nodenameの設定は必要。



リブート後の設定状況(クライアント)は以下のとおり。自動でホスト名とIPアドレスが設定される。


④IPアドレス配布状況の確認

・表示再表示より、IPアドレス配布状況の確認が可能。(例:192.168.10.160が割り当て済み)

※IPアドレスの有効期限などが分かる。



・/etc/dhcp配下には管理ファイルが格納されていた。(書式は不明)



<参考>
http://docs.oracle.com/cd/E24845_01/index.html
→Solaris のシステム管理 (IP サービス)

2012年5月9日水曜日

OpenAM10.0でのSAMLメタデータ入出力

OpenAM10.0(on CentOS5.8)にてSAMLメタデータ入出力仕様を調査する。
メタデータはOpenAM画面(以降、画面とする)からもOpenAMコマンド(以降、コマンドとする)からも登録可能。


※コマンドを利用する場合は別途ssoadmをインストールする必要あり。

1.準備
まず、画面よりトラストサークルをsamlcotとして、ホストアイデンティティープロバイダ(IDP)とホストサービスプロバイダ(SP)を作成する。

メタデータはexportmetadata.jspを使って出力可能である。amadminでログイン後、ブラウザのURLに
http://goodjob-idp.openam.net:8080/openam/saml2/jsp/exportmetadata.jsp
http://goodjob-sp.openam.net:8080/openam/saml2/jsp/exportmetadata.jsp
を直打ちしてエキスポートする。

2.画面
OpenAM管理コンソールより、一旦クリーンな状態(IDP、SPが未登録)にする。
ただし、トラストサークルのみ残しておく。
2.1.IDP側での登録
リモートアイデンテティプロバイダ(IDP)を作成する。

2.1.1.アップロード
ローカルPCのメタデータを指定。


[設定] ボタンを押下。化けた。


登録はされている。

2.1.2.URL指定
これはメタデータの交換の時に使う。リモートサービスプロバイダとして、相手(SP側)のURLを指定する。以下のURLを指定。
http://goodjob-sp.openam.net:8080/openam/saml2/jsp/exportmetadata.jsp



2.2.SP側での登録
リモートサービスプロバイダ(SP)を作成する。

2.2.1.アップロード
ローカルPCのメタデータを指定。


[設定] ボタンを押下。化けた。



登録はされている。



2.2.2.URL指定
これはメタデータの交換の時に使う。リモートアイデンティティープロバイダとして、相手(IDP側)のURLを指定する。以下のURLを指定。
http://goodjob-idp.openam.net:8080/openam/saml2/jsp/exportmetadata.jsp


3.コマンド
まず、http://www.forgerock.org/openam.html より ssoAdminTools_10.0.0.zip をダウンロードする。

3.1.ssoadmセットアップ
[root@goodjob-idp src]# mkdir /usr/local/ssoAdminTools_10.0.0
[root@goodjob-idp src]# cd /usr/local/ssoAdminTools_10.0.0
[root@goodjob-idp ssoAdminTools_10.0.0]# unzip ssoAdminTools_10.0.0.zip
[root@goodjob-idp ssoAdminTools_10.0.0]# JAVA_HOME=/usr/java/jdk1.6.0_32
[root@goodjob-idp ssoAdminTools_10.0.0]# export JAVA_HOME
[root@goodjob-idp ssoAdminTools_10.0.0]# ./setup
OpenAM サーバーの設定ファイルのパス [/root/openam]:/var/lib/openam
デバッグディレクトリ [/usr/local/ssoAdminTools_10.0.0/debug]:/var/lib/openam/openam/debug
ログディレクトリ [/usr/local/ssoAdminTools_10.0.0/log]:/var/lib/openam/openam/log
スクリプトは次のディレクトリに正しく設定されています:  /usr/local/ssoAdminTools_10.0.0/openam
デバッグディレクトリは /var/lib/openam/openam/debug です。
ログディレクトリは /var/lib/openam/openam/log です。
この tools.zip のバージョン:  OpenAM 10.0.0 (2012-April-13 10:24)
サーバーインスタンスのバージョン:  OpenAM 10.0.0 (2012-April-13 10:24)
※SPも同様。

--------------------------------------------------------------
3.2.IDPメタデータ出力
[root@goodjob-idp ssoAdminTools_10.0.0] #cd /usr/local/ssoAdminTools_10.0.0/openam/bin
[root@goodjob-idp bin]# vi /tmp/pwd.txt
※IDP側のamadminのパスワードを記載する。
[root@goodjob-idp bin]# chmod 400 /tmp/pwd.txt
[root@goodjob-idp bin]# ./ssoadm create-metadata-templ -y "http://goodjob-idp.openam.com:8080/openam" -u amadmin -f /tmp/pwd.txt -i /idp -m ../idp-standard.xml -x ../idp-extended.xml
レルム {1} のホストエンティティー設定が、ファイル ../idp-extended.xml に書き込まれました。
レルム {1} のホストエンティティー記述子が、ファイル ../idp-standard.xml に書き込まれました。

--------------------------------------------------------------
3.3.SPメタデータ出力 ★やってみたが、これは使えなかった★
[root@goodjob-sp ssoAdminTools_10.0.0] #cd /usr/local/ssoAdminTools_10.0.0/openam/bin
[root@goodjob-sp bin]# vi /tmp/pwd.txt
※SP側のamadminのパスワードを記載する。
[root@goodjob-sp bin]# chmod 400 /tmp/pwd.txt
[root@goodjob-sp bin]# ./ssoadm create-metadata-templ -y "http://goodjob-sp.openam.com:8080/openam" -u amadmin -f /tmp/pwd.txt -i /sp -m ../sp-standard.xml -x ../sp-extended.xml
レルム {1} のホストエンティティー設定が、ファイル ../sp-extended.xml に書き込まれました。
レルム {1} のホストエンティティー記述子が、ファイル ../sp-standard.xml に書き込まれました。

出力したファイルの中身を見たところ、SPのメタデータを<IDPSSODescriptor>として出力してしまう。
※OpenAM 10.0のバグと思われる。IDPとSPをサーバ単位で分けた環境で確認済み。

よって、今回は「1.準備」で取得した
http://goodjob-sp.openam.net:8080/openam/saml2/jsp/exportmetadata.jsp
のメタデータを取得することにする。

3.4.コマンドでの登録
OpenAM管理コンソールより、クリーンな状態(IDP、SPが未登録)にする。

3.4.1.SP側でのトラストサークル作成
[root@goodjob-sp bin]# ./ssoadm create-cot -u amadmin -f /tmp/pwd.txt -t samlcot -e /
トラストサークル samlcot が作成されました。

3.4.2.IDP側でのトラストサークル作成
[root@goodjob-idp bin]# ./ssoadm create-cot -u amadmin -f /tmp/pwd.txt -t samlcot -e /
トラストサークル samlcot が作成されました。

3.4.3.SP側でのSPメタデータ入力
トラストサークルはsamlcotとする。
[root@goodjob-sp bin]# ./ssoadm import-entity -u amadmin -f /tmp/pwd.txt -e / -m ../exportmetadata-sp.xml -t samlcot -c saml2
ファイル ../exportmetadata-sp.xml をインポートしました。

3.4.4.IDP側でのIDPメタデータ入力
トラストサークルはsamlcotとする。
[root@goodjob-idp bin]# ./ssoadm import-entity -u amadmin -f /tmp/pwd.txt -e / -m ../idp-standard.xml -x ../idp-extended.xml  -t samlcot -c saml2
ファイル ../idp-standard.xml をインポートしました。
ファイル ../idp-extended.xml をインポートしました。

3.5.登録確認
3.5.1.IDP側の連携タブ押下時
アクセスできたが、インスタンス(サーブレットコンテナ)再起動は不要?



3.5.2.SP側の連携タブ押下時
アクセスできたが、インスタンス(サーブレットコンテナ)再起動は不要?



4.メタデータ登録のチェック処理

[設定] ボタンのForm文のactionは../task/CreateRemoteIDP(またはCreateRemoteSP)

以下が呼ばれる。
\openam_src_10.0.0\products\federation\openfm\source\com\sun\identity\workflow
\CreateRemoteIDP.java(またはCreateRemoteSP.java)

その中でさらに以下が呼ばれる。
\openam_src_10.0.0\products\federation\openfm\source\com\sun\identity\workflow
\ImportSAML2MetaData.javaのimportData()

この中でメタデータを受け取って、getEntityDescriptorElement()で解析している模様。

<チェック内容>
・メタデータがnullでない。
・メタデータ(ドキュメント)のローカル名がEntityDescriptor、もしくは名前空間URIが"urn:oasis:names:tc:SAML:2.0:metadata"である。
・メタデータの署名検証にて問題なし。
※なお、署名値(<ds:Signature>タグ)がない場合は、エラーとしない。
・名前空間に"urn:oasis:names:tc:SAML:2.0:metadata"を持つ<RoleDescriptor>タグを取得し、
名前空間に"http://www.w3.org/2000/xmlns/"を持つtype属性の属性値が"AttributeQueryDescriptorType"、もしくは
":AttributeQueryDescriptorType"で終わる。


<参考>
http://openam.forgerock.org/doc/admin-guide/index.html#chap-federation
および
ssoadmコマンドのヘルプ、OpenAM10.0のソース





2012年5月2日水曜日

Jenkinsのインストール

CentOS5.8にJenkinsをインストールする。

・JDKのインストール
OpenJDK1.6だとWebブラウザアクセス時に「このサーバーは、AWTが正しく設定されていません」が表示されるので、Oracleが提供するJDK1.6を使う。
http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u32-downloads-1594644.html より
jdk-6u32-linux-i586-rpm.binをダウンロードする。
[root@goodjob src]# cp /mnt/hgfs/Desktop/openam/jdk-6u32-linux-i586-rpm.bin /usr/local/src
[root@goodjob src]# ./jdk-6u32-linux-i586-rpm.bin
・JenkinsのRPMパッケージの公開鍵のインポート
[root@goodjob redmine]# wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
--2012-05-02 06:35:07--  http://pkg.jenkins-ci.org/redhat/jenkins.repo
pkg.jenkins-ci.org をDNSに問いあわせています... 63.246.20.93
pkg.jenkins-ci.org|63.246.20.93|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 75 [text/plain]
`/etc/yum.repos.d/jenkins.repo' に保存中
100%[======================================>] 75          --.-K/s 時間 0s     
2012-05-02 06:35:07 (9.47 MB/s) - `/etc/yum.repos.d/jenkins.repo' へ保存完了 [75/75]
[root@goodjob redmine]# rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
・Jenkinsのインストール
[root@goodjob redmine]# yum install jenkins
<省略>
Transaction Summary
================================================================================
Install       1 Package(s)
Upgrade       0 Package(s)
Total download size: 48 M
Is this ok [y/N]: y
Downloading Packages:
jenkins-1.462-1.1.noarch.rpm                             |  48 MB     05:17    
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : jenkins                                                  1/1
warning: /etc/yum.repos.d/jenkins.repo created as /etc/yum.repos.d/jenkins.repo.rpmnew
Installed:
  jenkins.noarch 0:1.462-1.1                                                   
Complete!
[root@goodjob redmine]# /sbin/service jenkins start
Starting Jenkins                                           [  OK  ]

http://goodjob.openam.net:8080 アクセス時に以下が出力される。
※Winstoneという軽量のServletコンテナが搭載されているため起動可能。


・Tomcatのインストール
[root@goodjob src]# wget http://ftp.riken.jp/net/apache/tomcat/tomcat-6/v6.0.35/bin/apache-tomcat-6.0.35.tar.gz
[root@goodjob src]# tar -xzf apache-tomcat-6.0.35.tar.gz
[root@goodjob src]# mv apache-tomcat-6.0.35 /opt/tomcat6
[root@goodjob src]# /usr/sbin/useradd -d /opt/tomcat6 -s /sbin/nologin tomcat
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
[root@goodjob src]# chown -R tomcat /opt/tomcat6
[root@goodjob src]# cp /opt/tomcat6/bin/commons-daemon-native.tar.gz /tmp
[root@goodjob src]# cd /tmp
[root@goodjob tmp]# tar -xzf commons-daemon-native.tar.gz
[root@goodjob tmp]# cd commons-daemon-1.0.7-native-src/unix
[root@goodjob unix]# autoconf
[root@goodjob unix]# ./configure --with-java=/usr/java/jdk1.6.0_32
[root@goodjob unix]# make clean
[root@goodjob unix]# make
[root@goodjob unix]# chown tomcat jsvc
[root@goodjob unix]# mv jsvc /opt/tomcat6/bin
[root@goodjob unix]# cd /tmp
[root@goodjob tmp]# rm -rf commons-daemon*
[root@goodjob tmp]# vi /etc/init.d/tomcat6
---------------------------------------------------------------
#!/bin/sh
#
# chkconfig: - 80 20
# description: tomcat
# Source function library.
. /etc/init.d/functions
JAVA_HOME=/usr/java/jdk1.6.0_32
CATALINA_HOME=/opt/tomcat6
TOMCAT_USER=tomcat
TMP_DIR=/tmp
CATALINA_OPTS=
CLASSPATH=\
$JAVA_HOME/lib/tools.jar:\
$CATALINA_HOME/bin/commons-daemon.jar:\
$CATALINA_HOME/bin/bootstrap.jar
PIDFILE=/var/run/tomcat.pid
LOCKFILE=/var/lock/subsys/tomcat
DAEMON=$CATALINA_HOME/bin/jsvc
start(){
    #
    # Start Tomcat
    #
    echo -n "Starting tomcat: "
    $DAEMON \
    -pidfile $PIDFILE \
    -user $TOMCAT_USER \
    -home $JAVA_HOME \
    -Djava.awt.headless=true \
    -Xms1024m -Xmx2048m \
    -Dcatalina.home=$CATALINA_HOME \
    -Djava.io.tmpdir=$TMP_DIR \
    -outfile $CATALINA_HOME/logs/catalina.out \
    -errfile '&1' \
    $CATALINA_OPTS \
    -cp $CLASSPATH \
    org.apache.catalina.startup.Bootstrap
    #
    # To get a verbose JVM
    #-verbose \
    # To get a debug of tomcat.
    #-debug \
    RETVAL=$?
    if [ $RETVAL = 0 ]; then
        echo_success
        touch $LOCKFILE
    else
        echo_failure
    fi
    echo
}
stop(){
    #
    # Stop Tomcat
    #
    echo -n "Shutting down tomcat: "
    $DAEMON \
    -stop \
    -pidfile $PIDFILE \
    org.apache.catalina.startup.Bootstrap
    RETVAL=$?
    if [ $RETVAL = 0 ]; then
        echo_success
        rm -f $PIDFILE $LOCKFILE
    else
        echo_failure
    fi
    echo
}
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        start
        ;;
    status)
        status $DAEMON
        RETVAL=$?
        ;;
    *)
        echo $"Usage: tomcat {start|stop|restart|status}"
        exit 1
        ;;
esac
---------------------------------------------------------------
[root@goodjob tmp]# chmod +x /etc/init.d/tomcat6
[root@goodjob tmp]# /sbin/chkconfig tomcat6 on
[root@goodjob tmp]# /etc/init.d/tomcat6 start
Starting tomcat:                                           [  OK  ]

・TomcatへのJenkins配備
次にhttp://jenkins-ci.org/ よりLatest and greatest (1.462)をクリックして、jenkins.warをダウンロードする。
[root@goodjob tmp]# cd /opt/tomcat6/webapps
[root@goodjob webapps]# wget http://mirrors.jenkins-ci.org/war/latest/jenkins.war
[root@goodjob webapps]# chown -R tomcat jenkins.war
[root@goodjob webapps]# vi /opt/tomcat6/conf/server.xml
・変更前
    <Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
・変更後
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8" />
[root@goodjob webapps]#  /sbin/chkconfig jenkins off
[root@goodjob webapps]#  /sbin/chkconfig --list jenkins
jenkins         0:off   1:off   2:off   3:off   4:off   5:off   6:off
[root@goodjob webapps]# /sbin/service jenkins stop
Shutting down Jenkins                                      [  OK  ]
[root@goodjob webapps]# /etc/init.d/tomcat6 stop
Shutting down tomcat:                                      [  OK  ]
[root@goodjob webapps]# /etc/init.d/tomcat6 start
Starting tomcat:                                           [  OK  ]
http://goodjob.openam.net:8080/ アクセス時に以下が出力される。
※Winstoneという軽量のServletコンテナは使わないため。



また、http://goodjob.openam.net:8080/jenkins/ アクセス時に以下が出力される。





Subversionの設定

CentOS5.8にSubversionをインストールする。

●サーバ
・Subversionのインストール
[root@goodjob src]# yum install subversion
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * epel: ftp.kddilabs.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
Setting up Install Process
Package subversion-1.6.11-7.el5_6.4.i386 already installed and latest version
Nothing to do
・Subversionリポジトリの作成
[root@goodjob src]# mkdir /var/lib/svn
[root@goodjob src]# svnadmin create /var/lib/svn/foo
[root@goodjob src]# chown -R apache:apache /var/lib/svn/foo
[root@goodjob src]# ls -l /var/lib/svn/foo
合計 24
-rw-r--r-- 1 apache apache  229  5月  2 05:29 README.txt
drwxr-xr-x 2 apache apache 4096  5月  2 05:29 conf
drwxr-sr-x 6 apache apache 4096  5月  2 05:29 db
-r--r--r-- 1 apache apache    2  5月  2 05:29 format
drwxr-xr-x 2 apache apache 4096  5月  2 05:29 hooks
drwxr-xr-x 2 apache apache 4096  5月  2 05:29 locks
・WebDAVでのアクセス設定
[root@goodjob src]# yum install mod_dav_svn
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * epel: ftp.kddilabs.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package mod_dav_svn.i386 0:1.6.11-7.el5_6.4 set to be updated
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
 Package             Arch         Version                    Repository    Size
================================================================================
Installing:
 mod_dav_svn         i386         1.6.11-7.el5_6.4           base          78 k
Transaction Summary
================================================================================
Install       1 Package(s)
Upgrade       0 Package(s)
Total download size: 78 k
Is this ok [y/N]: y
Downloading Packages:
mod_dav_svn-1.6.11-7.el5_6.4.i386.rpm                    |  78 kB     00:00    
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : mod_dav_svn                                              1/1
Installed:
  mod_dav_svn.i386 0:1.6.11-7.el5_6.4                                          
Complete!
[root@goodjob src]# vi /etc/httpd/conf/httpd.conf
<Location /svn>
    DAV svn
    SVNParentPath /var/lib/svn
</Location>
[root@goodjob src]# /etc/init.d/httpd stop
httpd を停止中:                                            [  OK  ]
[root@goodjob src]# /etc/init.d/httpd start
httpd を起動中:                                            [  OK  ]
・Basic認証の設定
[root@goodjob src]# touch /etc/httpd/conf/foo_auth_file
[root@goodjob src]# htpasswd /etc/httpd/conf/foo_auth_file goodjob
New password:
Re-type new password:
Adding password for user goodjob
[root@goodjob src]# vi /etc/httpd/conf/httpd.conf
<Location /svn>
    DAV svn
    SVNParentPath /var/lib/svn
    AuthType Basic
    AuthName "svn repository"
    AuthUserFile /etc/httpd/conf/foo_auth_file
    Require valid-user
</Location>
[root@goodjob src]# /etc/init.d/httpd stop
httpd を停止中:                                            [  OK  ]
[root@goodjob src]# /etc/init.d/httpd start
httpd を起動中:                                            [  OK  ]

http://goodjob.openam.net/svn/foo にアクセス時にベーシック認証のダイアログが表示されることを確認する。


ベーシック認証後、WebDAVでリポジトリの情報を閲覧できることを確認する。


新しいプロジェクト(ここではtest)を作成して、リポジトリの設定を行う。








●クライアント
・TortoiseSVNのインストール
http://tortoisesvn.net/downloads.htmlより以下をダウンロードしてインストールする。
TortoiseSVN-1.7.6.22632-win32-svn-1.7.4.msi
LanguagePack_1.7.6.22632-win32-ja.msi
TortoiseSVNでhttp://goodjob.openam.net/svn/foo にアクセス時に認証を聞かれる。



tags、branch、trunkフォルダを作成する。

                                    

redmineのリポジトリとして閲覧可能なことを確認する。







RedmineでOpenID認証

・設定変更
[管理] - [設定] -[認証] より、OpenIDによるログインと登録にチェックをつける。



・OpenIDライブラリのインストール
[root@goodjob ruby-1.9.3-p125]# gem install ruby-openid
Successfully installed ruby-openid-2.1.8
1 gem installed
Installing ri documentation for ruby-openid-2.1.8...
Installing RDoc documentation for ruby-openid-2.1.8...

・Redmineの再起動
[root@goodjob ruby-1.9.3-p125]# /etc/init.d/httpd stop
httpd を停止中:                                            [  OK  ]
[root@goodjob ruby-1.9.3-p125]# /etc/init.d/httpd start
httpd を起動中:                                            [  OK  ]

ログイン画面に [OpenID URL] が表示されていることを確認する。


アカウントを作成する。その際にOpenID URLを指定する。



OpenIDでログインする。



Yahooにはログイン未のため、Yahoo IDとパスワードを入力する。
※この画面はいずれかのRP(ここではYahoo)にログイン済みの場合は表示されない。
 

RP(ここではRedmine)へのOpenID URLの提供に同意する。



Redmineにログインできることを確認する。




Redmineの構築

CentOS5.8上でRedmineの構築を行う。

・Rubyのインストール
[root@goodjob goodjob]# yum groupinstall "Development Tools"
<省略>
Transaction Summary
================================================================================
Install       0 Package(s)
Upgrade       9 Package(s)
Total download size: 8.1 M
Is this ok [y/N]: y
Downloading Packages:
(1/9): rpm-python-4.4.2.3-28.el5_8.i386.rpm              |  61 kB     00:00    
(2/9): popt-1.10.2.3-28.el5_8.i386.rpm                   |  76 kB     00:00    
(3/9): strace-4.5.18-11.el5_8.i386.rpm                   | 172 kB     00:00    
(4/9): systemtap-runtime-1.6-7.el5_8.i386.rpm            | 211 kB     00:00    
(5/9): rpm-build-4.4.2.3-28.el5_8.i386.rpm               | 303 kB     00:00    
(6/9): rpm-libs-4.4.2.3-28.el5_8.i386.rpm                | 929 kB     00:01    
(7/9): rpm-4.4.2.3-28.el5_8.i386.rpm                     | 1.2 MB     00:01    
(8/9): gdb-7.0.1-42.el5.centos.i386.rpm                  | 2.4 MB     00:02    
(9/9): systemtap-1.6-7.el5_8.i386.rpm                    | 2.8 MB     00:03    
--------------------------------------------------------------------------------
Total                                           851 kB/s | 8.1 MB     00:09    
警告: rpmts_HdrFromFdno: ヘッダ V3 DSA signature: NOKEY, key ID e8562897
updates/gpgkey                                           | 1.5 kB     00:00    
Importing GPG key 0xE8562897 "CentOS-5 Key (CentOS 5 Official Signing Key) <centos-5-key@centos.org>" from /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
Is this ok [y/N]: y
<省略>
Complete!
[root@goodjob goodjob]# yum install zlib-devel openssl-devel
<省略>
Transaction Summary
================================================================================
Install       0 Package(s)
Upgrade       2 Package(s)
Total download size: 3.3 M
Is this ok [y/N]: y
Downloading Packages:
(1/2): openssl-0.9.8e-22.el5_8.3.i686.rpm                | 1.5 MB     00:01    
(2/2): openssl-devel-0.9.8e-22.el5_8.3.i386.rpm          | 1.9 MB     00:02    
--------------------------------------------------------------------------------
Total                                           831 kB/s | 3.3 MB     00:04    
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Updating       : openssl                                                  1/4
  Updating       : openssl-devel                                            2/4
  Cleanup        : openssl                                                  3/4
  Cleanup        : openssl-devel                                            4/4
Updated:
  openssl-devel.i386 0:0.9.8e-22.el5_8.3                                       
Dependency Updated:
  openssl.i686 0:0.9.8e-22.el5_8.3                                             
Complete!
[root@goodjob rubygems-1.8.11]# yum install ncurses-devel gdbm-devel openssl-devel zlib-devel readline-devel libyaml-devel
http://www.ruby-lang.org/ja/downloads/からruby-1.9.3-p125.tar.gzをダウンロード
[root@goodjob goodjob]# cp /mnt/hgfs/Desktop/openam/ruby-1.9.3-p125.tar.gz /usr/local/src
[root@goodjob src]# cd ruby-1.9.3-p125
[root@goodjob ruby-1.9.3-p125]# ./configure
[root@goodjob ruby-1.9.3-p125]# make
[root@goodjob ruby-1.9.3-p125]# make install
[root@goodjob ruby-1.9.3-p125]# ruby -v
ruby 1.9.3p125 (2012-02-16 revision 34643) [i686-linux]

・RubyGemsのインストール
http://rubyforge.org/frs/?group_id=126からrubygems-1.8.11.tarをダウンロード
[root@goodjob src]# cp /mnt/hgfs/Desktop/openam/rubygems-1.8.11.tar /usr/local/src
[root@goodjob src]# cd /usr/local/src
[root@goodjob src]# tar xvf rubygems-1.8.11.tar
[root@goodjob src]# cd xvf rubygems-1.8.11
[root@goodjob rubygems-1.8.11]# ruby setup.rb
RubyGems 1.8.11 installed
== 1.8.11 / 2011-10-03
* Bug fix:
  * Deprecate was moved to Gem::Deprecate to stop polluting the top-level
    namespace.

------------------------------------------------------------------------------
RubyGems installed the following executables:
        /usr/local/bin/gem
[root@goodjob rubygems-1.8.11]# gem --version
1.8.11

・Ruby on Ralisのインストール
http://www.redmine.org/projects/redmine/wiki/RedmineInstall
より、Rails 2.3.14をインストールする。
[root@goodjob rubygems-1.8.11]# gem install rails -v 2.3.14
・EPELを使用するための設定
[root@goodjob rubygems-1.8.11]# rpm -Uvh http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/5/i386/epel-release-5-4.noarch.rpm
http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/5/i386/epel-release-5-4.noarch.rpm を取得中
警告: /var/tmp/rpm-xfer.F3SnXg: ヘッダ V3 DSA signature: NOKEY, key ID 217521f6
準備中...                ########################################### [100%]
   1:epel-release           ########################################### [100%]
[root@goodjob rubygems-1.8.11]# yum repolist
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * epel: ftp.kddilabs.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.jaist.ac.jp
epel                                                     | 3.7 kB     00:00    
epel/primary_db                                          | 3.2 MB     00:03    
repo id           repo name                                               status
base              CentOS-5 - Base                                         2,725
epel              Extra Packages for Enterprise Linux 5 - i386            5,486
extras            CentOS-5 - Extras                                         276
updates           CentOS-5 - Updates                                        272
repolist: 8,759
・MySQLのインストール
[root@goodjob rubygems-1.8.11]# yum install mysql mysql-server mysql-devel
<省略>
Transaction Summary
================================================================================
Install       5 Package(s)
Upgrade       0 Package(s)
Total download size: 18 M
Is this ok [y/N]: y
Downloading Packages:
(1/5): perl-DBD-MySQL-3.0007-2.el5.i386.rpm              | 148 kB     00:00    
(2/5): perl-DBI-1.52-2.el5.i386.rpm                      | 600 kB     00:00    
(3/5): mysql-devel-5.0.95-1.el5_7.1.i386.rpm             | 2.4 MB     00:02    
(4/5): mysql-5.0.95-1.el5_7.1.i386.rpm                   | 4.9 MB     00:05    
(5/5): mysql-server-5.0.95-1.el5_7.1.i386.rpm            | 9.8 MB     00:11    
--------------------------------------------------------------------------------
Total                                           801 kB/s |  18 MB     00:22    
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : perl-DBI                                                 1/5
  Installing     : mysql                                                    2/5
  Installing     : perl-DBD-MySQL                                           3/5
  Installing     : mysql-devel                                              4/5
  Installing     : mysql-server                                             5/5
Installed:
  mysql.i386 0:5.0.95-1.el5_7.1           mysql-devel.i386 0:5.0.95-1.el5_7.1  
  mysql-server.i386 0:5.0.95-1.el5_7.1  
Dependency Installed:
  perl-DBD-MySQL.i386 0:3.0007-2.el5         perl-DBI.i386 0:1.52-2.el5       
Complete!
[root@goodjob rubygems-1.8.11]# vi /etc/my.cnf
※★の箇所を追加する。
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
default-character-set=utf8    ★追加
# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
# symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
default-character-set=utf8    ★追加
・MySQLの起動
[root@goodjob rubygems-1.8.11]# /etc/init.d/mysqld start
MySQL データベースを初期化中:  WARNING: The host 'goodjob.openam.net' could not be looked up with resolveip.
This probably means that your libc libraries are not 100 % compatible
with this binary MySQL version. The MySQL daemon, mysqld, should work
normally with the exception that host name resolving will not work.
This means that you should use IP addresses instead of hostnames
when specifying MySQL privileges !
Installing MySQL system tables...
OK
Filling help tables...
OK
To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h goodjob.openam.net password 'new-password'
Alternatively you can run:
/usr/bin/mysql_secure_installation
which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.
See the manual for more instructions.
You can start the MySQL daemon with:
cd /usr ; /usr/bin/mysqld_safe &
You can test the MySQL daemon with mysql-test-run.pl
cd mysql-test ; perl mysql-test-run.pl
Please report any problems with the /usr/bin/mysqlbug script!
The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at http://shop.mysql.com
                                                           [  OK  ]
MySQL を起動中:                                            [  OK  ]
・MySQLのパスワード変更、匿名ユーザの削除
[root@goodjob rubygems-1.8.11]# mysql -uroot mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.0.95 Source distribution
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> update user set password=password('goodjob') where user = 'root';
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3  Changed: 3  Warnings: 0
mysql> delete from user where user = '';
Query OK, 2 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> exit
Bye
・Redmine用ユーザの作成
[root@goodjob rubygems-1.8.11]# mysql -uroot -p
Enter password: goodjob
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.0.95 Source distribution
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> create database redmine default character set utf8;
Query OK, 1 row affected (0.02 sec)
mysql> grant all privileges on redmine.* to 'mysql'@'localhost' identified by 'goodjob';
Query OK, 0 rows affected (0.00 sec)
mysql> exit
Bye
・MySQLの自動起動設定
[root@goodjob rubygems-1.8.11]# /sbin/chkconfig mysqld on
[root@goodjob rubygems-1.8.11]# /sbin/chkconfig --list mysqld
mysqld          0:off   1:off   2:on    3:on    4:on    5:on    6:off
・MySQLのデータベースアクセスライブラリのインストール
[root@goodjob rubygems-1.8.11]# yum install mysql -- --with-mysql-lib=/usr/lib/mysql
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
・ImageMagickのインストール
[root@goodjob src]# wget ftp://ftp.kddlabs.co.jp/graphics/ImageMagick/ImageMagick-6.7.6-8.tar.gz
[root@goodjob src]# gzip -dc ImageMagick-6.7.6-8.tar.gz | tar xvf -
[root@goodjob src]# cd ImageMagick-6.7.6-8
[root@goodjob ImageMagick-6.7.6-8]#  ./configure
[root@goodjob ImageMagick-6.7.6-8]# make
[root@goodjob ImageMagick-6.7.6-8]# make install
・mstcorefontsのインストール
[root@goodjob rubygems-1.8.11]# yum install rpm-build ttmkfdir cabextract
<省略>
Transaction Summary
================================================================================
Install       2 Package(s)
Upgrade       0 Package(s)
Total download size: 93 k
Is this ok [y/N]: y
Downloading Packages:
(1/2): cabextract-1.3-1.el5.i386.rpm                     |  39 kB     00:00    
(2/2): libmspack-0.2-0.1.20100723alpha.el5.i386.rpm      |  53 kB     00:00    
--------------------------------------------------------------------------------
Total                                           142 kB/s |  93 kB     00:00    
警告: rpmts_HdrFromFdno: ヘッダ V3 DSA signature: NOKEY, key ID 217521f6
epel/gpgkey                                              | 1.7 kB     00:00    
Importing GPG key 0x217521F6 "Fedora EPEL <epel@fedoraproject.org>" from /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL
Is this ok [y/N]: y
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : libmspack                                                1/2
  Installing     : cabextract                                               2/2
Installed:
  cabextract.i386 0:1.3-1.el5                                                  
Dependency Installed:
  libmspack.i386 0:0.2-0.1.20100723alpha.el5                                   
Complete!
[root@goodjob msttcorefonts]# mkdir /usr/local/src/msttcorefonts
[root@goodjob msttcorefonts]# cd /usr/local/src/msttcorefonts/
[root@goodjob msttcorefonts]# wget http://corefonts.sourceforge.net/msttcorefonts-2.0-1.spec
[root@goodjob msttcorefonts]# rpmbuild -bb msttcorefonts-2.0-1.spec
[root@goodjob msttcorefonts]# rpm -ivh /usr/src/redhat/RPMS/noarch/msttcorefonts-2.0-1.noarch.rpm
[root@goodjob TrueType]# mkdir -p /usr/share/fonts/default/TrueType
[root@goodjob TrueType]# cd /usr/share/fonts/default/TrueType
[root@goodjob TrueType]# find /usr/share/fonts/msttcorefonts/ -exec ln -s {} \;
・RMagickのインストール
[root@goodjob rubygems-1.8.11]# gem list rmagick --all --remote
[root@goodjob ImageMagick-6.7.6-8]# PATH=/usr/local/bin:$PATH
[root@goodjob ImageMagick-6.7.6-8]# export PATH
[root@goodjob ImageMagick-6.7.6-8]# PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
[root@goodjob ImageMagick-6.7.6-8]# export PKG_CONFIG_PATH
[root@goodjob TrueType]# gem install rmagick --version 2.13.1
[root@goodjob ImageMagick-6.7.6-8]# gem list rmagick
*** LOCAL GEMS ***
rmagick (2.13.1)
・Redmineのダウンロード
http://rubyforge.org/frs/?group_id=1850からredmine-1.4.1.tar.gzをダウンロード
[root@goodjob src]# wget http://rubyforge.org/frs/download.php/76033/redmine-1.4.1.tar.gz
[root@goodjob src]# tar zxvf redmine-1.4.1.tar.gz
[root@goodjob src]# mv redmine-1.4.1 /var/lib/redmine
[root@goodjob src]# chown -R apache:apache /var/lib/redmine
・database.ymlの設定
[root@goodjob src]# cp /var/lib/redmine/config/database.yml.example /var/lib/redmine/config/database.yml
[root@goodjob src]# vi /var/lib/redmine/config/database.yml
<変更前>
production:
  adapter: mysql
  database: redmine
  host: localhost
  username: root
  password:
  encoding: utf8
<変更後>
production:
  adapter: mysql2 ★Ruby1.9系を使う場合
  database: redmine
  host: localhost
  username: mysql
  password: goodjob
  encoding: utf8
・セッション管理用秘密鍵の生成
[root@goodjob src]# cd /var/lib/redmine/
[root@goodjob redmine]# gem install bundler
[root@goodjob redmine]# bundle install --without development test postgresql sqlite
[root@goodjob redmine]# rake generate_session_store
[root@goodjob redmine]# ls config/initializers/session_store.rb
config/initializers/session_store.rb
・データベースの初期化
[root@goodjob redmine]# gem install mysql
[root@goodjob redmine]# cd /usr/local/lib/ruby/gems/1.9.1/gems/mysql-2.8.1
[root@goodjob mysql-2.8.1]# ruby ext/mysql_api/extconf.rb --with-mysql-config=/usr/bin/mysql_config
checking for mysql_ssl_set()... yes
checking for rb_str_set_len()... yes
checking for rb_thread_start_timer()... no
checking for mysql.h... yes
ext/mysql_api/extconf.rb:67: Use RbConfig instead of obsolete and deprecated Config.
creating Makefile
[root@goodjob mysql-2.8.1]# make
compiling ext/mysql_api/mysql.c
linking shared-object mysql_api.so
[root@goodjob mysql-2.8.1]# make install
/usr/bin/install -c -m 0755 mysql_api.so /usr/local/lib/ruby/site_ruby/1.9.1/i686-linux
installing default mysql_api libraries
[root@goodjob redmine]# cd /var/lib/redmine
[root@goodjob redmine]# ln -s /usr/local/lib/ruby/gems/1.9.1/gems/mysql-2.8.1/lib/mysql.rb lib/mysql.rb
[root@goodjob redmine]# rake db:migrate RAILS_ENV=production
[root@goodjob redmine]# rake redmine:load_default_data RAILS_ENV=production
Select language: ar, bg, bs, ca, cs, da, de, el, en, en-GB, es, et, eu, fa, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mk, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en] ja
====================================
Default configuration data loaded.
・configuration.ymlの設定
[root@goodjob redmine]# cd /var/lib/redmine/config
[root@goodjob config]# cp configuration.yml.example configuration.yml
[root@goodjob config]# vi configuration.yml
★以下の箇所を環境に合わせて編集する。
default:
  # Outgoing emails configuration (see examples above)
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      address: smtp.example.net
      port: 25
      domain: example.net
      authentication: :login
      user_name: "redmine@example.net"
      password: "redmine"
・Apacheのインストール
[root@goodjob src]# yum install httpd httpd-devel
<省略>
Transaction Summary
================================================================================
Install       7 Package(s)
Upgrade       1 Package(s)
Total download size: 8.0 M
Is this ok [y/N]: y
Downloading Packages:
(1/8): apr-util-devel-1.2.7-11.el5_5.2.i386.rpm          |  53 kB     00:00    
(2/8): expat-devel-1.95.8-8.3.el5_5.3.i386.rpm           | 132 kB     00:00    
(3/8): httpd-devel-2.2.3-63.el5.centos.1.i386.rpm        | 153 kB     00:00    
(4/8): apr-devel-1.2.7-11.el5_6.5.i386.rpm               | 233 kB     00:00    
(5/8): httpd-2.2.3-63.el5.centos.1.i386.rpm              | 1.2 MB     00:01    
(6/8): cyrus-sasl-devel-2.1.22-5.el5_4.3.i386.rpm        | 1.4 MB     00:01    
(7/8): db4-devel-4.3.29-10.el5_5.2.i386.rpm              | 1.9 MB     00:02    
(8/8): openldap-devel-2.3.43-25.el5.i386.rpm             | 2.9 MB     00:03    
--------------------------------------------------------------------------------
Total                                           720 kB/s | 8.0 MB     00:11    
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Updating       : httpd                                                    1/9
  Installing     : cyrus-sasl-devel                                         2/9
  Installing     : apr-devel                                                3/9
  Installing     : openldap-devel                                           4/9
  Installing     : expat-devel                                              5/9
  Installing     : db4-devel                                                6/9
  Installing     : apr-util-devel                                           7/9
  Installing     : httpd-devel                                              8/9
  Cleanup        : httpd                                                    9/9
Installed:
  httpd-devel.i386 0:2.2.3-63.el5.centos.1                                     
Dependency Installed:
  apr-devel.i386 0:1.2.7-11.el5_6.5                                            
  apr-util-devel.i386 0:1.2.7-11.el5_5.2                                       
  cyrus-sasl-devel.i386 0:2.1.22-5.el5_4.3                                     
  db4-devel.i386 0:4.3.29-10.el5_5.2                                           
  expat-devel.i386 0:1.95.8-8.3.el5_5.3                                        
  openldap-devel.i386 0:2.3.43-25.el5                                          
Updated:
  httpd.i386 0:2.2.3-63.el5.centos.1                                           
Complete!
[root@goodjob src]# /sbin/chkconfig httpd on
[root@goodjob src]# /sbin/chkconfig --list httpd
httpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off
・Passengerのインストール
[root@goodjob src]# gem install passenger
[root@goodjob src]# yum install curl-devel
[root@goodjob src]# passenger-install-apache2-module
・Apache+Passenger上でRedmine動作設定
[root@goodjob src]# vi /etc/httpd/conf/httpd.conf
<追記>
<VirtualHost *:80>
    ServerName goodjob.openam.net
    DocumentRoot /var/www/html
    RailsBaseURI /redmine
</VirtualHost>
[root@goodjob src]# vi /etc/httpd/conf.d/passenger.conf
# Passengerの基本設定。
# passenger-install-apache2-module --snippet を実行して表示される設定を使用。
# 環境によって設定値が異なりますので以下の3行はそのまま転記しないでください。
#
LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.12
/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.12
PassengerRuby /usr/local/bin/ruby
# Passengerが追加するHTTPヘッダを削除するための設定(任意)。
#
Header always unset "X-Powered-By"
Header always unset "X-Rack-Cache"
Header always unset "X-Content-Digest"
Header always unset "X-Runtime"
# 必要に応じてPassengerのチューニングのための設定を追加(任意)。
#
PassengerMaxPoolSize 20
PassengerMaxInstancesPerApp 4
PassengerPoolIdleTime 3600
PassengerUseGlobalQueue on
PassengerHighPerformance on
PassengerStatThrottleRate 10
RailsSpawnMethod smart
RailsAppSpawnerIdleTime 86400
RailsFrameworkSpawnerIdleTime 0
<変更>
#ServerName www.exapmple.com:80
ServerName goodjob.openam.net:80
[root@goodjob src]# ln -s /var/lib/redmine/public /var/www/html/redmine
・SELinuxを利用している場合の設定変更
[root@goodjob src]# passenger-config --root
/usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.12
[root@goodjob src]# chcon -R -h -t httpd_sys_content_t /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.12
[root@goodjob redmine]# vi /etc/selinux/config
SELINUX=enforcing

SELINUX=disabled
・Redmineの起動
[root@goodjob src]# /etc/init.d/httpd start
・ファイアウォールの停止
[root@goodjob src]# /etc/rc.d/init.d/iptables stop
・OS起動時にファイアウォールが起動しないように設定
[root@goodjob src]# /sbin/chkconfig iptables off

http://goodjob.openam.net/redmineにアクセスし、以下が表示されることを確認する。




<参考>
http://www.os.cis.iwate-u.ac.jp/wikky/wikky.cgi?redmine::Chapter3_%E7%AE%A1%E7%90%86%E8%80%85%E7%B7%A8