LINUX



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






2012年 10月 16

epelでNginxをyumでインストールする場合、バージョンが0.8.55と古い。

================================================================================
 Package         Arch         Version                    Repository        Size
================================================================================
Installing:
 nginx           i386         0.8.55-2.el5               epel             390 k
Installing for dependencies:
 gd              i386         2.0.33-9.4.el5_4.2         base             154 k
 geoip           i386         1.4.6-1.el5.rf             rpmforge         782 k
 libXpm          i386         3.5.5-3                    base              45 k
 libxslt         i386         1.1.17-4.el5_8.3           updates          420 k

Transaction Summary
================================================================================
Install       5 Package(s)
Upgrade       0 Package(s)

Nginx公式リポジトリを使えば簡単に最新版のNginxをインストールできるようです。

  • CentOS-6へ最新版のnginxを3分でインストールする方法 – Y-Ken Studio
  • nginx: download にRHEL 5, RHEL 6, CentOS 5, CentOS 6 用のリポジトリが用意されています。

    リポジトリを登録

    OSのバージョンにあったリポジトリをインストールします。

    # rpm -ivh http://nginx.org/packages/centos/5/noarch/RPMS/nginx-release-centos-5-0.el5.ngx.noarch.rpm

    インストール

    # yum install nginx
    
    
    ==================================================================================
     Package         Arch           Version                     Repository       Size
    ==================================================================================
    Installing:
     nginx           i386           1.2.3-1.el5.ngx             nginx           350 k
    
    Transaction Summary
    ==================================================================================
    Install       1 Package(s)
    Upgrade       0 Package(s)
    
    Total download size: 350 k
    Is this ok [y/N]: y
    

    Filed under: CentOS5.x,インストールメモ,サーバ管理

    Trackback Uri