2012年09月

CentOS6.3(さくらVPS)にsbtをインストール

CentOS6.3(さくらVPS)でsbtを使う為の手順です。
Playframeworkを動かすだけならsbtのインストールは不要(playの中に入っている)なのですが、sbt自体も使う機会があるため、インストールを行います。

sbtのインストール方法はこちらを参考にしました。
Getting Started Setup · harrah/xsbt Wiki

手順

1.yumの優先順位をつける為に、yum-prioritiesプラグインをインストール
2.Typesafe Yum Repositoryを追加、RPMの優先順位を設定
3.yumを使いsbtをインストール
4.sbtの日本語の文字化けを解消

yumの優先順位をつける為に、yum-prioritiesプラグインをインストール

$ sudo yum install yum-plugin-priorities
設定が有効になっているか確認しましょう。
$ cat /etc/yum/pluginconf.d/priorities.conf
[main]
enabled = 1
有効になっているようです。

Typesafe Yum Repositoryを追加、Repositoryの優先順位を設定

RPMのアドレスはこちらから最新のものを取得して下さい。
Typesafe Yum Repository
$ wget http://rpm.typesafe.com/typesafe-repo-2.0.0-1.noarch.rpm
$ sudo rpm -ivh typesafe-repo-2.0.0-1.noarch.rpm    (パッケージをインストールする、詳細情報を表示する、進行情報を表示する)
有効になっているか確認します
$ cat /etc/yum.repos.d/typesafe.repo
有効になっているようです。
yumコマンドのRepositoryの優先順位を設定をします。
$ sudo vim /etc/yum.repos.d/CentOS-Base.repo
各設定にpriority=1を追加します。こんな感じです。
RPMforgeリポジトリ導入(RPMforge) - CentOSで自宅サーバー構築

今回インストールしたtypesafeのリポジトリの優先度を下げます。
$ sudo vim  /etc/yum.repos.d/typesafe.repo
適当に低い優先度をつけます。今回は11にしました。また、普段からこのRPMは有効になっている必要は無いので、無効にしてしまいましょう。こうなります。
[typesafe]
name=Typesafe Rpm Repository
baseurl=http://rpm.typesafe.com/
enabled=0
priority= 11
ここでlistコマンドで、設定が有効になっているか確認してみます。
$ yum list | wc -l
14178
$ yum list --enablerepo=typesafe | wc -l
14182
このようにtypesafeのRPMを有効にするとパッケージ個数が増加したことがわかります。正常に動作しているようです。

yumを使いsbtをインストール

準備したyumコマンドでインストールします。
$ sudo yum install --enablerepo=typesafe sbt
実行した結果、次のような結果となりました。
Package sbt-0.11.3-1.noarch.rpm is not signed
パッケージはGPGキーによりサインされているのですが、それが無い、というエラーです。信頼できるはずなので、--nogpgcheckオプションを付けて無視します。
$ sudo yum install --enablerepo=typesafe --nogpgcheck sbt
これでsbtのインストールが完了しました。

sbtの日本語の文字化けを解消

sbtで日本語の文字化けが発生したら、~/.sbtconfigに設定を追加する必要があります。以下のサイトを参照して下さい。
sbt の文字化けを ~/.sbtconfig で直す - YoshioriのBlog

以上です。sbtコマンドで色々やってみましょう。

参考

RPMforgeリポジトリ導入(RPMforge) - CentOSで自宅サーバー構築
Scalaのビルドツールsbtを使ってみる - kaishitaeiichiの日記
CentOS 5.2 で yum の対象リポジトリに RPMforge を追加するには - Tosshi Note
俺とyumとさくらVPS - Perl日誌

Playframework2をCentOS(さくらVPS)上で動かしてデーモン化

こちらの通りにやっていきます。このブログには少し補足した内容を記載していきます。
Play framework 2.0でデーモン化する方法 — Gist
playframework2_logo

ポートをあける

まずPlayframework2がデフォルトでポート9000番を使うので、あけておきましょう。
$sudo vi /etc/sysconfig/iptables
これを追加
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 9000  -j ACCEPT
iptablesを再起動
$ sudo /etc/rc.d/init.d/iptables restart


jsvc

