CentOS6.x



2013年 5月 20

Server::Starter + Starlet

以前はdaemontools+Starmanで起動していたのだけれど、
最近のPlack/Starletのパフォーマンス改善まとめ。最大2倍の性能向上を読んでたらStarletが使ってみたくなったのでServer::Starter+Starletを試してみることに。

コマンドラインから起動してみる。

start_server --port=3000 -- plackup -s Starlet --max-workers=5 my app.pl

start_server (pid:31803) starting now...
starting new worker 31804
Plack::Handler::Starlet: Accepting connections at http://0:3000/

これでポート3000でサーバが待ち受けています。

UpStart

CentOS6に乗り換えたし、折角なのでデーモンの管理はUpStartに乗り換えてみる。CentOS6は標準でインストールされている(というかSysVinitが置き換わった?)なので以下のコマンドが最初から使えるみたい。daemontoolsとかsupervisorとか要らなくなりそう。

  • start SEVICE_NAME
  • stop SEVICE_NAME
  • reload SEVICE_NAME
  • restart SEVICE_NAME

perlの起動方法がよく分からなかったけどStack Overflowでそれっぽい記事を発見したので参考に書いてみた。

vi /etc/init/MyApp.conf

description "MyApp"
author "clicktx<clicktx@mail.tld>"

start on runlevel [2345]
stop on runlevel [016]

chdir /home/clicktx/MyApp/Web
script
  export PATH="/home/clicktx/perl5/perlbrew/bin:/home/clicktx/perl5/perlbrew/perls/perl-5.16/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/clicktx/bin:${PATH}"

  exec su -c "start_server --pid-file=/tmp/myapp.pid --status-file=/tmp/myapp.status --port=3000 -- plackup -s Starlet --max-workers=5 myapp.pl" clicktx
end script

respawn

※ exportするPATHは各自 echo $PATHで確認

サービスの起動
$ sudo start MyApp
MyApp start/running, process 32114

start は initctl start というコマンドのエイリアスのようだ。全てのジョブリストの確認は

$ sudo initctl list

とかで出来る。

余談

start_serverで起動するMojoliciousアプリケーションは他のperlスクリプトから再起動を受け付けたいので、–pid-fileと –status-file オプションを付けている(start_server –restartの場合は必須なので)

他のスクリクトから、

#!/usr/bin/env perl
system "start_server --restart --pid-file=/tmp/myapp.pid --status-file=/tmp/myapp.status";

なんて出来る。もちろんコマンドラインでも出来るけど。

あと、

start_server --port=127.0.0.1:3000 -- plackup -s Starlet myapp.pl

なんてしておくと、http://xxxx:3000 でアクセスされても表示されないみたい。

参考エントリー

Filed under: CentOS6.x,perl

Trackback Uri






2013年 5月 15

yumでインストールしたphpMyAdmin。途中は端折るけど、「mcrypt 拡張をロードできません。PHP の設定を確認してください」のエラーが消えない。

$ php -v
# php -v
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/module.so' - /usr/lib64/php/modules/module.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP 5.3.3 (cli) (built: Feb 22 2013 02:51:11) 
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

色々ググッた結果このエントリーを発見

「mcrypt 拡張をロードできません。PHP の設定を確認してください」

# vi /etc/php.d/mcrypt.ini 
; Enable mcrypt extension module
extension=mcrypt.so

こんなトラップが仕掛けられているとは恐れ入る。


Filed under: CentOS6.x,phpmyadmin

Trackback Uri






2013年 5月 13

openssl-develをインストールしてからインストールする。

sudo yum install openssl-devel
cpanm Net-SSLeay

Filed under: CentOS6.x,perlモジュール,インストールメモ

Trackback Uri






2013年 5月 10

groonga

どうやらcentosではmecab単体のパッケージが提供されていないので、groongaをインストールする。

2.5. CentOS — groonga v3.0.3ドキュメント

groongaのリポジトリを追加
% sudo rpm -ivh http://packages.groonga.org/centos/groonga-release-1.1.0-1.noarch.rpm
groongaのトークナイザーにmecabを使う
% sudo yum install -y groonga-tokenizer-mecab
================================================================================
 Package                   Arch     Version                     Repository
                                                                           Size
================================================================================
Installing:
 groonga-tokenizer-mecab   x86_64   3.0.3-0.el6                 groonga    18 k
Installing for dependencies:
 mecab                     x86_64   0.996-1.el6                 groonga   2.3 M
 mecab-ipadic              x86_64   2.7.0.20070801-6.el6.1      groonga    13 M

Transaction Summary
================================================================================
Install       3 Package(s)

mecab本体と辞書がインストールされます。

もしかするとgroonagリポジトリ追加して、yum install mecab mecab-ipadic で良かったかも。groonga必要だからいいけど。


Filed under: CentOS5.x,CentOS6.x,インストールメモ

Trackback Uri