「 サーバー構築 」一覧

Jetson TK1で地デジ録画


Raspberry Piで地デジ録画をやってみた事例はあるので、ではJetson TK1でやってみるか!と思って試してみました。基本的にはARMですし、プリインストールのOSがUbuntuベースであるのでそこまで難易度が高いわけではありません。

必要になるのが地デジチューナーです。ここではUSB接続の KTV-FSUSB2を使用しました。数年前に購入して、改造を施して押し入れに眠っていた物です。この改造についてはここでは触れません。
このドライバのソースをGitHubよりダウンロードしていきます。それとパッチもまた適用しておきます。
これらの手順についてこれから説明します。

ドライバの構築

GitHub(https://github.com/sh0/recfsusb2n)からダウンロードしてきました。
パッチについては、こちら(適当な何かの別館 recfsusb2n tsspliteer_lite内蔵・httpサーバー機能追加・recpt1ctl対応パッチ)。

ダウンロードしたらこれらをターゲット上へコピーしておきます。

$ unzip recfsusb2n-master.zip
$ mv recfsusb2n-master recfsusb2n
$ mkdir patch
$ unzip recfsusb2n_http_patch2.zip -d patch
$ cd patch
$ cp Makefile ../recfsusb2n/src/
$ cp *.h ../recfsusb2n/src/
$ cp *.cpp ../recfsusb2n/src/

Makefileを開いて、boost_thread-mtの箇所を書き換える。
そして、#LIBSの行を有効化して、元々のLIBS行をコメントアウトします。

LIBS   = -lpthread -lboost_system -lboost_thread -lboost_filesystem
#LIBS = -lpthread -lboost_thread -lboost_filesystem

boostライブラリを取得してきます。

$ sudo apt-get install libboost-thread-dev libboost-filesystem-dev

ビルドします

$ cd recfsusb2n/src
$ make

パーミッションルールの追加を行います

$ sudo gedit /lib/udev/rules.d/89-tuner.rules

ウィンドウが開いたら、以下のように中身を記述します。見やすいように改行を入れていますが、1行で書いてしまって下さい。

設定をリロードさせた後、念のため再起動します。ここではパワーオフまでです。

$ sudo udevadm control --reload-rules
$ sudo poweroff

KTV-FSUSB2を取り付けて、電源を入れます。
起動したらターミナルから認識しているかどうかを確認してみます。
以下のようになったら認識できていると思います。

適当に録画してみる

$ cd recfsusb2n/src
$ ./recfsusb2n -bv 27 30 test.ts

このtsファイルをWindows7側などに持ってきて、再生できるか確認してみます。
うまく動作していれば、そのままテレビ映像が表示されます

リアルタイム視聴してみる -NGでしたが-

VLCをインストールします。

$ sudo apt-get install vlc

インストール後、下記のようにコマンドを打ち込んでテレビ映像が表示されるか確認します。

$ ./recfsusb2n --b25 27 - - | vlc -

しかしながら、自分の環境では初期フレームは何か表示されるものの視聴できませんでした。

今回はパッチ当てて内蔵HTTPサーバー機能というものを取り込んでいるので、これで確認してみたいと思います。

$ ./recfsusb2n --b25 -v --http 8888

vlcを起動して、 http://localhost:8888/27/ を開いてしばらく待つと、ようやく再生が始まりました。
ただ非常に重く、CPUで全部デコード処理をやっているかのようです。
HWアクセラレータがデフォルトではOFF状態だったので、これらをONにしてみましたが変化せず。
ファイルキャッシュとして 300 だったものを10倍にしてみたところ多少はマシになったように思いますが視聴には耐えない感じ

$ sudo apt-get install vainfo
$ vainfo

結果を確認してみると、DRIのドライバがないようでハードウェアアクセラレートが効かない模様。
だからリアルタイム視聴がうまくいかなかったのだと思います。

まとめ

現時点でのドライバの都合もあるので、録画そのものは出来るけど視聴はこのボードでは難しいようです。
消費電力を売りにして、録画だけ行うサーバーにするのはアリのようです。当初は、うまくいったらCUDAを使ってエフェクトをリアルタイムで適用しつつ録画を再生するなんてことを考えていましたが、現時点ではそれは夢となってしまいました。
 また、ちゃんとした録画サーバーにするにはFoltiaだとか、epgrecだとかのシステムを入れる必要があると思いますが、それらについては未検証です。動くとは思いますが…。
折角のTegra K1搭載のボードなので、もうしばらくはグラフィックス寄りのプログラムを書いていじってみたいと思います。よって録画関連のテストはここまで!


QNAPファイルサーバー(NAS)で、Gitを使いたい


QNAPのファイルサーバー(NAS)にSubversionは以前いれてみたので、Gitも同様にできないかと考えていました。できればGitLabとか入れてみたいなと思っていたのですが手持ちの TS-439では厳しいようだったので、他の物を探してみました。
その結果、warファイル1つで簡単にGitリポジトリのホスティングをできるGitBucketがあったので、これを導入してみることにしました。以下はその導入記録です。

QNAPにtomcatを入れる

QNAP/AppCenter(QPKG) のページからJREをダウンロードしてPCに展開します。
そして、展開フォルダを指定してインストールを行います。
続いて Tomcat についても同様の手順でインストールを行います。
(ここでは、JRE_6.0.22_x86.qpkg, Tomcat_6.0.20_x86.qpkg を使用しました)

インストール後は Tomcat を起動して、画面を開いてみます。

qnap-tomcat

tomcat のアプリケーションを配置するフォルダは
/share/MD0_DATA/.qpkg/Tomcat/tomcat/webapps
になる模様。
$CATALINA_HOME は /share/MD0_DATA/.qpkg/Tomcat/tomcat ということのようです。
そこで、$CATALINA_HOME/conf/tomcat-users.xml を開いてユーザーを編集します。

※ ここ見れば既存のユーザーとパスワードの組み合わせもわかると思います。

そして、Tomcatの管理画面にログインすると次のように表示されます。

tomcat-manager

GitBucketのインストール

https://github.com/takezoe/gitbucket/releases
から gitbucket.war をダウンロードして、これを先ほどのTomcat管理画面からアップロードします。ここで使用した gitbucket.war は 1.8 のバージョンとなっています。

さて、GitBucket を Start を押すと・・・起動しません。
ログを確認してみると、クラスが足りていないような感じです。
javaが古いのかと思って調べてみたのですがどうやら Tomcat のほうが古いようです。qpkgでインストールされるのは 6.0系なようで、GitBucketは 7.0 以降のものを必要としているようです。残念。

というわけで、Tomcatの新しい物が利用可能になれば使えるのかもな~と思っている次第です。


RhodeCodeが様変わりしてた


RhodeCode が良さそうに思って以前に導入記事を書いてみましたが、久しぶりにどうなったかなと思って確認したところ、なんと色々と大きく変わっていました。

RhodeCode Enterprise というものになっていて、20ユーザーまではフリーで使えるという状態のようです。以前はそんな制約はなかったと思います。GPLv3 のライセンス下で配布されていたと思います。

検証当時は GitLab vs RhodeCode で、個人的には RhodeCode を推していこうと思っていたのに、この制限があるとチームで使う際には除外されていきそうです。残念。

追記

どうやら、1.7.1はGPLv3のままの提供、その後の新バージョン 2.x 系を RhodeCode Enterprise としてライセンス体系を変えたっぽいです。



GitLab


GitLab 4.1が先日公開されました。この4.1がなかなか魅力的だったのでここで紹介したいと思います。

今までのGitLabは無料のGitHubで出来ない、プライベートなリポジトリを持つことを前提として、
公開リポジトリに関してはサポートしないという位置づけでした。
これが今回の4.1では、パブリックなリポジトリをGitLab上で管理できるように機能が拡張されました。

これすごく欲しかったんですよね・・・。2.4のころにサポートされていればこちらをじっくり検討したかもしれない・・・。

4.0ではCIまわりで手が入っているし、これはぼちぼち再チェックした方がよさそうな雰囲気を感じました。


RhodecodeのActiveDirectory認証


ActiveDirectoryの認証を用いてユーザー認証できるというRhodecodeですが、その説明を書いた部分が見つからないのでここにメモがてら残しておきたいと思います。一応紹介記事ではLDAP/ActiveDirectoryが使える!とあるのにその設定が見つからないのはどうなのだろうと思ったり。

Rhodecodeの設定

ここで試しているRhodecodeは 1.4.3 です。
管理者ユーザーでログインして LDAP の項目を表示させます。そして以下の内容で設定していきます。

  • LDAPを有効にする にチェックを入れる。
  • ホスト: ActiveDirectory(ドメインサーバー)が動いているアドレスを入力
  • ポート: 389
  • アカウント:検索用のユーザー名. なければ適当なユーザー名を。
  • パスワード:上記ユーザーのパスワード
  • 接続のセキュリティ:暗号化無し
  • 証明書チェック:NEVER
  • Base DN: ドメイン名がMYDOMAIN.LOCALの場合だと、 DC=MYDOMAIN,DC=LOCAL と入力する
  • LDAPフィルター: 空欄のまま
  • LDAP検索範囲:SUBTREE
  • ログイン属性: sAMAccountName
  • 名前属性(FirstName): givenName
  • 名字属性(LastName): sn
  • メールアドレス属性:mail

これらの設定で自分の環境ではドメインのユーザーを認証できています。


GitlabとRhodecodeのメール設定


GitlabとRhodecodeを調べていてメール関連でどちらも設定を放置していたので調べてみました。

Gitlabの場合

gitlab.yml の email セクションの host という項目に対して、メールサーバーのアドレスを設定します。
たいていlocalhostのままなので、ここにメールサーバーのアドレスを記載します。
localhostのままでメールを送れるようにするためには、gitlabを動かしているサーバーでPostfixなりssmtpなりのメールサーバーを動かす必要があります。

Rhodecodeの場合

production.ini ファイルの中に smtp_server という項目があるので、そこにメールサーバーのアドレスを記載します。送信についてSMTP認証がかかっていたりする場合には、smtp_serverの行付近にアカウント情報を設定するような項目があったので、そこで設定してあげればよいように思います。

ついでに、email_prefix という項目もあるので、何かしら設定しておくと、メール振り分け設定の指標になるし便利だと思います。


Rhodecodeのバージョン更新


1.3.6を以前インストールしましたが、最近は既に1.4.3が出ているようなので以下の手順でバージョンをあげてみました。

バージョンを更新する

production.ini.oldの中身を確認しつつ、新しく作られた production.ini の中身を再設定していく.
自動マージされるらしいのだけど、手元ではうまくいきませんでした。

データベースを更新します。

起動し直します

そういえば更新してみて気付きましたが、言語を日本語の設定にすることが出来るようになったようです。production.iniの中にlangという項目があり、そこにjaを設定することができます。

チケット連携?

rhodecodeのIssue Tracker連携があるかと思っていたのですが、連携というわけでは無く単にリンクが張られるだけのようでした。コミットコメントにチケット番号を記述しておくと、それに対応する
IssueTrackerのチケットへ飛べるだけの機能のようにみえます。


Rhodecodeの使い方とGitの問題と


Rhodecodeの使い方

まず管理者でログインして、普段使用するユーザーを作成します。
下記の画像に示すようにしてユーザーを作成します。

ユーザーの作成が終わったら、ログアウトしておきます。
続いて先ほど作った普段使いのアカウントでログインします。
そして、”ADD REPOSITORY”を押して、リポジトリの追加を行います。

とりあえずリポジトリの名前、リポジトリの種別(git/hg)、概要などを記入して、画面下部のaddボタンを押します。Private repository にチェックを入れればプライベートリポジトリとなります。

ここでは、タイプにgitを選んでいることにします。

ある適当なフォルダで、右クリックしてtortoiseGitのCloneを選びます。
Urlには先ほどのRhodecodeのリポジトリ情報で表示されていた Clone url の部分のテキストを入力します。

取得できたら、適当にファイルを追加して、gitのAdd, Commitなど実行しておきます。
最初なので readme.txt とかファイルを用意しておくとよいかもしれません。

ここまで準備が出来たら、Rhodecodeのリポジトリへ反映させます。
tortoiseGitのメニューで Push があるのでそれを実行します。
実行するとパスワードを聞かれると思います。これはRhodecodeのユーザーに設定したパスワードを用います。

この状態でブラウザからRhodecodeの自分のリポジトリ情報を表示させてみると、今回Pushした内容が反映されているのがわかります。

GitとRhodecodeの罠(履歴とかコメントとか表示されない)

将来的にはこれからの内容は既に解決済みとなっていることでしょう。
2012/08/26現在ではGitでコミット&プッシュしているのにRhodecodeで反映されない!という問題があります。昨年の情報を見る限りではそんな人はいないようですが…。

ちょっと調べてみたところ、この原因はサーバー側のGitのバージョンによるものっぽいです。
CentOS 6.0の環境で yum install git として入ったバージョンが 1.7.1
これがあるコマンドオプションに対応していないために上記の問題が起こるようです。

これを解決するために新しいバージョンのgitを入れる必要があります。
これにはRPMForgeをyumの対象に加えて、再度gitをインストールすることで行います。

# yum install wget
# rpm –import http://apt.sw.be/RPM-GPG-KEY.dag.txt
# wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
# rpm -ivh rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

# yum install git –enablerepo=rpmforge-extras

この後、gitのバージョンを確かめてみると、1.7.11.1 が入っていました。
この状態で、Rhodecodeのリポジトリに対してgitのコミットを行ったり、ブラウザからリポジトリ情報を表示させたときには、今までの操作履歴が表示されるようになっています。


Rhodecodeのインストール


はじめに

GitLabに続きRhodecodeもよさそうだったので、ここにインストールまでの手順をメモしておきます。GitLabは完全にプライベートリポジトリの扱いだったのですが、Rhodecodeは認証無しの状態でもどんなリポジトリがあるのかを見ることが出来ます。
もちろんプロジェクトの設定によっては非公開とすることも可能です。
いくつかの記事にあるように ActiveDirectory/LDAPとの認証連携が出来るのは大きなポイントかと思います。残念な点としては内部にIssueTrackerを持たないことでしょうか。これについては、外部のバグトラッカーと連携することも考えられて設計されているような感じです。

CentOSの準備

CentOS 6.0をMinimumインストールしてある状態からの手順を下記に書きます。

まず今後ネットワークを使えるようにしておきます。

ifcfg-eth0のファイルを編集します。

続いてSELinuxを無効化します。

ファイアウォールも無効化しておきます。

ここまで設定したら一度再起動します。

必要な物のインストール

Rhodecodeのインストール

途中で、リポジトリを格納する場所、管理者ユーザーの情報を入力します。

他のホストから接続できるように設定ファイルを変更します。

host = 127.0.0.1 の部分を割り当てられているIPに変更します。
(どこからでも受け付けたいなら0.0.0.0を設定する. )
そしてRhodeCodeを起動します。

5000番ポートで起動するので、http://(アドレス):5000/ にアクセスします。


あとはセットアップ時につくった管理者ユーザーでログインして、ユーザーを作成したりリポジトリの用意をしたりして運用していきます。

Apacheとの連携

httpd.confに記述を追加して、5000ポートへリダイレクトさせるようにします。

この設定の中で、アドレス中の “rhc” がプレフィックス扱いです。

production.iniを開き、[app:main]セクション内の編集を行います。

同じくファイルの末尾の部分に以下の内容を追記します。
上記のfilter-withの直後に書くとセクション情報の破壊を起こしてしまうので、セクションの切れ目で追記する必要があります。まぁファイル末尾に追記ならそういった問題が起こらないので・・・。

prefixの行に、先ほどのプレフィックス扱いとなっていた部分の文字列を設定します。

自分の環境では、このプレフィックス部分が”rhodecode” ではどうもうまく動作しませんでした。ChromeではうまくいくのにFirefox, IE9では失敗します。/rhodecode/ → /rhodecode./ というようにアドレスが展開されたところまでわかったのですが、それの原因はわからずじまいです。

環境情報

  • CentOS 6.0(x64)
  • Rhodecode 1.3.6
  • Pythonはvirtualenvを使用. (virtualenvを使用しなくても動作できることは確認しています。)

今後のネタ予定

  • 基本的な使い方
  • ActiveDirectoryとの連携
  • 外部バグトラッカー との連携