Friday, November 9, 2012

redmineとjenkinsの仕込み #3(jenkins on glassfish編)

#2の続き。
jenkinsを仕込む。アプリケーションサーバはglassfishを使う。
glassfishを選択した理由は何となく。


11. JDK7を入れる

  • Linux x64のtarballをsunじゃなくてOracleのサイトからダウンロード、/usr/local に展開。
  • #ln -s /usr/local/jdk1.7.0_09 /usr/local/java (←いつもデフォルトのJAVA_HOMEをこれにしている)
  • JAVA_HOMEを /usr/local/java にする
  • PATHの先頭に $JAVA_HOME/bin を入れる

13. glassfish実行ユーザを作成する

rootで動かすのはちょっとね。
# adduser glassfish

14 .glassfishを入れる

  • multilingualインストーラーパッケージをget
#wget http://download.java.net/glassfish/3.1.2/release/glassfish-3.1.2-unix-ml.sh
  • CUIインストールのためにanswerファイルをあらかじめ作る
InstallHome.directory.INSTALL_HOME=/usr/local/glassfish-3.1.2
License.license.ACCEPT_LICENSE=0
RegistrationOptions.regoptions.CREATE_NEWACCT=CREATE_NEWACCT
RegistrationOptions.regoptions.DUMMY_PROP=
RegistrationOptions.regoptions.SKIP_REGISTRATION=SKIP_REGISTRATION
RegistrationOptions.regoptions.USERNAME=
RegistrationOptions.regoptions.USERPASSWORD=
RegistrationOptions.regoptions.USE_EXISTINGACCT=USE_EXISTINGACCT
SOAccountCreation.accountinfo.COMPANYNAME=
SOAccountCreation.accountinfo.COUNTRY=
SOAccountCreation.accountinfo.COUNTRY_DROP_DOWN=
SOAccountCreation.accountinfo.EMAIL=
SOAccountCreation.accountinfo.FIRSTNAME=
SOAccountCreation.accountinfo.LASTNAME=
SOAccountCreation.accountinfo.PASSWORD=
SOAccountCreation.accountinfo.REENTERPASSWORD=
glassfish.Administration.ADMIN_PASSWORD=管理者パスワード
glassfish.Administration.ADMIN_PORT=4848
glassfish.Administration.ADMIN_USER=管理者ユーザ名
glassfish.Administration.ANONYMOUS=ANONYMOUS
glassfish.Administration.LOGIN_MODE=true
glassfish.Administration.HTTP_PORT=8888
glassfish.Administration.NON_ANONYMOUS=NON_ANONYMOUS
updatetool.Configuration.ALLOW_UPDATE_CHECK=true
updatetool.Configuration.BOOTSTRAP_UPDATETOOL=true
updatetool.Configuration.PROXY_HOST=
updatetool.Configuration.PROXY_PORT=
  • インストーラー実行
# sh ./glassfish-3.1.2-unix-ml.sh -a answer -s
SETTING UP DOMAIN FOR SILENT INSTALL...
Executing /usr/local/glassfish-3.1.2/glassfish/bin/asadmin --user admin --passwordfile - create-domain --savelogin --checkports=false --adminport 4848 --instanceport 8080 --domainproperties=jms.port=7676:domain.jmxPort=8686:orb.listener.port=3700:http.ssl.port=8181:orb.ssl.port=3820:orb.mutualauth.port=3920 domain1
/usr/local/glassfish-3.1.2/glassfish/bin/asadmin --user admin --passwordfile - create-domain --savelogin --checkports=false --adminport 4848 --instanceport 8080 --domainproperties=jms.port=7676:domain.jmxPort=8686:orb.listener.port=3700:http.ssl.port=8181:orb.ssl.port=3820:orb.mutualauth.port=3920 domain1 Adminのポート4848を使用しています。
HTTP Instanceのポート8080を使用しています。
JMSのポート7676を使用しています。
IIOPのポート3700を使用しています。
HTTP_SSLのポート8181を使用しています。
IIOP_SSLのポート3820を使用しています。
IIOP_MUTUALAUTHのポート3920を使用しています。
JMX_ADMINのポート8686を使用しています。
OSGI_SHELLのデフォルト・ポート6666を使用しています。
JAVA_DEBUGGERのデフォルト・ポート9009を使用しています。
指定されたロケール[ja_JP]のファイルが[/usr/local/glassfish-3.1.2/glassfish/lib/templates/locales/ja_JP/index.html]に見つかりませんでした。デフォルト(en_US)のindex.htmlをかわりに使用します。
自己署名付きX.509サーバー証明書の識別名です:
[CN=ip-10-132-18-23.ap-northeast-1.compute.internal,OU=GlassFish,O=Oracle Corporation,L=Santa Clara,ST=California,C=US]
自己署名付きX.509サーバー証明書の識別名です:
[CN=ip-10-132-18-23.ap-northeast-1.compute.internal-instance,OU=GlassFish,O=Oracle Corporation,L=Santa Clara,ST=California,C=US]
ドメインの初期化子が見つかりません。カスタマイズの手順を省略します
ドメインdomain1が作成されました。
ドメインdomain1の管理ポートは4848です。
ドメインdomain1によって、パスワードなしでユーザー"admin"として管理ログインできます。
このドメイン[domain1]の管理ユーザー名[admin]
に関連するログイン情報が
[/root/.asadminpass]に正常に格納されました。
このファイルが保護されたままであることを確認します。
このファイルに格納された情報は、
このドメインを管理するためにasadminコマンドによって使用されます。
コマンドcreate-domainは正常に実行されました。
  • というわけで、ADMIN_USER,ADMIN_PASSWORD,HTTP_PORTとかがなんだか無視されてるみたいだ。「ドメインの初期化子が見つかりません。カスタマイズの手順を省略します」ってのがどうアレみたい。うーんまあいいや。
  • glassfishユーザのモノにする
