そろそろ本ブログの開始の趣旨に則って、Ubuntuによるサーバ稼働のテストを開始したいと考えはじめた。
以前、Vine LinuxやDebian(woody)でサーバを運用していたときは、テストの段階から友人と掲示板で情報交換を行っていた。
DNS、smtp、pop、ftp、http等、結構いろいろテストしていて、それなりに手順がまとまっていた。その後、本番のサーバを作るにあたって、
これを参考にして順次サーバを稼働させた。
幸い、一ユーザのホームディレクトリ(/home/*/public_html)にて開設していたサイトであったので、まるごとバックアップもとってある。
せっかくなので、サブPC(Chikyu)のKubuntuにApacheをインストールして、その掲示板を参照しながら、メインPCでサーバ設定ができるようにしたいと思い、実行した。
目的
Kubuntu 11.04 desktopにApache2をインストールし、以前の掲示板CGIの記事が読めるようにする。
Apache2の設定について
- LAN内部での参照であるので、[http://IPアドレス/~ユーザ名/]で指定してWebブラウザで参照できるようにする。
- cgiは[http://IPアドレス/~ユーザ名/cgi-bin/test.cgi]のようにして参照できるようにする。
- cgiのプログラムはcgiかplを拡張子とする。
大まかな手順
Apache1.*のころとは、設定ファイルの作り方が大きく変化しているようで、非常にとまどった。幸い今回はユーザディレクトリの設定のみであるため、次の手順で行うこととした。
- Apache2のインストール
- Apache2の稼働確認
- 上記「Apache2の設定について」の内容の設定(設定ファイルへの修正)
- 設定ファイルを反映させるシンボリックリンクの作成(a2enmodの利用)
- 設定のテストによる確認
Apache2のインストール
KubuntuのKPackageKitより、apacheで検索し、apache2とapache2-docをインストールする。
apache2-docはインストール指定しなくても問題ないはずであるが、インストールしておくとWebブラウザでApache2のドキュメントが読めるようになり便利。
Apache2の稼働確認
http://192.168.13.13/ (←LAN内部のPCからWebブラウザ等でIPアドレス指定を直接指定して接続する。
これで、Webブラウザに「It works!」
と表示されればApache2が稼働していると確認できる。
設定ファイルの修正
前節で決めた今回の設定について、二つの設定ファイルを変更する。
設定ファイルは、二つとも/etc/apache2/mods-availableに存在している。
ひとつめは、mime.conf。ふたつめは、userdir.conf。
修正するまえに、両ファイルのバックアップを作成しておく。
mime.confの修正
以下の行を検索して修正する。
#AddHandler cgi-script .cgi → AddHandler cgi-script
.cgi .pl
上のように、文頭の[#]を削除し、最後に[ .pl ]を加える。
userdir.confの修正
以下の内容とする。
<IfModule mod_userdir.c>
UserDir public_html
UserDir disabled root
<Directory
/home/*/public_html>
AllowOverride
none
Options
MultiViews
SymLinksIfOwnerMatch
<Limit
GET
POST
OPTIONS>
Order
allow,deny
Allow
from
all
</Limit>
<LimitExcept
GET
POST
OPTIONS>
Order
deny,allow
Deny
from
all
</LimitExcept>
</Directory>
<Directory
/home/*/public_html/cgi-bin>
Options
+ExecCGI
</Directory>
</IfModule>
設定ファイルを反映させるシンボリックリンクの作成
/etc/apache2ディレクトリの下に、mods-availableとmods-enabledというディレクトリがあるが、mods-
availableにあるmoduleの設定がmods-enabledにシンボリックリンクを作成することでapache2本体に反映される(と推測し
た。)
以前のLinuxの起動プロセスで/etc/init.dにあるファイルのシンボリックリンクを/etc/rc*.dディレクトリに置いてランレベルごと
にデーモンの起動管理を行っていたのを思い出した。似ている感じである。
手処理でコマンドを叩いても構わないと思うが、設定をするa2enmodと設定をはずすa2dismodというコマンドがあるので、これを利用する。
なお、/etc/apache2/mods-enabledを見てもらうとわかるが、mimeについては、すでに存在しているのでuserdirのみの処理となる。
kitatanuki@chikyu:/etc/apache2/mods-available$ sudo a2enmod
Your choices are: actions alias asis auth_basic auth_digest authn_alias
authn_anon authn_dbd authn_dbm authn_default authn_file authnz_ldap
authz_dbm authz_default authz_groupfile authz_host authz_owner
authz_user autoindex cache cern_meta cgi cgid charset_lite dav dav_fs
dav_lock dbd deflate dir disk_cache dump_io env expires ext_filter
file_cache filter headers ident imagemap include info ldap log_forensic
mem_cache mime mime_magic negotiation proxy proxy_ajp proxy_balancer
proxy_connect proxy_ftp proxy_http proxy_scgi reqtimeout rewrite
setenvif speling ssl status substitute suexec unique_id userdir
usertrack version vhost_alias
Which module(s) do you want to enable (wildcards ok)?
userdir
Enabling module userdir.
Run '/etc/init.d/apache2 restart' to activate new configuration!
kitatanuki@chikyu:/etc/apache2/mods-available$ sudo
/etc/init.d/apache2
restart
* Restarting web server
apache2
(緑の太字が実際の入力)
設定のテストによる確認
テスト用のhtmlファイルindex.htmlという名称で作成し、/home/kitatanuki/public_html/に保存する。ま
たテスト用のcgiファイルをtest.cgiという名称で作成し、/home/kitatanuki/public_html/cgi-bin/に保存する。test.cgiはパーミッションを755として実行可能としておく。
htmlについては、[ http://192.168.13.13/~kitatanuki/]で表示されることを確認。cgiについても[
http://192.168.13.13/~kitatanuki/cgi-bin/test.cgi]で結果が表示されることを確認できた。
補足
設定の狙いとしては、ホームディレクトリの下のpublic_html/cgi-binでしかcgiが動かず、そしてcgiとpl以外の拡張子ではそのディレクトリでもcgiとして認識されないということもあるが、今回はそこまではテストしていない。
apacheは当初、設定ファイルが3つあって、それが煩雑だということでhttpd.confひとつにまとめられるようになったと認識していたので、
apache2の設定の複雑さには、非常に驚いた。
インターネットで設定例を見ても、いろいろなやり方があり、上記の内容にたどりつくのには、かなりの時間を要した。
いわば、モジュールの設定とインストールが組み合わせになっているということなのかもしれないが、なかなか理解しづらい。
最近のコメント