29このサイトについて本サイトは舞台に立てるロボットを目指して、私が取り組んでいるプロセスを、主として記憶のために書き連ねているものです。RSSWordPress.orgNAOのnginxでc++で作成したcgiを動かすNAOの内蔵ウェッブサーバーのnginxでC++で作成した実行ファイルをCGIとして動かす手続きが理解できたので、メモがわりに書いておく。(1)ヴァーチャルなNAOであるopen-naoにlibfcgiの一連のツールをインストールする。installで、インストールしたが、他にもfastcgi++-2.1.tar.bz2なんかでもできそうだがやっていない。(2)spawn-fcgi-1.6.4.tar.gzを取ってきて、./configuremakeする。私は、ubuntuの32ビット版の方でやってしまったが、open-naoの方でもできると思う。インストールしなくてもよい。srcフォルダにspawn-fcgiができているので、そのまま、open-naoに持ってきた。open-naoで作ったら当然、そのままでいい。このspawnは、c++で作成した実行ファイルを、nginxからのリクエストに応じて、実行させるための媒体のようなものだ。(3)open-nao上で実行ファイルを作成する。(32ビット版だからといって、ubuntuで作ると、libcのバージョン違いで失敗してしまった)この辺りのことは、http://chriswu.me/blog/writing-hello-world-in-fcgi-with-c-plus-plus/に決定的に依存している。このページがなかったら、nginxでfastcgiを動かすイメージが、全く湧かなかったと思う。そこにサンプルがあるから、open-nao上で、nanoエディタで作成してコンパイルすると良い。open-naoには、開発環境が一通り揃っているし、ロボットと同じ実行環境が約束されている。open-naoとPCとのファイルの転送は、psftpを使う必要がある。(4)つぎに、naoのnginxの設定ファイルをいじる。設定ファイルは、/etc/nginxの中の、nginx.confに書かれている。(万が一のため、オリジナルのnginx.confをnginx.conf.orgなどにコピーしておく)設定ファイルのなかに、次の行を加える。fastcgi_params;}この意味は、cgiという拡張子がついたファイルへのアクセスは、ローカルの8000版ポートで待機している実行ファイルを起動させることにする、というものだ。(5)ロボット内でnginxを再起動する。restartでよい。エラーがなければ問題ない。(6)次に、(1)で作成したライブラリの/usr/local/lib以下にある、libfcgiで始まるファイルを全部zipなどでアーカイブして、nao本体に送り込む。/usr/local/lib以下に同じように解凍する。その際、シンボリックリンクが壊れているので、もとの、open-naoの/usr/local/lib以下でのシンボリックをそのまま再現する。foobar.cgiと立ち上げる。(8)ロボットの外から、アクセスすれば、foobar.cgiが実行される。</body></html>という感じで出力される。