Настройка lighttpd + werc, CGI не может запускать сценарии rc?

Я впервые настраиваю веб-стек на моем новом VPS. Моя цель - Debian Jessie + lighttpd + werc

werc - это простой фреймворк, работающий на rc (нестандартная оболочка, портированная на Linux из Plan 9). Есть несколько уроков, чтобы заставить его работать на lighttpd:

http://werc.cat-v.org/docs/quick-setup/debian-lighttpd

К сожалению, следовать им было безуспешно, и я начал процесс создания, начиная с базового CGI. Я успешно заставил CGI работать со скриптами sh, но столкнулся с проблемой, когда попытался заставить CGI работать с rc. Я проделал небольшую работу, чтобы изолировать проблему, и кажется, что lighttpd просто не будет запускать скрипты rc. Я почти уверен, что это не права доступа или проблема PATH; увидеть ниже.

Подводя итог моей настройки:

  1. чистая установка Debian 8.0 Jessie
  2. установленный пакет Debian lighttpd
  3. установил 9base-6 для получения оболочки rc ( http://tools.suckless.org/9base)
  4. Lighty-Enable-Mod CGI
  5. создайте сценарии test.sh и test.rc в /var/www/html/cgi-bin/ (см. ниже)
  6. делать /newbin каталог и положить копии SH и RC в.
  7. редактировать /etc/lighttpd/conf-enabled/10-cgi.conf обрабатывать файлы.sh и.rc с моими новыми копиями в /newbin

Чтобы прояснить, шаг 6 должен изолировать проблему, чтобы я знал, что это не проблема PATH.

Вот сеанс оболочки, показывающий все компоненты моей установки и документирующий мою проблему:

root@x220-jessie:~# cat /etc/lighttpd/lighttpd.conf 
server.modules = (
    "mod_access",
    "mod_alias",
    "mod_compress",
    "mod_redirect",
#       "mod_rewrite",
)

server.document-root        = "/var/www/html"
server.upload-dirs          = ( "/var/cache/lighttpd/uploads" )
server.errorlog             = "/var/log/lighttpd/error.log"
server.pid-file             = "/var/run/lighttpd.pid"
server.username             = "www-data"
server.groupname            = "www-data"
server.port                 = 80


index-file.names            = ( "index.php", "index.html", "index.lighttpd.html" )
url.access-deny             = ( "~", ".inc" )
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )

compress.cache-dir          = "/var/cache/lighttpd/compress/"
compress.filetype           = ( "application/javascript", "text/css", "text/html", "text/plain" )

# default listening port for IPv6 falls back to the IPv4 port
include_shell "/usr/share/lighttpd/use-ipv6.pl " + server.port
include_shell "/usr/share/lighttpd/create-mime.assign.pl"
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"

root@x220-jessie:~# cat /etc/lighttpd/conf-enabled/10-cgi.conf 
# /usr/share/doc/lighttpd/cgi.txt

server.modules += ( "mod_cgi" )

$HTTP["url"] =~ "^/cgi-bin/" {
    cgi.assign = ( ".rc" => "/newbin/rc" )
    cgi.assign += ( ".sh" => "/newbin/sh" )
}

root@x220-jessie:~# ls -l /newbin
total 1128
-rwxr-xr-x 1 root root 1024920 Jul 13 12:07 rc
-rwxr-xr-x 1 root root  125400 Jul 13 12:11 sh
root@x220-jessie:~# cat /var/www/html/cgi-bin/test.sh
#!/bin/sh
echo 'Content-Type: text/plain'
echo
echo 'This is a sh program!'
root@x220-jessie:~# cat /var/www/html/cgi-bin/test.rc
#!/newbin/rc
echo 'Content-Type: text/plain'
echo
echo 'This is a rc program!'
root@x220-jessie:~# /var/www/html/cgi-bin/test.sh
Content-Type: text/plain

This is a sh program!
root@x220-jessie:~# /var/www/html/cgi-bin/test.rc
Content-Type: text/plain

This is a rc program!
root@x220-jessie:~# /etc/init.d/lighttpd force-reload
[ ok ] Reloading lighttpd configuration (via systemctl): lighttpd.service.
root@x220-jessie:~# curl localhost | tail
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  3373  100  3373    0     0   872k      0 --:--:-- --:--:-- --:--:-- 1097k
  </p>
  <p>
   If you find a bug in this Lighttpd package, or in Lighttpd itself, please file a bug report on it. Instructions on doing this, and the list of known bugs of this package, can be found in the 
   <a href="http://bugs.debian.org/cgi-bin/pkgreport.cgi?pkg=lighttpd">Debian Bug Tracking System.</a>
  </p>
 </div>
</div>
<!-- s:853e9a42efca88ae0dd1a83aeb215047 -->
</body>
</html>
root@x220-jessie:~# curl localhost/cgi-bin/test.sh
This is a sh program!
root@x220-jessie:~# curl localhost/cgi-bin/test.rc
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
  <title>500 - Internal Server Error</title>
 </head>
 <body>
  <h1>500 - Internal Server Error</h1>
 </body>
</html>
root@x220-jessie:~# tail /var/log/lighttpd/error.log 
2015-07-13 12:48:40: (server.c.1558) server stopped by UID = 0 PID = 1 
2015-07-13 12:51:14: (log.c.164) server started 
2015-07-13 12:51:47: (server.c.1558) server stopped by UID = 0 PID = 1 
2015-07-13 12:52:17: (log.c.164) server started 
2015-07-13 12:52:31: (server.c.1558) server stopped by UID = 0 PID = 1 
2015-07-13 12:52:42: (log.c.164) server started 
2015-07-13 12:55:08: (server.c.1558) server stopped by UID = 0 PID = 1 
2015-07-13 15:23:49: (log.c.164) server started 
2015-07-13 15:25:49: (server.c.1558) server stopped by UID = 0 PID = 1 
2015-07-13 15:25:50: (log.c.164) server started 
root@x220-jessie:~# 

Я столкнулся с той же проблемой на моем VPS под управлением Debian 8.0, на моем ноутбуке под управлением Debian 8.0 и на моем ноутбуке под управлением Debian 7.8.

Я попытался отследить проблему дальше, включив отладку, но server.modules += ( "mod_debug" ) вызвал сбой lighttpd. Если у кого-то есть предложения по запуску отладки, это тоже поможет. Также, если кто-нибудь попробует это и сможет запустить werc на Debian 8.0, я бы хотел услышать об этом.

Огромное спасибо!

0 ответов

Другие вопросы по тегам