ロボット間通信は、いくつかの方法で実装していますが、その一部を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 |
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
[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 :[root@rcmp-r03 ~]# vi /etc/monkey/sites/default
[HOST]
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
[CGI]
Match /cgi-bin/.*\.cgi .*\.sh .*\.pl add extensions
[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
(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
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/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 件のコメント:
コメントを投稿