Webサーバー"Apache"のインストールと、ローカルでCGIを動かせるようにするためのセッティング。
Apacheは非常にポピュラーなWebサーバーで、特にUnix系サーバーではほぼデファクトスタンダードとして使われています。 Linuxザウルスも例外ではなく、Apacheがポートされており、ローカルでCGIが動く環境を作ることができます。
最小限の内容で記述しています。
Apacheについての詳細は、関連するWebサイトを調べてください。 幸い、Apacheの設定その他についてはLinuxでのApacheの情報がほぼすべて有効です。 おそらく、日本Apacheユーザー会のサイトなどは参考になると思います。
Linuxザウルス向けにApacheをビルド、パッケージングして配布されているchoup.netからipkを取得します。 今回私が使ったのは、「Apache 1.3.29 with module support - Strongarm」(ファイル名apache-1.3.29-so-sa1100-deb_0.2_arm.ipk)です。 ダウンロードが完了したら、ソフトウェアの追加/削除でインストールを行ってください。
インストールが済んだら、/home/www/bin/apachectlを編集します。 まず24、25行目。 以下のようにします。
# the path to your PID file PIDFILE=/home/www/logs/httpd.pid
次に27、28行目。
# the path to your httpd binary, including options if necessary HTTPD='/home/www/bin/httpd'
これが済んだら保存してください。 その後rootユーザーで、ターミナル上で以下を実行します。
/home/www/bin/apachectl start
これで、apacheが起動されたはずです。 NetFrontなどのブラウザで、以下のアドレスにアクセスし、ディレクトリリストが表示されることを確認してください。
http://localhost/
/home/www/conf/httpd.confを編集します。 まず310行目。 以下のようにします。
Options Indexes FollowSymLinks MultiViews ExecCGI
次に748行目のコメントを外します。
AddHandler cgi-script .cgi
以下のようなファイルを作成し、/home/www/htdocs/test.cgiに保存してください。
#!/bin/sh echo "Content-type: text/html" echo echo "<html>" echo " <head><title>test cgi</title></head>" echo " <body>" echo " <h1>This is test CGI.</h1>" echo " Process ID : <font color=\"red\">$$</font>" echo " </body>" echo "</html>"
ターミナル上で以下を実行して、このCGIに実行権限を与えます。
chmod 775 /home/www/htdocs/test.cgi
ターミナル上で以下を実行して、CGIが正しく作成できていることを確認します。
/home/www/htdocs/test.cgi
ここまでで問題がなければ、ブラウザで以下のURLにアクセスし、CGIが動作することを確認してください。
http://localhost/test.cgi
、システム起動時の起動項目にApacheの起動も含めることができます。 以下のコマンドをrootで、ターミナルから実行してください。
ln -s /home/www/bin/apachectl /etc/rc.d/rc5.d/S99apachectl
このディレクトリに置かれた"Sxx"で始まるファイルは、xxの数字の順にシステムの起動時(のrunlevelを5にあげるとき)に"start"の引数つきで実行されます。 ということは、apachectlがここにあれば良い、ということなので、ファイルをコピーする代わりにシンボリックリンクを張る形でこのディレクトリに入れました(一般にrc.d/rcx.dに対して良く行われる手法です)。 逆に、停止時を考えてrc4.dに"Kxxapachectl"のようなシンボリックリンクを用意するのがトラディショナルだと思うのですが、rc.d以下に"Kxx"ファイルが見当たらなかったので、ここでは省いています。
ただし、常にApacheが起動している状態になりますので、ネットワーク接続時に外部からアクセスされる可能性があることに気をつけてください。 おそらく.htaccessを利用したアクセス制限をかけるのが正しいのだとは思いますが、そのあたりには詳しくないのでここでは触れません。
Apacheの導入目的がローカルでのWebコンテンツ・Webアプリケーション(CGI、PHP等)確認であれば、デフォルトの設定はちょっとリッチに過ぎるでしょう。 /home/www/conf/httpd.confを編集します。 139から140行目。 以下のようにします。
MinSpareServers 2 MaxSpareServers 5
次に146行目。
StartServers 2
次に155行目。
MaxClients 30
なお、もしLinuxザウルスを常時接続環境におき、Webサーバーとして活用するのが目的であればこのような設定をする必要はありません。 おそらく、まずは初期設定で使ってみるのが良いでしょう。
「起動を自動化する」代わりに、「起動をお手軽にする」方法です。 この項はyaktyさんが作成してくれました。
keyhelper.confのランチャー設定に下記の様な設定を追加します。 rootで実行する必要があるのでsudoをインストールしておく必要があります。
キーランチャーなら
S = @exec[TAB]/usr/bin/sudo /home/www/bin/apachectl start T = @exec[TAB]/usr/bin/sudo /home/www/bin/apachectl stop
メニューランチャーなら
Apache起動(&S) = @exec[TAB]/usr/bin/sudo /home/www/bin/apachectl start Apache停止(&T) = @exec[TAB]/usr/bin/sudo /home/www/bin/apachectl stop
メニューランチャーでサブメニューを使うなら
A = @menu[TAB]apache [Apache] 起動(&S) = @exec[TAB]/usr/bin/sudo /home/www/bin/apachectl start 停止(&T) = @exec[TAB]/usr/bin/sudo /home/www/bin/apachectl stop
おそらく、ローカルCGI環境を構築する人のほとんどは、シェルスクリプトではなくPerlやその他の言語でCGIを作成したいと思っているでしょう。 必要な言語をインストールしてください。
Perlについては導入方法その他をLinuxザウルス/Perlにまとめてあります。
以下のパッケージをインストールすると、上の設定を実施してくれます。
以下が実行されます。
アンインストール時には逆に、リンクが削除され、apachectlやhttpd.confがインストール時に作成されたバックアップに戻されます。
上の設定パッケージを使った、ローカルCGI環境の簡単な構築方法です。
もしこれでうまく動いていないようであれば、ターミナル上で以下のコマンドを実行してください。
ll /home/www/bin/apachectl* /home/www/conf/httpd.conf* /etc/rc.d/rc5.d/S99*
正しくインストールされていれば、以下のような出力になるはずです。 ファイルの更新日時等や順番は変わることがありますが、ファイルサイズと、ファイルパスはこの通りになります。
lrwxrwxrwx 1 root root 23 Aug 17 21:42 /etc/rc.d/rc5.d/S99apachectl -> /home/www/bin/apachectl -rwxr-xr-x 1 root qpe 7101 Aug 17 20:59 /home/www/bin/apachectl -rwxr-xr-x 1 root qpe 7105 Jun 2 05:50 /home/www/bin/apachectl.bak -rw-r--r-- 1 root qpe 42283 Aug 17 21:00 /home/www/conf/httpd.conf -rw-r--r-- 1 root qpe 43413 Feb 28 00:48 /home/www/conf/httpd.conf.bak