tiarra

tiarraの設置方法とかメンテとか。

tiarraとtiarraMetroの設置方法(Ubuntuの場合)

2015/09現在です。tiarraMetroもセットで設置する前提で合わせて記載。

tiarra本体

$ cd /opt
$ svn co http://svn.coderepos.org/share/lang/perl/tiarra/trunk/ tiarra

最後の引数(tiarra)は設置するディレクトリ名です。上記の場合は/opt/tiarra配下に降ってきます。

tiarraMetro

$ git clone https://github.com/tyoro/tiarraMetro.git tiarraMetro

最後の引数(tiarraMetro)は設置するディレクトリ名です。省略しても構いませんが自分の場合は複数設置するので変更します。

tiarraMetroに同梱されているLog:DBIをtiarra本体のmoduleディレクトリへ。

$ cd tiarraMetro/misc
$ cp DBI.pm /opt/tiarra/module/Log/ 

同じくSendMessage.pmもmoduleディレクトリへ。

$ cp SendMessage.pm /opt/tiarra/module/System/SendMessage.pm

tiarraのUnixSocketのパーミッションを700から777へ変更。

$ vi /opt/tiarra/main/ControlPort.pm 

table_create.sql 内の「utf8」を「utf8mb4」に置き換えます(絵文字対応のため。MySQLのバージョンが古いと非対応なので注意)。

$ vi table_create.sql

べつにviじゃなくてもなんでもいいですが、以下のように書き換えてください。

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;

MySQLの設定をします。

$ sudo vi /etc/mysql/my.cnf

my.cnfに以下の3行を追加。

innodb_file_format = BARRACUDA
innodb_file_per_table = ON
innodb_large_prefix = ON

restartして、ちゃんと反映されたか確認。

$ sudo service mysql restart
$ mysql -u root -p
mysql> show variables like 'innodb_large_prefix';
+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| innodb_large_prefix | ON    |
+---------------------+-------+
1 row in set (0.00 sec)

ONになってればOK。

database作成に入ります。db_name,username,passwordは適宜名前をつけてください。あとで使います。

mysql> create database db_name character set utf8mb4;

DBができたかどうか確認。

mysql> show databases;

できてたら次は権限の設定。

mysql> grant all privileges on db_name.* to username@localhost identified by 'password';
mysql> show grants for username@localhost;

うまくいってたらこんな感じになるはず。

+------------------------------------------------------------------------------------------------------------------+
| Grants for yukichan1@localhost                                                                                   |
+------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'username'@'localhost' IDENTIFIED BY PASSWORD '*XXXXXXXXXXXXXXXXXXXX' |
| GRANT ALL PRIVILEGES ON `db_name`.* TO 'username'@'localhost'                                          |
+------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

おわったらさっきのsqlファイルを読み込みます。

mysql> quit
Bye
% mysql -u username -p db_name
mysql> source table_create.sql

※以下のようにしても可。

$ mysql -u username -p db_name < table_create.sql

下記のエラーが発生した場合はここまでのどこかでミスってる可能性が高いのでやり直しです!!

ERROR 1071 (42000) at line 1: Specified key was too long; max key length is 767 bytes

無事におわったらテーブルできたよね確認。

mysql> show tables;
+----------------------------+
| Tables_in_db_name     |
+----------------------------+
| channel                    |
| log                        |
| nick                       |
| priv                       |
+----------------------------+
4 rows in set (0.00 sec)

文字コードとか合ってるよね確認。

mysql> show table status like 'log'\G
*************************** 1. row ***************************
           Name: log
         Engine: InnoDB
        Version: 10
     Row_format: Dynamic
           Rows: 0
 Avg_row_length: 0
    Data_length: 16384
Max_data_length: 0
   Index_length: 49152
      Data_free: 0
 Auto_increment: 1
    Create_time: 2015-09-29 18:56:14
    Update_time: NULL
     Check_time: NULL
      Collation: utf8mb4_general_ci
       Checksum: NULL
 Create_options: row_format=DYNAMIC
        Comment:
1 row in set (0.00 sec)

tiarra起動

tiarraのconfigを /home/karia/conf/tiarra/hoge.conf に置いた場合です。

