2013年3月19日火曜日

[.tested] Joruri Gw 2.0.2 [AX3]

Joruri Gwは、Ruby(on Rails)とMySQL上で動作するオープンソースのグループウェアです。
Joruri CMSのシステム管理部分を基盤として徳島県庁用のグループウェア機能の拡張が行われたものであり、オープンソース公開され、自治体を中心として利用が広がっています。最新の情報は以下のサイトを参照してください。

Joruri公式サイト

最新のリリースである、joruri Gw 2.0.2をインストールするための想定環境は以下の通りです。

[[システム]
OS         : CentOS 6.2
Webサーバ  : Apache 2.2
DBシステム : MySQL 5.1
Ruby       : Ruby 1.9.3
Rails      : Rails 3.2.7
キャッシュ : memcached 1.4.13

今回は、joruri Gw 2.0.2をARMアーキテクチャであるOpenBlocks AX3上のdebian 6.0上にインストールします。
また、debian 6.0の環境は、LXC上のゲストOSとして構築します。

OBDN技術ブログによる動作検証は、該当するソフトウェアの動作を保証およびサポートを行うものではありません。
内容に関するご指摘などありましたら、ブログ記事の担当までご連絡下さい。

<検証環境>
OpenBlocks AX3/4 Debian 6.0 kernel: 3.0.6
LXC 0.7.5 / ゲストOS: Debian 6.0

1.LXCの導入


今回、評価環境を、LXCのゲストOS(Debian squeeze)上で構築しました。
仮想化を行わない場合は、この作業は必要ありません。

LXC環境の構築について

 以下のページの手順に従って作業してください。

 OpenBlocks AX3でLXCによる仮想化を試してみる

初期設定について

先に、タイムゾーンの設定、ロケールデータの作成を行います。
ただし、lxc-createしてすぐの状態では、vimなどのツールがないため、
apt-getにより必要なものを追加する必要があります。
また、aptitudeパッケージも最初は含まれていませんので、先にaptitudeパッケージをapt-getにより導入します。

# apt-get install aptitude
# aptitude update
# aptitude install vim

 タイムゾーンの設定:
# dpkg-reconfigure tzdata

 ロケールデータの作成:
# vi /etc/locale.gen
   ja_JP.UTF-8 等の必要なロケールをアンコメント(行頭の#を消す)する

# locale-gen

また、今回は、CMSサーバとして使用しますので、/etc/network/interfacesのeth0は、dhcpによるIPアドレス設定ではなく、固定のIPアドレスを指定します。
IPアドレスは、それぞれの環境で割り当てられたものを使用してください。
以下の例では、割り当てられたIPアドレスを、192.168.253.169、gatewayが192.168.253.1と想定しています。

auto eth0
iface eth0 inet static
    address 192.168.253.169
    network 192.168.253.0
    netmask 255.255.255.0
    broadcast 192.168.253.255
    gateway 192.168.253.1

開発環境の導入について

まず、よく利用するツールをインストールします。

# aptitude install tasksel
# tasksel install standard

開発用のツール類をインストールします。

# aptitude install build-essential

上記の作業により、LXCのゲストOS上での開発環境が構築されます。

また、LXC仮想環境の複製を行いたい場合ですが、上記の記事で導入した場合、

# ln -s /usr/local/var/lib/lxc /var/lib/lxc

とした後、元の、/var/lib/lxc/<元のコンテナ名>/config を、複製した/var/lib/lxc/<複製したコンテナ名>/configに上書きして、config内の<コンテナ名>の部分を書き換えることにより代替環境として動作させることが出来ます。
(lxc-0.7.5では、インストール時に、/usr/local/var/lib/lxcが指定されていますが、この部分が一部のツールと整合性が取れていないようです。)

また、上記の記事にある通り、そのままではudevのインストールによりエラーが出ます。
これは記事にあるように、configファイルを変更することにより、インストールエラーそのものは出なくなります。
ただし、この場合、立ち上げたコンソールが使用出来なくなりますので、別途sshでlxcコントロール用のターミナルを確保して下さい。

2.apache2の導入


パッケージのインストール

# aptitude install apache2

 インストールのみで起動します。

mod_rewriteを有効にする

# a2enmod rewrite

3.mysqlの導入


パッケージのインストール

# aptitude install mysql-server

 インストール時にMySQLを管理するrootユーザのパスワードを聞かれるため、
 予め決めておく必要があります。

動作確認

# mysql -u root -p

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
+--------------------+
2 rows in set (0.00 sec)

mysql>


4.joruri Gwパッケージのインストールのための事前準備


以下のマニュアルを参考に作業を進めます。ただし、想定環境がCentOS 6.2であるため、debian 6.0では導入するパッケージや、設定方法が異なります。

 Joruri Gw 2.0.2 インストールマニュアル

まずは、root権限で作業を行います。

必要なパッケージの導入

 apache(httpd)、mysqlに関してはすでに上記で導入作業を行っているため、必要ありません。
 aptitudeコマンドにより、以下のパッケージを導入してください。

# aptitude install <パッケージ名>
libjpeg-dev
libpng-dev
imagemagick
libmagickcore-dev
libcurl4-openssl-dev
libevent-dev
apache2-dev
libsasl2-dev libsasl2-modules-ldap

必要なソースコードファイルのダウンロード

 インストールマニュアルの通り、wgetコマンドによりダウンロードを行います。

 # cd /usr/local/src/
 # wget http://joruri.org/download/jorurigw/jorurigw-2.0.2.tar.gz
 # wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.tar.gz
 # wget http://memcached.googlecode.com/files/memcached-1.4.13.tar.gz
 # wget http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz

Joruriユーザの作成

  # useradd joruri
  # passwd joruri

Joruriソースコードの設置

  # mkdir /var/share
  # tar xvzf jorurigw-2.0.1.tar.gz -C /var/share
  # chown -R joruri:joruri /var/share/jorurigw

Apache の設定

 設定ファイルを編集します。アドレスは固定アドレスとして設定したものを使用してください。

  # vi /etc/apache2/httpd.conf
 
  ServerName 192.168.253.169

 設定ファイルにエラーがないことを確認し、Apacheを再起動します。

  # apachctl restart

MySQL の設定と、joruriユーザの作成

 文字エンコーディングの標準を UTF-8 に設定します。

  # vi /etc/mysql/my.cnf
   :
  [mysqld]
  default-character-set=utf8    #追加
  max_allowed_packet=16M        #追加

  [client]                                #追加(末尾に追加)
  default-character-set=utf8    #追加   :

 MySQLを再起動します。MySQLはインストール時にすでに自動起動設定され起動しています。

  # /etc/init.d/mysqld restart

 rootユーザのパスワードは、aptitudeコマンドによりインストール時に設定しています。

 MySQL monitorを起動し、joruriユーザを作成します。

# mysql -u root -p
Enter password: ←インストール時に設定した(mysqlの)rootユーザパスワードを入力
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 39
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

 joruriユーザを作成します。

mysql> grant all on *.* to joruri@localhost IDENTIFIED BY 'pass';

 確認は以下のコマンドにより行います。

mysql> SELECT host,user FROM mysql.user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| 127.0.0.1 | root             |
| deb-2     | root             |
| localhost | debian-sys-maint |
| localhost | joruri           |
| localhost | root             |
+-----------+------------------+
5 rows in set (0.00 sec)

mysql>

 ※パスワードは適切な値を設定してください。
 本マニュアルでは pass と設定しています。

Ruby on Rails のインストール

 # cd /usr/local/src
 # tar -zxvf yaml-0.1.4.tar.gz
 # cd yaml-0.1.4
 # ./configure
 # make
 # make install

Rubyのインストール

 # cd /usr/local/src
 # tar xvzf ruby-1.9.3-p194.tar.gz
 # cd ruby-1.9.3-p194
 # ./configure -prefix=/usr/local
 # make
 # make install

  インストール結果を確認します。
 
  # /usr/local/bin/ruby -v
   => ruby 1.9.3p194 (2012-04-20 revision 35410) [i686-linux]

Phusion Passenger のインストール

 Phusion Passengerをインストールします。

  # gem install passenger --no-ri --no-rdoc -v 3.0.19
  # passenger-install-apache2-module
    ( 画面の内容を確認して Enterキーを押してください。 )

 Apacheに設定を追加し、再起動します。

  # vi /etc/apache2/conf/httpd.conf    :   --下記を追加   LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.13 /ext/apache2/mod_passenger.so   PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.13   PassengerRuby /usr/local/bin/ruby    :   # apachectl restart

gemライブラリ のインストール

 Joruri Gw実行に必要なライブラリをインストールします。

 まず、libv8-3.3.10.4.gemをダウンロードし、インストールします。


 # cd /usr/local/src
 # wget http://rubygems.org/downloads/libv8-3.3.10.4.gem
 # gem install ./libv8-3.3.10.4.gem

上記のオペレーションは一見正常に終了しますが、ライブラリモジュールが作成されていません。対策として、sconsパッケージを入れ、SConstructを修正し、手動でインストールします。

 # cd /usr/local/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.4/lib/libv8/build/v8
 # vi SConstruct

--52行目を編集
GCC_EXTRA_CCFLAGS = ['-march=armv6'←変更
GCC_DTOA_EXTRA_CCFLAGS = []

 # scons

  正常に終了し、libv8.aなどのライブラリが作成されていることを確認してください。
 インストールドキュメントの手順に戻り、gemライブラリをインストールします。


 # gem install bundler -v 1.1.4
 # cd /var/share/jorurigw
 # bundle install

 ネットワーク経由でファイルのダウンロードとインストールが行われます。
 正しく完了すれば次のようなメッセージが表示されます。

 =>Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

5.joruri Gwのインストール


Joruriユーザに変更します。

  # su - joruri
  $ cd /var/share/jorurigw

設定ファイルの編集

 環境に応じて設定ファイルを編集します。
 
DB接続情報

 debian 6.0のmysqlパッケージに合わせて、socketを全て書き換えます。

  $ vi config/database.yml

  socket: /var/run/mysqld/mysqld.sock
   :
  socket: /var/run/mysqld/mysqld.sock
   :
  socket: /var/run/mysqld/mysqld.sock
   :
  socket: /var/run/mysqld/mysqld.sock
   :
  socket: /var/run/mysqld/mysqld.sock

LDAP接続情報

  $ vi config/ldap.yml

 ※LDAPに関する設定は、ダウンロードページより補足資料をご参照下さい。
    http://joruri.org/download/jorurigw/  【LDAP関連補足資料】LDAP_LDIF.zip

SMTP接続情報

  $ vi config/environments/development.rb

 ※連絡メモの「携帯等メール転送設定」などメール機能を利用する場合は
  SMTPの設定が必要です。

データベースの作成

 データベースを作成します。

 ※作業の途中でmysqlに設定したパスワードを聞かれますのでご用意ください。

 データベースを作成します。

  $ cd /var/share/jorurigw

  $ /usr/bin/mysql -u root -p -e "create database development_jgw_core"
  $ /usr/bin/mysql -u root -p -e "create database development_jgw_gw"
  $ /usr/bin/mysql -u root -p -e "create database development_jgw_gw_pref"
  $ /usr/bin/mysql -u root -p -e "create database development_jgw_bbs_000001"

 テーブルを作成します。

 $ /usr/bin/mysql -u root -p development_jgw_core < ./db/development_jgw_core_schema.sql  $ /usr/bin/mysql -u root -p development_jgw_gw < ./db/development_jgw_gw_schema.sql  $ /usr/bin/mysql -u root -p development_jgw_gw_pref < ./db/development_jgw_gw_pref_schema.sql  $ /usr/bin/mysql -u root -p development_jgw_bbs_000001 < ./db/development_jgw_bbs_000001_schema.sql
初期データを登録します。

$ /usr/bin/mysql -u root -p development_jgw_core < ./db/development_jgw_core_init.sql $ /usr/bin/mysql -u root -p development_jgw_gw < ./db/development_jgw_gw_init.sql $ /usr/bin/mysql -u root -p development_jgw_gw_pref < ./db/development_jgw_gw_pref_init.sql $ /usr/bin/mysql -u root -p development_jgw_bbs_000001 < ./db/development_jgw_bbs_000001_init.sql
サンプルデータを登録します。

  $ rake db:seed:demo RAILS_ENV=production

memcached のインストール

 root権限に戻ってください。(joruriユーザからならexit)
 debian 6.0のパッケージで導入しました。

  # aptitude install memcached

 上記インストールにより、デーモンが起動し、自動起動に設定されます。

VirtualHost の反映

 Apacheに設定を追加します。

  # vi /etc/apache2/conf.d/vhosts.conf

--以下の部分を追加します。(もしくは新規入力)
  NameVirtualHost 192.168.253.169:80

  <VirtualHost 192.168.253.169:80>
      ServerName default
      DocumentRoot /var/share/jorurigw/public
      RackEnv development
      PassengerHighPerformance on
  </VirtualHost>

 Apacheを再起動します。

  # apachectl restart

 ここまでの手順で Joruri にアクセスすることができます。

  Joruri Gw 画面 http://192.168.253.169/  ←設定したIPアドレス

 次のユーザが登録されています。

    管理者(システム管理者)
      ユーザID   : admin
      パスワード : admin

    一般ユーザ(徳島 太郎)
      ユーザID   : user1
      パスワード : user1

    一般ユーザ(阿波 花子)
      ユーザID   : user2
      パスワード : user2

    一般ユーザ(吉野 三郎)
      ユーザID   : user3
      パスワード : user3


7.定期実行設定


 先にcronをインストールします。

# aptitude install cron

 ここではcrontabによる定期実行に関する設定例を説明しています。

 削除期間が過ぎた情報を削除します。
 以下の例は毎日3時~4時にかけて削除しています。

 削除期間が過ぎたスケジュールを削除します。

  # su - joruri
  $ crontab -e
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  00 3 * * * /usr/local/bin/ruby /var/share/jorurigw/script/rails runner \
    -e development 'Gw::Script::Schedule.delete'
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 完了済みで削除期間が過ぎたTODOを削除します。

  $ crontab -e
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  05 3 * * * /usr/local/bin/ruby /var/share/jorurigw/script/rails runner \
    -e development 'Gw::Script::Todo.delete'
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 既読で削除期間が過ぎた連絡メモを削除します。

  $ crontab -e
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  10 3 * * * /usr/local/bin/ruby /var/share/jorurigw/script/rails runner \
    -e development 'Gw::Script::Memo.delete'
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 期限切れで削除期間が過ぎた掲示板を削除します。

  $ crontab -e
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15 3 * * * /usr/local/bin/ruby /var/share/jorurigw/script/rails runner \
    -e development 'Gwbbs::Script::Task.delete'
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 期限切れで削除期間が過ぎた回覧板を削除します。

  $ crontab -e
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  20 3 * * * /usr/local/bin/ruby /var/share/jorurigw/script/rails runner \
    -e development 'Gwcircular::Script::Task.delete'
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 期限切れで削除期間が過ぎた照会回答を削除します。


   $ crontab -e
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  25 3 * * * /usr/local/bin/ruby /var/share/jorurigw/script/rails runner \
    -e development 'Gwmonitor::Script::Task.delete'
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 削除期間が過ぎたアンケートを削除します。

  $ crontab -e
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  30 3 * * * /usr/local/bin/ruby /var/share/jorurigw/script/rails runner \
    -e development 'Questionnaire::Script::Task.delete'
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 不要となったセッションのデータを削除します。

  $ crontab -e
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  35 3 * * * /usr/local/bin/ruby /var/share/jorurigw/script/rails runner \
    -e development 'System::Script::Session.delete_expired_sessions'
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 不要となった掲示板のデータを削除します。

  $ crontab -e
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  40 3 * * * /usr/local/bin/ruby /var/share/jorurigw/script/rails runner \
    -e development 'Gwbbs::Script::Task.preparation_delete'
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 不要となった電子図書のデータを削除します。

  $ crontab -e
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  45 3 * * * /usr/local/bin/ruby /var/share/jorurigw/script/rails runner \
    -e development 'Digitallibrary::Script::Task.preparation_delete'
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 不要となった書庫のデータを削除します。

  $ crontab -e
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  50 3 * * * /usr/local/bin/ruby /var/share/jorurigw/script/rails runner \
    -e development 'Doclibrary::Script::Task.preparation_delete'
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 不要となったQ&Aのデータを削除します。

  $ crontab -e
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  55 3 * * * /usr/local/bin/ruby /var/share/jorurigw/script/rails runner \
    -e development 'Gwqa::Script::Task.preparation_delete'
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 不要となったFAQのデータを削除します。

  $ crontab -e
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  00 4 * * * /usr/local/bin/ruby /var/share/jorurigw/script/rails runner \
    -e development 'Gwfaq::Script::Task.preparation_delete'
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 不要となった研修申込・受付のテンポラリファイルを削除します。

  $ crontab -e
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  05 4 * * * /usr/local/bin/ruby /var/share/jorurigw/script/rails runner \
    -e development 'Gwsub::Script::Sb01_training.delete_abandoned_files'
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 幹部・部課長の在席表示を全てoffにします。

  $ crontab -e
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  0 0 * * * /usr/local/bin/ruby /var/share/jorurigw/script/rails runner \
    -e development 'Gw::Script::PrefExective.state_all_off'
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

8.動作確認


 joruri gwは初期状態で以下のサンプル画面が表示されます。

<ポータル画面>


9.さいごに


今回、joruri Gw の最新バージョンである、2.0.2が、ARMアーキテクチャのOpenBlocks上で起動することを確認しました。
今回、細かな機能の検証は行っておりません。不具合などあればblog担当までご報告下さい。


0 件のコメント:

コメントを投稿