組み込みデバイスの管理とインタラクションでは、Web モードに基づくアプリケーションが主流になっています。このタイプのサーバーは、リソースをあまり占有せず、効率的に実行されるだけでなく、実際のニーズに応じてページ コンテンツを動的に生成することもできます。ユーザーは、追加のソフトウェアをインストールしたり、複雑な構成を設定したりすることなく、一般的に使用されている Web ブラウザーのみを介して、組み込みデバイスのリモート管理、状態監視、機能制御を実現できます。
BOA は軽量で効率的な組み込み Web サーバーで、リソース消費が最小限で構成が簡単なことで知られています。メモリと処理能力が限られているデバイスに特に適しており、基本的な Web 機能を提供します。この記事では、FET-MX9352-C プラットフォームに boa サーバーを移植する方法について説明します。
ソースコードをコンパイルするには?
ダウンロードアドレス:
1. 依存ライブラリをインストールする
sudo apt-get install bison flex
Ubuntuでソースコードを解凍する
$ tar xvf boa-0.94.14rc21.tar cd boa-0.94.14rc21/
boaソースコードを変更する
src/compat.h を修正する
探す
#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
変更する
#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff
それ以外の場合はエラーが発生します:
util.c:100:1: エラー: 「t」と「->」を貼り付けても有効なプリプロセス トークンが生成されません。make: *** [util.o]
エラー 1
src/log.c を修正する
探す
if (dup2(error_log, STDERR_FILENO) == -1) { DIE("unable to dup2 the error log"); }
変更する
/*if (dup2(error_log, STDERR_FILENO) == -1) { DIE("unable to dup2 the error log"); }*/
それ以外の場合はエラーが発生します:
log.c:73 エラー ログを複製できません: ファイル記述子が不正です
src/boa.c を修正する
探す
if (passwdbuf == NULL) { DIE(”getpwuid”); } if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) { DIE(”initgroups”); }
変更する
#if 0 if (passwdbuf == NULL) { DIE(”getpwuid”); } if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) { DIE(”initgroups”); } #endif
それ以外の場合は、エラーが発生します: boa.c:211 - getpwuid: そのようなファイルまたはディレクトリはありません
環境変数を設定してコンパイルする
. /opt/fsl-imx-xwayland/6.1-mickledore/environment-setup-armv8a-poky-linux ./configure --host=arm-linux make aarch64-poky-linux-strip src/boa
この時点で、boaはクロスコンパイルされている
予想されるファイルパス examples/boa.conf および SRC/boa
2. boa.confを変更する
vi boa.conf
(1)グループの変更
グループの変更 nogroup
グループルートへ
(2)ユーザーによる変更
ユーザーの変更nobody
ユーザールートへ
(3)DocumentRootを変更する
ドキュメントルート /var/www
(4)ScriptAliasを変更する
スクリプトエイリアス /cgi-bin/ /usr/lib/cgi-bin/
(5)サーバー名の設定
#ServerName を www.your.org.here に変更します
サーバー名 www.your.org.here
そうでない場合、「gethostbyname::No such file or directory」というエラーが発生します。
3. テストファイルをコンパイルする
Ubuntuでソースコードを解凍する
tar xvf cgi_app.tar.gz cd cgi_app/
ファイルをクリーンアップする
make clean
環境変数を設定してコンパイルする
. /opt/fsl-imx-xwayland/6.1-mickledore/environment-setup-armv8a-poky-linux $CC -o app.cgi cgi_app.c cJSON/cJSON.c
app.cgi を生成する
4.開発ボードへの配置
ディレクトリを作成するには、開発ボードで次のコマンドを入力します。
mkdir /usr/lib/cgi-bin mkdir /var/www mkdir /etc/boa
mkdir /usr/lib/cgi-bin/ 目次app.cgiを/usr/lib/cgi-bin/ディレクトリに置く
index.html、xmlhttpreq.jsを/var/www/フォルダに置く
boa.confを/etc/boa/ディレクトリに置く
boaを/usr/bin/ディレクトリに置く
MIMEタイプを/etc/ディレクトリに配置する
権限の変更
chown root:root /var/www/* chown root:root /usr/lib/cgi-bin/app.cgi chmod o+x /usr/lib/cgi-bin/app.cgi chmod o+r /usr/lib/cgi-bin/app.cgi
元のネットワークサービスをオフにする
9352のlighttpdサービスが自己起動しているため、ps aux | grep httpでそのプロセスIDを確認できます。Lighttpdサービスの起動を無効にするには、vi /lib/systemd/system/lighttpd.serviceの8行目と9行目を次のように変更します。
#ExecStartPre=/usr/sbin/lighttpd -tt -f /etc/lighttpd/lighttpd.conf #ExecStart=/usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf
ログファイルを作成する
Vi/etc/autorun.sh これをmkdir/var/log/boaに書き込んで再起動する
開発ボード上で次のコマンドを入力して boa を起動します。
boa
コンピュータと開発ボードはネットワーク ケーブルを介して直接接続され、コンピュータはブラウザーを開いて開発ボードの IP にアクセスします。