サーバ関連:lighttpd

lighttpd

  • Web サーバプログラム
  • 軽量
  1. インストール
    $ sudo apt-get install lighttpd php-cgi
  2. モジュール追加
    $ sudo lighttpd-enable-mod cgi dir-listing fastcgi fastcgi-php userdir
    • cgi
    • fastcgi
    • fastcgi-php
    • userdir: ユーザディレクトリ (/home/USER/public_html) からのウェブ表示を有効化
    • dir-listing: URL でディレクトリにアクセスした場合、ディレクトリの中身を表示
  3. サービスの再起動
    $ sudo service lighttpd restart
  • 設定ファイルは /etc/lighttpd/lighttpd.conf
  • デフォルトのルートディレクトリは /var/www (Ubuntu、LinuxMint の場合)

以下の可能性が考えられる

  • 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 で /var/log/lighttpd/error.logPHP Fatal error: Uncaught Error: Call to undefined function utf8_decode() がある場合、以下のパッケージをインストールする
    $ sudo apt-get install php7.0-xml
  • サーバ関連/lighttpd.txt
  • 最終更新: 2017/03/27 09:13
  • by mumeiyamibito