ラベル its の投稿を表示しています。 すべての投稿を表示
ラベル its の投稿を表示しています。 すべての投稿を表示

2012年11月10日土曜日

redmine code reviewプラグインのインストール

code review プラグインを入れたので、とりあえず書いておく。


redmine2.0.4にbacklogs0.9.26が入っている状態からインストール
まず、redmine_code_review0.6.0はredmine2.1が要るので入りません。0.5.0を入れます。
  • redmine_code_review-0.5.0をget
# wget https://bitbucket.org/haru_iida/redmine_code_review/downloads/redmine_code_review-0.5.0.zip
  • pluginsディレクトリに展開
  • bundle install
# bundle install --without development test postgresql sqlite
You cannot specify the same gem twice with different version requirements. You specified: simplecov (~> 0.6) and simplecov (>= 0)
と言われる。
redmine_backlogsのGemfileには "~> 0.6"が指定されているが、redmine_code_reviewの方はされていない。
redmine_code_review/Gemfileも
gem "simplecov", "~>0.6"
に書き換えてやりなおし。
  • マイグレート
# RAILS_ENV=production rake db:migrate_plugins 
  • オーナーをapacheに
# chown -R apache:apache redmineのインストールディレクトリ

なんかするたびにchownするのも忘れそうなので、apacheにsu出来るようにしようかな。
そもそもapacheとかmysqlの設定が/etcあたりにあったりするLinuxのデフォルト設定がいまだに違和感のあるSunOS/Solaris育ち。でもLinuxに慣れた人に触ってもらう事を考えるとあまりいじらない方がいいのかなと…

インストール作業はこれで終了。 

2012年11月9日金曜日

redmineとjenkinsの仕込み #4(SSL化編)


#3の続き。
redmineとjenkinsのSSL化


18. mod_sslのインストール

  • rootになる
  • mod_sslをインストール
#yum -y install mod_ssl

19. オレオレ証明書を作る 

  • 証明書の有効期限を長くする
/etc/pki/tls/certs/Makefileに "-days 365" ってのが3カ所あるので書き換える
  • 証明書を作る 
# make server.crt
umask 77 ; \
        /usr/bin/openssl genrsa -aes128 2048 > server.key
Generating RSA private key, 2048 bit long modulus
................+++
...................+++
e is 65537 (0x10001)
Enter pass phrase:
Verifying - Enter pass phrase:
umask 77 ; \
        /usr/bin/openssl req -utf8 -new -key server.key -x509 -days 3650 -out server.crt -set_serial 0
Enter pass phrase for server.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:Aichi
Locality Name (eg, city) [Default City]:Nagoya
Organization Name (eg, company) [Default Company Ltd]:ONE STEP BEYOND
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:ホスト名
Email Address []:メールアドレス
  • apache起動時にパスワードを要求されないようにサーバー用秘密鍵からパスワード削除
# openssl rsa -in server.key -out server.key

20. apacheの設定 

  • ssl用のDocumentRootを作る
/var/www/secure としてみた
# mkdir /var/www/secure
  • redmineのシンボリックリンクこっちに張る
# ln -s /usr/local/redmine-2.0.4/public /var/www/secure/redmine
  • 元のシンボリックリンクを消す 
# rm /var/www/html/redmine
  • 設定ファイル /etc/httpd/conf.d/ssl.conf はサンプルをベースに、以下の3カ所を編集
DocumentRoot "/var/www/secure/html"
SSLCertificateFile /etc/pki/tls/certs/server.crt
SSLCertificateKeyFile /etc/pki/tls/certs/server.key
  • jenkinsの設定をSSLの方に引っ越す 
/etc/httpd/conf.d/ajp.confの中身を/etc/httpd/conf.d/ssl.confに引っ越し
/etc/httpd/conf.d/ajp.confを削除
  • オーナーをapacheに
# chown -R apache:apache /var/www/secure 
  • apche再起動
# /etc/init.d/httpd restart
  • EC2のSecurityGroupでHTTPSを開ける
  • httpsでアクセスできるかテスト
https://ホストですがな/redmine
  • /redmineと/jenkinsはhttpでアクセスがあったらhttpsに飛ばす設定にする
/etc/httpd/conf.d/rewire.conf を以下の内容で作成
<IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteLog "logs/rewrite_log"
      RewriteLogLevel 0
      RewriteCond %{SERVER_PORT} !^443$
      RewriteRule ^/redmine https://%{HTTP_HOST}/redmine [L,R]
      RewriteRule ^/jenkins https://%{HTTP_HOST}/jenkins [L,R]
</IfModule>
  • apache再起動
# /etc/init.d/httpd restart
  •  ちゃんとrewriteされるかをテスト
http://ホストですがな/redmine
http://ホストですがな/jenkins
でアクセスしたら
https://ホストですがな/redmine
https://ホストですがな/jenkins
になればOK。

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のユーザーデータベース』を選択 権限管理は『行列による権限設定』を選択
  • さっき作った管理者ユーザに権限を付与
  • 匿名ユーザから全権限を削除



今日はここまで。


2012年11月8日木曜日

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

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


6. ruby のインストール

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

7. mysqlセットアップ

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

8. redmineのインストール

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

9.Apacheの設定

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

10. backlogsを入れる

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


今日はここまで。

2012年11月7日水曜日

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

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

1. EC2 Instanceを作る

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

2. ユーザの設定

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

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

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

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

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

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

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

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


今日はここまで。