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