2013/07/15

JenkinsをApache経由でアクセス可能にする

Jenkinsを単独サービスでインストール後にApache経由でアクセス可能に設定を変更する手順について説明します。
インストール時に単独サービスとして起動する設定にすると、URLのプレフィックスの設定を変更する手段が管理コンソール上でみつからなかったので、設定ファイルを直接変更する必要があるようです。
ちょっといまいちですね。

前提条件

環境とかインストールの条件は以下の通りです。
  • OS:CentOS release 6.3 (Final)
  • Jenkins:1.522
  • インストール形式:RPM
条件が異なると設定ファイルの方法などことなる可能性があるのでご注意ください。

手順

手順の流れは以下の通りです。

  • Jenkinsの設定ファイルにURLのプレフィックスを設定
  • Jenkinsの再起動
  • Apacheの設定変更

Jenkinsの設定ファイルにURLのプレフィックスを設定

ここではURLを「http://Jenkinsサーバアドレス:8080/」形式から「http://Jenkinsサーバアドレス:8080/jenkins」形式に変更するという前提で説明します。
Jenkinsの設定ファイル/etc/sysconfig/jenkinsにURLのプレフィックスの設定を追加します。ファイルの最下段に以下の設定とおり設定を行います。

## Type:        string
## Default:     ""
## ServiceRestart: jenkins
#
# Pass arbitrary arguments to Jenkins.
# Full option list: java -jar jenkins.war --help
#
JENKINS_ARGS=""
## Type:        string
## Default:     ""
## ServiceRestart: jenkins
#
# Pass arbitrary arguments to Jenkins.
# Full option list: java -jar jenkins.war --help
#
JENKINS_ARGS="--prefix=/jenkins"

Jenkinsの再起動

Jenkinsの管理画面にある設定の再読み込みを行っても上記で変更したURLのプレフィックスは起動パラメータなので反映されないので再起動を行います。

# /etc/init.d/jenkins restart
設定が反映されているか確認します。
# ps -ef | grep jenkins
jenkins  25090     1 99 05:41 ?        00:00:32 /usr/bin/java ~略~ --handlerCountMaxIdle=20 --prefix=/jenkins
ブラウザから「http://Jenkinsサーバアドレス:8080/jenkins」形式でアクセスし正常に動作することを確認して下さい。

Apacheの設定変更

Apacheに以下のリバースプロキシの設定を行い再起動します。
<ifmodule mod_proxy.c>
ProxyPass /jenkins http://127.0.0.1:8080/jenkins
ProxyPassReverse /jenkins http://127.0.0.1:8080/jenkins
ProxyRequests Off


<proxy "http://127.0.0.1:8080/jenkins/*">
    Order deny,allow
    Allow from all
</proxy>
</ifmodule>

ブラウザから「http://Jenkinsサーバアドレス/jenkins」形式でアクセスし正常に動作することを確認して問題なければ設定完了です。

2013/07/14

MavenのProxy設定

Proxy環境下でMavenを利用する場合、Proxyの設定が必要になります。ここではProxyの設定方法を紹介します。
Proxyの設定は2種類あります。
1つ目はシステム全体に対して設定する場合です。サーバなどはこちらの設定方法を取るべきでしょう。2つ目はユーザ個々に設定する場合です。こちらは開発者ごとにMavenを利用する開発環境で利用する方法になります。

システム全体に対して設定する場合

Mavenをインストールしたディレクトリ(M2_HOME環境変数に設定したディレクトリのことです。以下では${M2_HOME}と記載します。)の配下のconfディレクトリ直下にあるsettings.xmlに以下の内容でProxyの設定を追加します。


  ...
  
   
      true
      http
      プロキシサーバのアドレス
      プロキシサーバのポート番号
      ユーザID
      パスワード
      192.168.0.*|*.xxxx.com
    
  
  ...


ユーザ個別に設定する場合

ユーザ個別に設定する場合は、ユーザのホームディレクトリ(HOME環境変数がさしているディレクトリのことです。以下では${HOME}と記載します。)の配下にsettings.xmlファイルを作成し以下の内容を記載します。


  
   
      true
      http
      プロキシサーバのアドレス
      プロキシサーバのポート番号
      ユーザID
      パスワード
      192.168.0.*|*.xxxx.com
    
  

内容的には、システム全体に追加設定するときと全く同じ内容になります。システム全体に対する設定はsettings.xmlが既存のため、追加する形になりますが、ユーザ個別に設定する場合は既知の設定はないため、プロキシ関連の設定のみをファイルに記載する形になります。

2013/07/13

Jenkins インストール

Jenkins をLinuxにインストール手順について説明します。

環境

対象となる環境は以下の通りです。
  • CentOS release 6.4 (Final)

Jenkins バージョン

今回インストールするバージョンは以下の通りです。

  • 1.522

インストール手順

JenkinsはRPM形式で提供されているので今回はRPM版をインストールする手順について記載します。
まず最新のRPMをダウンロードします。
# wget http://pkg.jenkins-ci.org/redhat/jenkins-1.522-1.1.noarch.rpm
続いてrpmコマンドを使ってインストールを行います。
# rpm -ivh jenkins-1.522-1.1.noarch.rpm
サービスを起動して動作確認を行います。
# /etc/init.d/jenkins start
Starting Jenkins                                           [  OK  ]
ブラウザからアクセス以下の画面が表示されていることを確認します。なお、デフォルトではポート8080でサービスが起動しています。


