*tiarra [#nf5c3319] tiarraの設置方法とかメンテとか。 #contents **tiarraとtiarraMetroの設置方法(Ubuntuの場合) [#t78ad915] 2015/09現在です。tiarraMetroもセットで設置する前提で合わせて記載。 ***tiarra本体 [#lf3637bb] $ cd /opt $ svn co http://svn.coderepos.org/share/lang/perl/tiarra/trunk/ tiarra 最後の引数(tiarra)は設置するディレクトリ名です。上記の場合は/opt/tiarra配下に降ってきます。 ***tiarraMetro [#uac6ae9f] -参考:http://exe.tyo.ro/tiarrametro/introduction.html -前提:MySQLが導入・起動していること $ sudo apt-get install php-pear php5-mcrypt $ sudo php5enmod mcrypt $ sudo service php5-fpm restart まずはどっか適当なところでgit cloneします。 $ 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 「utf8」を「utf8mb4」に置き換えます(絵文字対応のため。MySQLのバージョンが古いと非対応なので注意)。べつにviじゃなくてもなんでもいいですが、書き換えてください。 $ vi conf/base.php define("DATABASE_CHARSET","utf8"); ↓ define("DATABASE_CHARSET","utf8mb4"); $ vi table_create.sql ) 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起動 [#d26c287e] 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起動 [#d62ca0a2] 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の過去データを退避してテーブルを作り直す手順 [#g1abae49] ※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の場合 [#dd1c8390] ※すごい古いので参考にしないほうがよいです(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 |