jsvcを用意する部分はこんな感じです。
$ wget http://ftp.meisei-u.ac.jp/mirror/apache/dist//commons/daemon/source/commons-daemon-1.0.10-native-src.tar.gz
$ tar -xzf commons-daemon-1.0.10-native-src.tar.gz
この展開したcommons-daemon-1.0.10-native-src/unix/supportの中にbuildconf.shがあるので、後は先程のURLに記載された通り行います。
$ support/buildconf.sh
$ ./configure
ここで止まりました。内容はこれ。
*** Java compilation tools ***
checking for JDK location... configure: error: Java Home not defined. Rerun with --with-java=... parameter
なのでパラメータをつけて実行。--with-java=<dir>という形式で、<dir>にはJAVA_HOMEのディレクトリを指定。
$ ./configure --with-java=/usr/java/default
通ったのでmake。
$ make
ここでlsすると、jsvcというファイルが生成されたことが確認できます。このjsvcファイルをapp-1.0-SNAPHOSTディレクトリにコピー。
daemon.shを作って実行します。
$ sh daemon.sh start
Invalid Java Home specified
Cannot parse command line arguments
こうなりました。先程のエラーも、JAVA_HOMEに何も設定されていない事が原因なようです。設定します。/etc/profileに追記。(.bash_profileでも良いはず)
$ sudo vim /etc/profile
これらを追記
export JAVA_HOME=/usr/java/default
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
設定を反映させます。
$ source /etc/profile
ここでecho $JAVA_HOMEして、設定したディレクトリが表示されれば問題ありません。

起動スクリプトを用意して実行し、http://yourhost:9000/にアクセスして表示されれば完了です。

参考

Play framework 2.0でデーモン化する方法 — Gist
Javaアプリケーションサーバー構築(Tomcat6) - CentOSで自宅サーバー構築

サイトへのTwitter埋め込み表示のこれまでとこれから(Twitter新APIの話)

 Twitterは2012年9月6日に、Webページにタイムラインを表示する新たな方法を発表しました。この記事では、この新しい方法は今までと何が違うのかについて紹介します。

まとめ

 豊富な機能を持つつぶやき一覧がサイトに簡単に表示できるようになります。さらに、各サイトにつぶやき欄が設置されることになります。しかし色などのカスタマイズ性は落ちました。

これまでのTwitter埋め込み

 主に3通りの方法が存在していました。おそらく全部無くなる方向です。
・方法1 公式に提供されているウィジェットを使う
・方法2 JavaScriptによりTLを表示する
・方法3 JavaScriptと@AnywhereでTL表示したりつぶやく欄を作る

 方法1のウィジェットはこのサイトでも使っていました。こちらです。

タイムライン、検索、お気に入り、リストのどれを表示するか選べます。色やサイズは変更可能です。この方法を提供していたリンクは今回提供されたウィジェットのページに差し変わりました。。古い方法は場所が移動しただけかもしれませんが、今後この方法は使われなくなると推測されます。

 方法2はJavaScriptを使いTwitter APIからjsonpを受け取りツイートを表示する方法です。つぶやく欄などは表示できませんが、シンプルで動的なつぶやき表示を実現できます。今後Twitter APIは検索時にも認証が必要となるので、この方法は使われなくなると推測されます。

 方法3はJavaScriptと@AnywhereというTwitterが用意した仕組みを使う方法です。@Anywhereは2010年4月頃に発表されました。認証が必要な動作、つまりつぶやきの投稿なども行う事ができます。Twitterのドキュメントに「Deprecation notice!」とあり、ver1.1向けのドキュメントが見当たらないので、これも使われなくなるのではと推測されます(12月6日になくなる事が発表されました)

なお、これらの詳細は過去にまとめました。
twitterをサイトに埋め込む方法(3通り) - えんたつの記録

これからのTwitter埋め込み

 これまでTwitterをサイトに埋め込む方法は、何通りか存在していました。具体的には、Twitterが用意した簡単だがカスタマイズ性が低いものと、Javascriptを使い自分でデザインなどを決定する方法です。
 今後これは、新Twitter埋め込みウィジェットによるもの(Embedded Timelines)のみとなるようです。

 タイムライン、お気に入り、リスト、検索が表示できます。実際にはこのようになります。デフォルトで520×600pxです。

 サイズと一部の色は指定する事ができます。

 従来は背景色などが細かく設定できたのですが、現時点では背景色は2つから選び、リンク色が決定できるだけです。

新旧比較

 ツイートの表示方法は、今回の新方式の登場により、以下のように変わります。

従来のウィジェットとの違い
・つぶやき欄とフォローボタンが追加された
・TL上の写真も表示される
・色のカスタマイズ性が落ちた
・表示できる種類は今までと変わっていない

