lighttpdのインストールと基本的設定
PerlやRubyやPHPなどを使ったウェブアプリケーションのプログラミングについて学ぶため、apacheよりも軽くて高速で動くウェブサーバであるとされるlighttpdをインストールしてみることにした。
# aptitude update; aptitude install lighttpd 以下の新規パッケージがインストールされます: fam{a} libfam0{a} libterm-readkey-perl{a} libterm-readline-perl-perl{a} lighttpd portmap{a} 更新: 0 個、新規インストール: 6 個、削除: 0 個、保留: 0 個。 528kB のアーカイブを取得する必要があります。展開後に 1724kB のディスク領域が新たに消費されます。 先に進みますか? [Y/n/?]
ここでYと入力してEnterキーを押せばダウンロードとインストールが始まる。
lighttpdの設定ファイルは/etc/lighttpd/lighttpd.confに存在する。vimというエディタを使って設定内容を少し修正してみる。
# vim /etc/lighttpd/lighttpd.conf
server.modulesでは読み込まれるモジュール名が指定されているようだ。行頭の#はコメントアウトだと思われる。行頭に#を記述するとその行の記述が単なるコメントとして認識されて無効になる。CGIを動作させるためにここにはmod_cgiモジュールを追加した。
server.modules = ( "mod_access", "mod_alias", "mod_compress", "mod_redirect", # "mod_rewrite", "mode_cgi" )
server.document-rootではドキュメントルートすなわちHTMLなどを記述したファイル群を置くディレクトリが指定されているようだ。デフォルトでは"/var/www/html"となっていたが、webアプリケーションの開発用にlighttpdを使うだけなので、いつも使用している一般ユーザのホームディレクトリに/varを置き換えた。user_nameは任意のユーザ名。
server.document-root = "/home/user_name/www/html"
server.upload-dirsではアップロードの際に使われる一時ファイルなどを置くディレクトリが指定されているようだ。Linuxでは通常/var/tmpになるらしいが、Debian GNU/LInux 8では次のように設定されていた。
server.upload-dirs = ( "/var/cache/lighttpd/uploads" )
server.errorlogでは文字どおりエラーログが記録されるファイル名とそれが置かれるディレクトリが指定されているようだ。webアプリケーションの開発用に使うだけなので、デフォルトの/varをホームディレクトリに置き換えた。user_nameは任意のユーザ名。
server.errorlog = "/home/user_name/log/lighttpd/error.log"
server.pid-fileではプロセスIDが保存されるファイル名とそれを置くディレクトリが指定されているようだ。
server.pid-file = "/var/run/lighttpd.pid"
server.usernameとserver.groupnameではlighttpdが実行される際にその所有権限を持つユーザ名とグループ名が指定されているようだ。これは安全上きわめて重要な設定なのでデフォルトのままにしておく。www-dataはApacheがデフォルトで使うユーザ名及びグループ名と同じ。
server.username = "www-data" server.groupname = "www-data"
server.portではポート番号を設定するようだ。デフォルトでは80が指定されていた。
server.port = 80
index-file.namesではserver.document-rootで設定したディレクトリが呼び出されたときに自動的に検索されて表示されるファイル名を指定するようだ。いわゆるホームページのファイル名。
index-file.names = ( "index.php", "index.html", "index.lighttpd.html" )
url.access-denyではアクセスを拒否するパス名やファイル名が指定されているようだ。
url.access-deny = ( "~", ".inc" )
static-file.exclude-extensionsではソースへのアクセスを禁ずるファイルの拡張子が指定されているようだ。
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
compress.cache-dirでは圧縮されたコンテンツがキャッシュされるディレクトリが指定されているようだ。
compress.cache-dir = "/var/cache/lighttpd/compress/"
compress.filetypeでは圧縮されるかもしれないMIMEタイプが指定されているようだ。
compress.filetype = ( "application/javascript", "text/css", "text/html", "text/plain" )
cgi.assignではPerlでCGIを動作させるためにPerlのソースファイルの拡張子をPerlの実行ファイルに割り当てているようだ。それは例えば次のように記述する。
cgi.assign = ( ".pl" => "/usr/bin/perl", ".cgi" => "/usr/bin/perl" )
lighttpdの起動方法はコマンドラインから次のように入力する。
# lighttpd -f /etc/lighttpd/lighttpd.conf
-fオプションで設定ファイルの場所を指定している。標準ではバックグラウンドで実行される。
# /etc/init.d/lighttpd start
ウェブブラウザを起動してhttp://localhost/にアクセスし、「Placeholder page」と題するページが表示すれば成功。
CGIの動作を確認するために例えば次のようなPerlスクリプトを使う。環境変数の一覧が表示されれば成功。
#!/usr/bin/perl print "Content-type: text/html\n\n"; print "<!DOCTYPE html>\n"; print "<html>\n"; print "<head>\n"; print "<title>CGI Enviroment</title>\n"; print "<meta charset=utf-8 />"; print "</head>\n"; print "<body>\n"; print "<h1>CGI環境変数一覧</h1>\n"; print "<hr>\n"; @envs = sort(keys(%ENV)); for $env_name (@envs){ $value = $ENV{ $env_name }; print "$env_name = $value <br />\n"; } print "</body>\n"; print "</html>\n"; exit;
停止するときにはこうする。
# /etc/init.d/lighttpd stop
再起動するときにはこうする。
# /etc/init.d/lighttpd restart
ちなみに、lighttpdをインストールすると標準では/etc/init.d/下に起動スクリプトが登録されてしまうので、OSを起動したり再起動するたびに自動的に起動されてしまうことになる。Debianの理念では使わないサービスは削除(aptitude remove lighttpd
)しておくのが望ましいとされているようだ。purgeするのとは違い、removeでは設定ファイル群までは削除しないようだ。
他の選択肢として起動スクリプトだけを削除する方法もある。Debianではupdate-rc.dコマンドを使うことができる。
# /usr/sbin/update-rc.d lighttpd remove
次のようにすると元に戻る。
# /usr/sbin/update-rc.d lighttpd default
コメント
コメントを投稿