# chown -R glassfish:glassfish /usr/local/glassfish-3.1.2
  • EC2のSecurity Groupで、4848を開ける。
    8080は空けないで、ajpを使ってapacheを通して公開することにする。(そうしなければならない理由もないけどね)
  • domain1を起動
glassfishユーザになる
.bashrcで/usr/local/glassfish-3.1.2/bin をPATHに追加
$ asadmin start-domain domain1
  • 管理コンソールをSSLにする
4848にアクセスすると
Secure Admin must be enabled to access the DAS remotely.
って言われる。リモートからの管理コンソール利用はenable-secure-admin を指定しないといけないと。
コンソールで以下のコマンドを実行する
# asadmin --host localhost --port 4848 enable-secure-admin
remote failure: 少なくとも1つの管理ユーザーに空のパスワードがありますが、セキュ リティ保護された管理では許可されません。change-admin-passwordコマンドまたは管理 コンソールを使用して、空でないパスワードを管理アカウントに作成してください。
って言われるので、
$ asadmin --host localhost --port 4848 change-admin-password
でパスワードを設定。そしてやり直し。
$ asadmin --host localhost --port 4848 enable-secure-admin
  • domain1 を再起動してアクセスの確認 
# asadmin restart-domain domain1
これで http://インストールしたホスト:4848 にアクセスすると https://インストールしたホスト:4848 にリダイレクトされるようになる。ログインできることを確認。 
  • rootに戻って起動スクリプトを作る /etc/init.d/glassfish-domain1
#!/bin/bash
#
# glassfish:          Startup script for Glassfish Application Server.
#
# chkconfig: 3 80 05
# description:      Startup script for domain1 of Glassfish Application Server.
GLASSFISH_HOME=/usr/local/glassfish-3.1.2
export GLASSFISH_HOME
JAVA_HOME=/usr/local/java
export JAVA_HOME
GLASSFISH_OWNER=glassfish
export GLASSFISH_OWNER
start() {
        echo -n "Starting Glassfish: "
        su $GLASSFISH_OWNER -c "$GLASSFISH_HOME/bin/asadmin start-domain domain1
> /dev/null 2>&1"
}
stop() {
        echo -n "Stopping Glassfish: "
        su $GLASSFISH_OWNER -c "$GLASSFISH_HOME/bin/asadmin stop-domain domain1
> /dev/null 2>&1"
}
restart() {
        echo -n "Stopping Glassfish: "
        su $GLASSFISH_OWNER -c "$GLASSFISH_HOME/bin/asadmin restart-domain domai
n1 > /dev/null 2>&1"
}
# See how we were called.
case "$1" in
        start)
                start
                ;;
        stop)
                stop
                ;;
        restart)
                stop
                start
                ;;
        *)
                echo $"Usage: glassfish {start|stop|restart}"
                exit
esac
  • OS起動時設定
# chkconfig glassfish-domain1 on

15. jenkinsをデプロイする

  • jenkins.warをhttp://jenkins-ci.org/ からgetする
  • glassfishの管理コンソールにログイン
https://ホストですがな:4848
  • jenkins.warを deployする

16. mod_proxy_ajpでapache連携するための設定

  • またglassfishユーザになって以下のコマンド
$ asadmin create-network-listener --listenerport 8009 --protocol http-listener-1 --jkenabled true jk-connector
  • rootに戻る 
  • /etd/httpd/conf.d/ajp.conf を作る
<Location /jenkins>
  ProxyPass ajp://localhost:8009/jenkins
</Location>
  • httpdを再起動
  • http://ホストですがな/jenkins にアクセスしてみる

17. Jenkinsのセキュリティを有効化

  • Jenkinsの管理 > ユーザーの管理 で管理者用ユーザを作る
  • Jenkinsの管理 > システムの設定 でセキュリティを有効にする
  • 『セキュリティの有効化』をチェック アクセス制御は『enkinsのユーザーデータベース』を選択 権限管理は『行列による権限設定』を選択
  • さっき作った管理者ユーザに権限を付与
  • 匿名ユーザから全権限を削除



今日はここまで。


No comments:

Post a Comment