従来のJavaScript表示との違い
・簡単
・デザインや動きの自由度が低い

まとめ

・豊富な機能を持つつぶやき一覧がサイトに簡単に表示できるようになるので、これから各サイトにつぶやき欄を設置することができます。
・フォローボタンも表示されます。
・しかしカスタマイズ性はかなり落ちました。色の自由度が低いです。
・公式ウィジェットでできる事が増えました。よって自分でJavaScriptを書く必要が無くなりました。
・1ページに埋め込める情報に変化はありません。
・まとめると、今まで@Anywhereでできた事が簡単にできるようになったようです。

□資料

Developer Rules of the Road | Twitter Developers
Welcome to @Anywhere | Twitter Developers
Twitterブログ: サイト向けに「埋め込みタイムライン」ができました
Embedded Timelines | Twitter Developers

さくらVPS(CentOS6.3)へJenkinsをインストールして認証つけてURLを変更する

こちらを特に参考にさせて頂きました。
さくらのVPSでJenkins -執事さんとご対面- - PPl@ce
さくらVPSにJenkinsさんをインストールする - TOKOROM BLOG

Jenkinsとは

・CI(継続的インテグレーション)ツール。CIとはビルドやテストの間隔を短くし、フィードバックのサイクルを短くする手法?
・ビルドやテストの自動化ができる
・プラグインで拡張可能
・コマンドでできる事ならなんでも自動化可能
・Jenkinsとはイギリス人の執事をイメージにした名前。
・HudsonからJenkinsに名称変更があったため、Hudsonで調べた方が情報が見つかる場合があるかもしれない。
・現在のロゴは2011年のコンテストから選ばれたもの。(The polls are open for the Jenkins Logo Contest! | Jenkins CI
・2000年頃にXPのプラクティスの1つとしてCIの手法が確立。Jenkinsの前身であるHudsonは2004年に川口氏の個人プロジェクトから開始、その後氏が所属していたSun Mycrosystemsと有志のコミュニティで開発が進んだ。SunがOracleに買収された後も開発は進んだが、Oracleとの商標問題とかで2011年にHudsonからJenkinsへの改名があった。(かなりはしょった説明です。歴史はここに詳しい。レポート:「第2回Jenkins勉強会」活動報告|gihyo.jp … 技術評論社

jenkins_logo

Jenkinsインストール

JDKがインストールされていない場合、先にインストールしておきましょう。
Jenkinsはリポジトリを追加してからインストールします。
$ sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
$ sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
$ sudo yum install jenkins
(日本語のJenkins Wikiではjenkins.warをダウンロードしてjava -jar jenkins.warを実行とありますが、英語の本家サイトに合わせてこちらの方法でインストールを行いました。)

ポート関係

該当ポート番号をあける為、iptablesの設定を変更。
$ sudo vim /etc/sysconfig/iptables
これを追加して8080番ポートを空ける:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8080  -j ACCEPT
追加したら再起動
$ sudo /etc/rc.d/init.d/iptables restart


起動

$ sudo service jenkins start
この状態で8080番にアクセス(http://yourhost:8080/)して、何か見えれば成功です。しかしこのままでは誰にでもJenkinsが見えている状態で非常に危険です。認証をかけましょう。

認証をかける

デフォルトの設定では、このサイトにアクセスする全員がビルドとかも可能な状態になっています。方法としては2通りあり、Jenkins自体の設定によりユーザーを作成する方法と、JenkinsのURLにApache側で認証を設定する方法です。

Jenkinsのユーザー設定

今回はやりませんでしたが、方法を記載しておきます。
Jenkinsをブラウザで開いて、「Jenkinsの管理」->「システムの設定」->「セキュリティを有効化」にチェック->「アクセス制御」の「ユーザー情報」からユーザーを設定します。Jenkinsに個別にユーザーを登録する場合は「Jenkinsのユーザーデータベース」を、Unixのユーザーと同じにしたい場合は「Unix ユーザー/グループ データベース」を選択するようです。

今回はJenkinsにユーザーを登録します。この画面で「ユーザー情報」の「Jenkinsのユーザーデータベース」にチェックを入れ「Jenkinsのユーザーデータベース」にもチェック。「権限管理」の「行列による権限設定(プロジェクト単位)」にチェックを入れ、「追加するユーザー/グループ:」からユーザーを追加。その後Jenkinsのトップ画面からパスワードとか無しでログインすれば完了です。
こちらが詳しいです。Hudsonの操作権限をユーザ/グループ/ロール別に制御する - ふぞろいのGENGOたち

Digest認証の設定、URL変更、ポート変更

次の3つの設定を行います。
・Digest認証をつける
・URLの変更。「http://yourhost:8080/」ではなく「http://yourhost/jenkins」でアクセスできるようにします。
・他とかぶらないようにポート番号を変更しておきます。

jenkinsの設定ファイルを編集してURLとポートを変更してみましょう。
$ sudo vim /etc/sysconfig/jenkins
この2カ所を編集します。適当なポート番号を設定し、prefixに/jenkinsを指定します。
JENKINS_PORT="29191"
JENKINS_ARGS="––prefix=/jenkins"

iptablesに設定したポートば番号も、この設定に合わせて変更しておきましょう。

適当な外から見えないディレクトリにて、ダイジェスト認証に必要な.htdigestファイルを作成する。ここでの領域名は、次に作成するApache向け設定ファイルのAuthNameと同じにする。(初めてこのコマンドを実行する場合は-cオプションをつける。初めてでない場合、元のファイルが消されるらしいので注意すること)
$ sudo htdigest -c /etc/httpd/conf/.htdigest Jenkins jenkins
($ htdigest -c パスワードファイル名 領域名 ユーザー名)
パスワードを聞かれますので自分で決めて入力すると、ファイルが生成されます。中に色々書かれたファイルが生成された事を確認しておきましょう。

次にApache向けの設定ファイルを作成します。
$ sudo vim /etc/httpd/conf.d/jenkins.conf
中身は以下の通り。(これホントに正しいのかな...。)
ProxyPass /jenkins http://localhost:29191/jenkins
ProxyPassReverse /jenkins http://localhost:29191/jenkins
ProxyRequests Off

<Proxy http://localhost:29191/jenkins*>
Order deny,allow
Allow from all

AuthType Digest
AuthName Jenkins
AuthUserFile /etc/httpd/conf/.htdigest
Require valid-user
</Proxy>
保存したらApacheの再起動をします。
$ sudo /etc/rc.d/init.d/httpd restart
この状態で「sudo service jenkins restart」し、http://yourhost/jenkinsにアクセスしましょう。ちゃんとパスワードが聞かれるか、Jenkinsは正常か、を確認します。

自動起動の設定

$ sudo chkconfig jenkins on
確認します。
$ /sbin/chkconfig --list | grep jenkins
登録されていますね。これでJenkinsが使えるようになりました。

資料

レポート:「第2回Jenkins勉強会」活動報告|gihyo.jp … 技術評論社
Meet Jenkins - 日本語 - Jenkins Wiki
Jenkinsではじめる継続的インテグレーション
さくらVPSにJenkinsさんをインストールする - TOKOROM BLOG
RedHat Repository for Jenkins
さくらVPSにjenkinsを入れてみたときの備忘録 | ミラボ
さくらのVPSで動いているApacheの不要モジュールを削除する | Webエンジニアライフ
さくらのVPSでJenkins -執事さんとご対面- - PPl@ce
Jenkins + Apache2 (Basic認証) の環境を構築する for CentOS 5.6 [x86_64] - ワンカップとイカちゃん
Securing Jenkins - 日本語 - Jenkins Wiki
ADD Ubuntu Server 11.10(64bit)にJenkinsをインストール
@IT:Apacheでユーザー認証を行うには(Digest認証編)
jenkinsとapacheの連携 - Dev3TechHack
Hudsonの操作権限をユーザ/グループ/ロール別に制御する - ふぞろいのGENGOたち
Jenkinsことはじめ - 技芸のおぼえがき
このサイトは
 Webアプリケーション開発のことや、iPhone・Android向けアプリ開発の話題がメインです。技術情報を取り扱っています。
 管理:えんたつ。twitter: @tattyamm
mimage
カテゴリ別アーカイブ
RSS
リンク
プログラミング本
アプリを作る時などに読んだ本
iPhoneプログラミングUIKit詳解リファレンス iPhoneプログラミングUIKit詳解リファレンス Android Layout Cookbook アプリの価値を高める開発テクニック パーフェクトPHP (PERFECT SERIES 3) JavaプログラミングBlack Book 2nd Edition (Black Bookシリーズ)
表記
当サイトではGoogle Analyticsを使用しております。詳細はこちらを御覧ください