ブログの説明

学校に通わないで学んだことを記しています。間違っているところが何かありましたらご指摘下さると幸いです。コメントに対する返信が遅れる可能性があります。その場合は申し訳ありません。

このブログではサイドバーに広告を表示しています。このブログ内の投稿記事を検索するには右上の拡大鏡のアイコンを、アーカイブやラベル付けから投稿記事を閲覧するには左上の三重線のアイコンをクリックして下さい。

数式の表示にはMathJaxを利用させていただいています。数式の表示のためにJavaScriptが有効である必要があります。そうでない場合、訳の分からないLatexのコードが表示されます。幾何学図形やチャートの表示にはHTML5 CanvasやGoogle Chartを使用しています。その表示のためにもJavaScriptが有効である必要があります。

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オプションで設定ファイルの場所を指定している。標準ではバックグラウンドで実行される。lighttpd --helpでその他のオプション一覧とちょっとした説明を表示できる。しかしながら、ここで使っているディストリビューションであるDebian GNU/Linuxでは次のようにするのが正統である。

# /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
参照文献:
http://redmine.lighttpd.net/projects/lighttpd/wiki
    関連記事:
  • Debian10でPHP7+lighttpdによる実行環境準備

コメント

このブログの人気の投稿

Visual Studio 2019にはC++のためのフォームデザイナーがない件

10の補数と9の補数と2の補数と1の補数

LibreOffice 6 Calcでフォーム(ダイアログ)を作成してマクロで表示