Назад | Перейти на главную страницу

Lighttpd, на котором запущен скрипт FastCGI, зависает и выдает внутреннюю ошибку 500

Я пытаюсь использовать lighttpd и fastcgi для запуска небольшого фляжного приложения. Когда я пытаюсь запустить lighttpd, он запускает сервер нормально, но когда я пытаюсь подключиться в браузере, он зависает без каких-либо значимых сообщений об ошибках.

Я запускаю это на Raspberry Pi 3. ОС - Raspbian Stretch Lite.

Вот вывод журнала lighttpd.

2018-01-04 19:56:16: (log.c.217) server started
2018-01-04 19:56:19: (response.c.350) -- splitting Request-URI
2018-01-04 19:56:19: (response.c.351) Request-URI     :  /
2018-01-04 19:56:19: (response.c.352) URI-scheme      :  http
2018-01-04 19:56:19: (response.c.353) URI-authority   :  172.30.26.14
2018-01-04 19:56:19: (response.c.354) URI-path (raw)  :  /
2018-01-04 19:56:19: (response.c.355) URI-path (clean):  /
2018-01-04 19:56:19: (response.c.356) URI-query       :
2018-01-04 19:56:19: (response.c.350) -- splitting Request-URI
2018-01-04 19:56:19: (response.c.351) Request-URI     :  /application.fcgi/
2018-01-04 19:56:19: (response.c.352) URI-scheme      :  http
2018-01-04 19:56:19: (response.c.353) URI-authority   :  172.30.26.14
2018-01-04 19:56:19: (response.c.354) URI-path (raw)  :  /application.fcgi/
2018-01-04 19:56:19: (response.c.355) URI-path (clean):  /application.fcgi/
2018-01-04 19:56:19: (response.c.356) URI-query       :
2018-01-04 19:56:19: (response.c.490) -- before doc_root
2018-01-04 19:56:19: (response.c.491) Doc-Root     : /var/www/
2018-01-04 19:56:19: (response.c.492) Rel-Path     : /application.fcgi/
2018-01-04 19:56:19: (response.c.493) Path         :
2018-01-04 19:56:19: (response.c.542) -- after doc_root
2018-01-04 19:56:19: (response.c.543) Doc-Root     : /var/www/
2018-01-04 19:56:19: (response.c.544) Rel-Path     : /application.fcgi/
2018-01-04 19:56:19: (response.c.545) Path         : /var/www/application.fcgi/
2018-01-04 19:56:19: (response.c.562) -- logical -> physical
2018-01-04 19:56:19: (response.c.563) Doc-Root     : /var/www/
2018-01-04 19:56:19: (response.c.564) Basedir      : /var/www/
2018-01-04 19:56:19: (response.c.565) Rel-Path     : /application.fcgi/
2018-01-04 19:56:19: (response.c.566) Path         : /var/www/application.fcgi/
2018-01-04 19:56:19: (response.c.583) -- handling physical path
2018-01-04 19:56:19: (response.c.584) Path         : /var/www/application.fcgi/
2018-01-04 19:56:19: (response.c.745) -- after pathinfo check
2018-01-04 19:56:19: (response.c.746) Path         : /var/www/application.fcgi
2018-01-04 19:56:19: (response.c.747) URI          : /application.fcgi
2018-01-04 19:56:19: (response.c.748) Pathinfo     : /
2018-01-04 19:56:19: (response.c.753) -- handling subrequest
2018-01-04 19:56:19: (response.c.754) Path         : /var/www/application.fcgi
2018-01-04 19:56:19: (mod_fastcgi.c.3500) handling it in mod_fastcgi
2018-01-04 19:56:19: (mod_fastcgi.c.2875) got proc: pid: 8703 socket: unix:/tmp/fastcgi.socket-0 load: 1
^C2018-01-04 19:59:54: (server.c.1751) [note] graceful shutdown started
2018-01-04 19:59:55: (mod_fastcgi.c.2424) unexpected end-of-file (perhaps the fastcgi process died): pid: 8703 socket: unix:/tmp/fastcgi.socket-0
2018-01-04 19:59:55: (mod_fastcgi.c.3129) child exited, pid: 8703 status: 0
2018-01-04 19:59:55: (mod_fastcgi.c.3143) --- fastcgi spawning \n\tsocket unix:/tmp/fastcgi.socket-0 \n\tcurrent: 1 / 1
2018-01-04 19:59:55: (mod_fastcgi.c.900) new proc, socket: 0 /tmp/fastcgi.socket-0
2018-01-04 19:59:55: (mod_fastcgi.c.3175) response not received, request sent: 908 on socket: unix:/tmp/fastcgi.socket-0 for /application.fcgi?, closing connection
2018-01-04 19:59:55: (mod_fastcgi.c.1642) released proc: pid: 8710 socket: unix:/tmp/fastcgi.socket-0 load: 0
2018-01-04 20:00:01: (server.c.1626) connection closed - keep-alive timeout: 5
^C2018-01-04 20:00:01: (server.c.1828) server stopped by UID = 0 PID = 0

Вы можете видеть, где я нажимаю CTRL C, чтобы остановить процесс. Как видите, я не могу найти никаких значимых сообщений об ошибках в этом журнале. В этом журнале отображается первая строка 2018-01-04 19:56:16: (log.c.217) server started, затем я перехожу к URL-адресу в моем браузере (который является локальным IP-адресом сервера). Однако в моем браузере ничего не происходит, пока я не убью процесс. Затем я получаю сообщение об ошибке внутреннего сервера 500 (в браузере).

Вот мой сценарий fastcgi.

#!/usr/bin/python3
from flup.server.fcgi import WSGIServer
from modules import app

if __name__ == '__main__':
    WSGIServer(app).run()

А вот и мой файл lighttpd.conf.

server.modules   += ( "mod_fastcgi" )
server.modules   += ( "mod_rewrite" )
fastcgi.debug = 1
debug.log-request-handling = "enable"
debug.log-file-not-found = "enable"
server.username = "lighttpd"
server.groupname = "lighttpd"
server.document-root = "/var/www/"
server.port = 80
$SERVER["socket"] == ":80" {
    mimetype.assign = (
        ".html" => "text/html"
    )
    url.rewrite-once = (
    "^(/modules/static($|/.*))$" => "$1",
    "^(/.*)$" => "/application.fcgi$1"
    )
    $HTTP["host"] =~ "$" {
        server.document-root = "/var/www/"
        fastcgi.server = ( "application.fcgi" =>
         (( "socket" => "/tmp/fastcgi.socket",
            "bin-path" => "/home/pi/timeclock_venv/bin/python3 /var/www/TimeClock/application.fcgi",
            "max-procs" => 1,
           "bin-environment" => (
             "REAL_SCRIPT_NAME" => ""
           ),
           "check-local" => "disable"
         ))
         )
    }
}

В моем сценарии lighttpd я использую интерпретатор python3 внутри моего каталога virtualenv, в котором есть все зависимости, необходимые для моего приложения flask.

Пожалуйста, дайте мне любую помощь или совет, которые, по вашему мнению, необходимы, чтобы заставить это работать, спасибо.

Обновить

Я обнаружил, что иногда lighttpd дает мне обратную трассировку, но это не полная трассировка. Вот что у меня получилось.

Traceback (most recent call last):
  File "/var/www/TimeClock/application.fcgi", line 3, in <module>
    from modules import app
  File "/var/www/TimeClock/modules/__init__.py", line 1, in <module>
    from flask import Flask
  File "/usr/local/lib/python3.5/dist-packages/flask/__init__.py", line 19, in <module>