$ perl /opt/tiarra/tiarra --config=/home/karia/conf/tiarra/hoge.conf 

ERRORがないことを確認しましょう!!

いけそうなら下記のようにバックグラウンドで動作させれば良いかと。ログ吐き先を/dev/nullにするか実ファイルにするかはお好みで(よほどディスクが足りないとかじゃなければ実ファイルに吐いておいたほうがよいと思う)。

$ nohup perl /opt/tiarra/tiarra --config=/home/karia/ap/tiarra/karia.conf >> /dev/null 2>&1 &

tiarraMetro起動

tiarraMetroのconfをつくります。

$ cp conf.yaml.sample conf.yaml
$ vi conf.yaml

さきほどMySQLに設定した内容を以下のように記載します。

DATABASE_ID: 'db_name'
DATABASE_PASS: 'password'
DATABASE_NAME: 'username'

つぎにNginxのconfをかきます

$ sudo vi /etc/nginx/conf.d/hoge.conf

ファイル名は適当です。中身はこんなん。

server {
    listen 80;
    server_name hogefuga.side2.net;

    location / {
        root /path/to/tiarraMetro/public;
        index index.php;
    }

    if (-f $request_filename) { break; }
    if (-d $request_filename) { break; }
    rewrite . /index.php last;
}

こんな感じで保存。

$ sudo /etc/init.d/nginx configtest

configtestもsudoじゃないとコケるっぽい。

$ sudo /etc/init.d/nginx restart

ブラウザから動作確認してください。

tiarraMetroの過去データを退避してテーブルを作り直す手順

※AUTO_INCREMENTの数値が増加するため必ずtiarraを停止した状態で実施する

show tables;

テーブルの一覧をまず確認。対象テーブルは基本的にはlogのみでOK(channelも実施すると見た目的に良いかも)。

show create table log;

このコマンドを実行することで以下のようにcreate文が表示されるので、丸ごとエディタ等にコピーし、最後に;(セミコロン)を付与する。 ※AUTO_INCREMENTの値は変動する。また "DEFAULT CHARSET=utf8mb4" にすると絵文字が正しく表示できるようになる(要MySQL5.5.3以上)。

CREATE TABLE `log` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `channel_id` int(11) DEFAULT NULL,
  `nick_id` int(11) DEFAULT NULL,
  `log` text,
  `is_notice` tinyint(4) DEFAULT NULL,
  `created_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `updated_on` datetime DEFAULT NULL,
  PRIMARY KEY (`id`,`created_on`),
  KEY `nick_id` (`nick_id`),
  KEY `id_idx` (`id`),
  KEY `created_channel` (`created_on`,`channel_id`),
  KEY `channel_id_and_created_on` (`channel_id`,`created_on`)
) ENGINE=InnoDB AUTO_INCREMENT=xxxxxxx DEFAULT CHARSET=utf8
;

logテーブルをリネームする。

rename table log to log_20140807;

先ほど退避しておいた "CREATE TABLE `log`"以下の構文を丸ごとペーストする。何度もいうけど最後にセミコロンの付与を忘れずに。

logテーブルが作られたことを確認する。

show tables;

tiarraを起動して動作確認して終わり。

CentOSの場合

※すごい古いので参考にしないほうがよいです(2015年9月追記)

$ wget http://www.clovery.jp/tiarra/archive/2010/02/tiarra-20100212.tar.gz
$ tar xzvf tiarra-20100212.tar.gz
$ mv tiarra-20100212 /opt/tiarra 
$ /usr/bin/perl /opt/tiarra/tiarra --config=/home/karia/karia.conf

とやればおもむろに起動できますが、たぶんなんかエラー吐きます。ここから下はエラーを地道に潰した記録。rootもしくはsudoでどうぞ。

# cpan -i HTTP::Request::Common

ここから下はAuto::Notifyを使わない人は不要だと思う。

# yum -y install openssl-devel

必ず-develにすること。

# yum -y install perl-Crypt-SSLeay.x86_64

cpanでOpenSSL認識してくれなかったので仕方なく。

# cpan -i IO::Socket::SSL

リロード   新規 下位ページ作成 編集 凍結 差分 添付 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS