понедельник, 25 февраля 2013 г.

Lighttpd в качестве домашнего вебсервера

В один прекрасный момент я понял, что Apache на домашнем сервере - это слишком тяжело и решил поставить что-нибудь попроще и побыстрее. Мой выбор пал на lighttpd, так как у меня ранее был опыт работы с ним.

Передо мной встала задача перенести всё, что было поднято под апачем на lighttpd. А поднято было не так и много:

  • Раздача локального зеркала дебиана
  • веб интерфейс для торрента rtgui
  • wiki-движок moinmoin

С первыми двумя я справился быстро. Публикация папки по http осуществляется просто:

alias.url += ("/debian/" => "/mnt/bkp/debian/" )

RеGui формально зависит от мета пакета http сервера, у него в зависимостях так же стоит libapache2-mod-scgi, что тянет за собой весь apache2. Но мне хочется избавиться от apache2 в системе, из-за чего я скачал дистрибутив rtgui с сайта. Для работы пакета требуется только php и scgi, php-cgi уже стоит. Для запуска пакета необходимо прописать scgi на lighttpd. Добавляем в главный конфиг загрузку mod_scgi и прописываем точку монтирования rpc от бекэнда и сам интерфейс.

alias.url += ("/rtgui" => "/var/www/rtgui")

scgi.server += (
    "/RPC2" => ( 
      "127.0.0.1" => (
        "host" => "127.0.0.1",
        "port" => 5000,
        "check-local"  => "disable",
        "disable-time" => 0
        )
      )
    )

Вот с запуском moinmoin у меня были проблемы. Сначала я думал, что где-то проблема с конфигурацией и долго вникал в тонкости работы lighttpd и moinmoin, но в конце концов увидел, что fcgi отваливается в зомби-процесс почти сразу после запуска. Прошло два дня, я сдался и включил логирование, начал изучать логи moinmoin. Оказалось, что для работы с fcgi, в отличии от wcgi, используемом в apache, не хватало пакета flup, который я и доустановил.

Итого в конфиг lighttpd было прописано

$HTTP["host"] == "wiki.home.net" {
  alias.url += ("/moinstatic" => "/usr/share/moin/htdocs" )

  url.rewrite-once = (
    "^/moinstatic/(.*)" => "/moinstatic/$1",
    "^/(.*)" => "/wiki-engine/$1"
    )
  
  fastcgi.server += (
    "/wiki-engine" =>
      (("socket"   => "/tmp/moin.socket",
        #"host" => "127.0.0.1",
        #"port" => "6000",
        "bin-path" => "/var/www/cgi-bin/moin.fcgi",
        "check-local" => "disable",
        #"fix-root-scriptname" => "enable",
        "max-procs" => 4,
        "docroot" => "/"
      ))
    )
  }

moin.fcgi нуждался в небольшой правке - там необходимо прописать, находится-ли wiki относительно корня или относительно некоторого пути. Было обнаружено опытным путем уже поле запуска wiki.

fix_script_name = '' #'/wiki-engine'  # <-- adapt here as needed

Собственно всё. Проблемы решены, легкий и быстрый сервер работает стабильно и без нареканий.

Комментариев нет:

Отправить комментарий