2013年1月22日火曜日

An Installation of a Monkey http server (1.1.1) on a Raspberry Pi

Raspberry PiにHttp Serverを構築する必要がありました。
ロボット間通信は、いくつかの方法で実装していますが、その一部をHTTPに変える事にしました。その為に、軽量なhttp serverが必要です。NginXも試しましたが、cgiを動かす仕組みがなくadd onのソフトが必要なのであきらめました。robotのコントローラとして使っているのでRaspberry Piには、いろいろなソフトを入れたくない
消去法で Monkey http server 1.1.1 にしました。結果的には、Monkeyで良かった。

私の様な用途、つまり”公開”用でなく内部システムのHTTP Serverとして使うには、このようなLightweightで、Simpleなソフトが必要である。大きな収穫でした。
http://monkey-project.com/
Monkeyは、ネットにも情報がありませんでした。手探りでインストールしてみました。Apacheと同じ感じです。結果は、perlのCGI も動かせる様になりました。
I found a report about the Monkey http server performance.

Monkey v/s NginX on a Raspberry PI - Monkey Project

インストール後、この画面がでればOK
Monkey http server(1.1.1-5)に関する感想や、注意事項
1) 設定ファイル編集
/etc/monkey/sites/defaultなどの編集ではtab送りをしない。
起動できないなどのエラーになる。
2) perl cgi の実行は、不安定な感じ? 大丈夫
CGI moduleをload するが、そのmoduleの問題かなぁ。perl cgi自体はコンソールで動くし、MacやISPのサーバで動いている。
発見!ちゃんと動きます。試しにやったら動きました。
perl
print "Content-Type: text/html\r\n\r\n";
sh
/bin/echo -e "Content-Type: text/html\r\n\r\n"
CプログラムをCGI経由で試したがperlと比較にならないくらい早い。やはりSDカードからのloadが大きい。CGI機能の確認の為にperlを使っただけです。
3) 感覚的には、静的なページは、NginXや、Apacheよりも早いかもしれない。
ただし、Raspberry PiはI/O系が少し弱いので、http serverはどれでも良いかも
僕は、通常のWebサーバーとしては使わないので影響はないですが。。。
4) Monkey についての基本的な情報がない
EQ(Emotional Intelligence)の低いソフトなので、推奨するソフトではありません。EQの低さは、Windowsにはかわなないけど。開発者自身の解説本も充実しているRaspberry Piは最高ランクです。EQを考えるとIT業界は成り立たないですが、、、
5) CUI開発に於ける、ArchLinuxの利便性(Monkeyとは、関係ないが。。。)
このような情報の少ないソフトを導入するときは、サービス起動、停止、rebootなどを繰り返しますが、Arch Linuxは爆速なので作業が早く進みます。何たって、rebootしても15秒以内で戻ってきます。コーヒを入れる間もない。(笑
GUIが必要なソフトは、Macで開発して、CUIベースでできる物は、Raspberry Piで十分です。ただ、くれぐれもRaspberry Piは、それなりに使うのが良いのです。

ところで、Web Server なのか? HTTP Server なのか?
私の場合は、ロボットシステムの通信手段として使うので、HTTP Serverです。

 Monkey自体の問題ではありませんが、注意点が一つあります。pacmanでアップグレードすると設定ファイルが上書きされます。必ず、/etc/monkeyの設定はコピーしておいて下さい。ただし、upgradeにより設定方法の変更があるかもしれませんので、上書きされた内容の確認は必要です。(2013/03/25)

------------------------------------------------------------------------------------------------
(1) Install packages
(2) Configure files
(3) Make directories and files
(4) Run (manual)
(5) Configure the systemd

(1) Install packages
[root@rcmp-r03 ~]# pacman -Syu
[root@rcmp-r03 ~]# pacman -S perl perl-archive-zip if you need...
[root@rcmp-r03 ~]# pacman -S monkey


(2) Configure files
[root@rcmp-r03 ~]# vi /etc/monkey/monkey.conf

    "port 2001"         to    "port 80"            change  a port number you want

    "User nobody"    to    "User root"          change   your root group user
    "UserDir public_html"    to   "UserDir /home/nao/public_html  
    "PidFile /var/run/monkey/monkey.pid" ->
                                  "PidFile /var/log/monkey/monkey.pid"
                '/var/run' is a link to '/run'.   '/run' is a ramdisk on Arch Linux

[root@rcmp-r03 ~]# vi /etc/monkey/plugins.load
# CGI
 ===
# This plugin enable the CGI support in Monkey. CGI is an old
# interface and not recommended for production enviroments, due
# to it nature, it lack of performance.
#
Load /usr/lib/monkey/monkey-cgi.so                           enable
[root@rcmp-r03 ~]# vi /etc/monkey/sites/default
[HOST]
    # DocumentRoot :
    DocumentRoot /var/http                                         enable & set
[CGI]                                                                             enable
    # Per-vhost CGI matching, same rules as with the global match
    Match /cgi-bin/.*\.cgi                                               enable  
[root@rcmp-r03 ~]# vi /etc/monkey/plugins/cgi/cgi.conf
[CGI]
     Match /cgi-bin/.*\.cgi .*\.sh .*\.pl                            add extensions  

(3) Make directories and files
[root@rcmp-r03 ~]# touch /var/log/monkey/access.log
[root@rcmp-r03 ~]# touch /var/log/monkey/error.log
[root@rcmp-r03 ~]# chmod +w /var/log/monkey/access.log
[root@rcmp-r03 ~]# chmod +w /var/log/monkey/error.log
[root@rcmp-r03 ~]# mv /srv/http /var
[root@rcmp-r03 ~]# mkdir /var/http/cgi-bin
[root@rcmp-r03 ~]# rm -r /srv
[root@rcmp-r03 ~]# mkdir /var/run/monkey

(4) Run (Manual)
[root@rcmp-r03 ~]# monkey -D 
Monkey HTTP Daemon 1.1.1
Built : Dec 14 2012 14:16:18 (gcc 4.7.2)
Home  : http://monkey-project.com
* Process ID is 1677
* Server socket listening on Port 80 
* 5 threads, 101 client connections per thread, total 505
* Transport layer by liana in http mode
[2013/01/22 12:55:33] [   Info] HTTP Server started

(5) Configure a systemd service
[root@rcmp-r03 ~]# vi /etc/systemd/system/monkey.service
[root@rcmp-r03 ~]# cat /etc/systemd/system/monkey.service
[Unit]
Description=Monkey http server deamon
Required=network.target
After=network.target
[Service]
Type=forking
ExecStart=/usr/bin/monkey -D
ExecStop=/bin/kill $MAINPID
ExecReload=/bin/kill $MAINPID ; /usr/bin/monkey -D
PIDFile=/var/log/monkey/monkey.pid.80
PIDFile=/var/run/monkey.pid.80
[Install]
WantedBy=multi-user.target
[root@rcmp-r03 ~]# systemctl enable monkey.service
ln -s '/etc/systemd/system/monkey.service' '/etc/systemd/system/multi-user.target.wants/monkey.service'
[root@rcmp-r03 ~]# reboot


peace!

0 件のコメント:

コメントを投稿