lighttpd
概要
- Web サーバプログラム
- 軽量
インストール
- インストール
$ sudo apt-get install lighttpd php-cgi
- モジュール追加
$ sudo lighttpd-enable-mod cgi dir-listing fastcgi fastcgi-php userdir
- cgi
- fastcgi
- fastcgi-php
- userdir: ユーザディレクトリ (/home/USER/public_html) からのウェブ表示を有効化
- dir-listing: URL でディレクトリにアクセスした場合、ディレクトリの中身を表示
- サービスの再起動
$ sudo service lighttpd restart
その他
- 設定ファイルは /etc/lighttpd/lighttpd.conf
- デフォルトのルートディレクトリは /var/www (Ubuntu、LinuxMint の場合)
Tips
アップロード上限を変更する
- lighttpd は関係なくて、大抵 php の設定に関係している
- /etc/php5/cgi/php.ini の以下の項目を変更する
upload_max_filesize
post_max_size
(upload_max_filesize
よりも大きめに設定する)memory_limit
(post_max_size
よりも大きめに設定する)
cgi が実行できない
以下の可能性が考えられる
- cgi モジュールが有効になっていない
# sudo lighty-enable-mod cgi
- cgi ファイルのパーミッションに実行権限がない場合に「403 Forbidden」がブラウザに表示される
→ chmod コマンドで実行権限を付与する - cgi.assign が適切に設定されていない場合、cgi にブラウザでアクセスすると cgi ファイルをダウンロードしてしまう
- 拡張子と実行するためのバイナリがしっかり関連付けられているか?
cgi.assign = ( ".pl" => "/usr/bin/perl", ".cgi" => "", ".bin" => "", )
- cgi が perl で書かれたものである場合は、.cgi にも
/usr/bin/perl
を設定しなければならない
- cgi を実行できるディレクトリを特定してしまっているために、特定のディレクトリ以外の場所で実行できない
- 以下の場合だと、/var/www/cgi-bin (wwwルート/cgi-bin/) 内の cgi しか実行できない
$HTTP["url"] =~ "^/cgi-bin/" { cgi.assign = ( ".pl" => "/usr/bin/perl", ".cgi" => "/usr/bin/perl", ".bin" => "", ) }
cgi.assign
を$HTTP[“url”]…
の外に出せば、すべての cgi ファイルに適用できる。
cgi.assign = ( ".pl" => "/usr/bin/perl", ".cgi" => "/usr/bin/perl", ".bin" => "", ) $HTTP["url"] =~ "^/cgi-bin/" { cgi.assign = ( ".pl" => "/usr/bin/perl", ".cgi" => "/usr/bin/perl", ".bin" => "", ) }
Ubuntu 16.04 (LinuxMint 18) で lighttpd を動かせない
- 必要なパッケージがなぜか同時にインストールされていないのが原因
- gamin パッケージをインストールすると解決できる
$ sudo apt-get install gamin
PHPのページが表示されない
- Ubuntu 16.04 で
/var/log/lighttpd/error.log
にPHP Fatal error: Uncaught Error: Call to undefined function utf8_decode()
がある場合、以下のパッケージをインストールする
$ sudo apt-get install php7.0-xml