Ruby インストール

Ruby をLinuxにソースコードからインストール手順について説明します。

環境

対象となる環境は以下の通りです。

  • CentOS release 6.4 (Final)

Ruby バージョン

インストールするRubyのバージョンは1.9.3系です。

インストール手順

大体の流れは次の通りです。
  1. ビルドに必要なツールの導入
  2. 依存するライブラリの導入
  3. Rubyのビルド

ビルドに必要なツール

ビルドに必要なツールはEPEL(エンタープライズ Linux 用の拡張パッケージ)で提供されているDevelopment Toolsパッケージを導入してさくっと終わらせてしまいます。
以下のURLからepel-release-6-8.noarch.rpmをダウンロードします。

  • http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
# wget http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
# rpm -ivh epel-release-6-8.noarch.rpm
警告: epel-release-6-8.noarch.rpm: ヘッダ V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
準備中...                ########################################### [100%]
   1:epel-release           ########################################### [100%]
EPELからDevelopment Toolsパッケージを導入します。
yum groupinstall "Development Tools"

依存するライブラリの導入

依存するライブラリは利用するgemなんかでも変わってくると思うので必要なものを導入するという感じになります。
私はいつも以下のようなものをあらかじめ導入してます。
  • openssl
  • openssl-devel
  • readline
  • readline-devel
  • zlib
  • zlib-devel
  • curl
  • curl-devel
  • libyaml
  • libyaml-devel
  • ImageMagick
  • ImageMagick-devel

Rubyのビルド

以下のURLからRubyのソースコードをダウンロードし、ビルド、インストールを行います。
ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p448.tar.gz
# cd /usr/local/src
# wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p448.tar.gz
# tar zxvf ./ruby-1.9.3-p448.tar.gz
# cd ./ruby-1.9.3-p448
# ./configure | tee configure.log
# make | tee make.log
# make install | tee install.log

2013/06/25

複数バージョンのNode.jsを管理

ChangeLog を見ると分かりますが Node.js はバージョン・アップが頻繁に行われるため、これに対応して自身の環境の Node.js をバージョン・アップしていくのは非常に大変な作業です。また、昔作ったアプリを動かしたいので古いバージョンに戻したいといったシーンもあるかもしれません。
そこで複数バージョンのNode.jsを管理したいということになるわけですが、Ruby でそういった仕組ができてたのに端を発し Node.js でも同じようなことが可能になっています。

今回はWindows環境で利用可能な nodist についてインストールから使い方までを纏めようと思います。(なお、この手のツールは他にもあるようなので、調査したらまた記事を書きたいと思います。)

インストール

nodist は GitHub上のこちらのリポジトリで公開されていますので git clone でツールを取得します。
> git clone https://github.com/marcelklehr/nodist.git
次にnodistのルート配下のbinにパスをとおします。 最後にnodistのupdateコマンドを実行し依存するnodistが依存するNPMのライブラリを取得します。
> nodist update
ここまででインストールは完了です。 以下を実行し最新のバージョンが表示されることを確認します。
> nodist -v
0.3.7

Node.jsの管理

インストーラが完了したら Node.js を管理していきます。
まずは、利用可能なバージョンを確認します。
> nodist dist
  0.5.1
  0.5.2
  ~
  0.11.1
  0.11.2
非常にたくさんのバージョンが表示されます。 ここからもリリースが頻繁に行われている様相がうかがえます。 なお、コマンドの省略系でしょうか?以下でも同様の動作をします。
> nodist ds
  0.5.1
  0.5.2
  ~
  0.11.1
  0.11.2
確認できた最新バージョンの Node.js をインストールしてみます。 インストールはaddコマンド、あるいは、+コマンドを利用します。
> nodist add 0.11.2
0.11.2
インストールが完了したので、インストールされている Node.js のバージョンを確認してみましょう。 コマンドはlist、または、lsを利用します。なお、コマンドの指定が無い場合、インストール済みのバージョンが表示されるのでこれも合わせて確認してみましょう。
> nodist list
  0.11.2
> nodist ls
  0.11.2
> nodist
  0.11.2
今度は古いバージョン 0.10.12 をインストールしてみます。
> nodist add 0.10.12
  0.10.12
> nodist
  0.10.12
  0.11.2
ローカル環境に2つのバージョンをインストールできたので、利用するバージョンの切り替えをやってみます。 まず、0.10.12 をアクティベートしてみます。
 > nodist 0.10.12
  0.10.12
たったこれだけです。切り替わっているかを確認するには以下を実行します。
 > node -v
v0.10.12
ちゃんと指定した 0.10.12 が有効になっているのが確認できると思います。 では、今度は 0.11.2 に切り替えてみたいと思います。
 > nodist 0.11.2
  0.11.2
 > node -v
v0.11.2
0.11.2に切り替わっているのが確認できると思います。 

このように簡単にバージョンを切り替えられるのは非常に便利ですね。サーバサイドJavaScriptだけでなく、Node.js 上で動作するgrantやbowerといったJavaScriptの各種ツールが流行っているのでこういったツールは重宝するのではないでしょうか。