Я пытаюсь использовать 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>