Can't launch lighttpd service daemon

Viewed 1624

I want to set up lighttpd on my remote ubuntu server and launch flask app but I have some troubles when I use systemctl restart lighttpd

Here is error logs:

systemctl status lighttpd

ā— lighttpd.service - Lighttpd Daemon
   Loaded: loaded (/lib/systemd/system/lighttpd.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Tue 2019-01-15 14:31:38 UTC; 3s ago
  Process: 19104 ExecStart=/usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf (code=exited, status=255)
  Process: 19097 ExecStartPre=/usr/sbin/lighttpd -t -f /etc/lighttpd/lighttpd.conf (code=exited, status=0/SUCCESS)
 Main PID: 19104 (code=exited, status=255)

Jan 15 14:31:38 ubuntu systemd[1]: Starting Lighttpd Daemon...
Jan 15 14:31:38 ubuntu lighttpd[19097]: Syntax OK
Jan 15 14:31:38 ubuntu systemd[1]: Started Lighttpd Daemon.
Jan 15 14:31:38 ubuntu systemd[1]: lighttpd.service: Main process exited, code=exited, status=255/n/a
Jan 15 14:31:38 ubuntu systemd[1]: lighttpd.service: Unit entered failed state.
Jan 15 14:31:38 ubuntu systemd[1]: lighttpd.service: Failed with result 'exit-code'.

tail /var/log/lighttpd/error.log

2019-01-15 14:31:38: (log.c.164) server started
2019-01-15 14:31:38: (mod_fastcgi.c.1112) the fastcgi-backend /var/www/landing/landing.fcgi failed to start:
2019-01-15 14:31:38: (mod_fastcgi.c.1116) child exited with status 8 /var/www/landing/landing.fcgi
2019-01-15 14:31:38: (mod_fastcgi.c.1119) If you're trying to run your app as a FastCGI backend, make sure you're using the FastCGI-enabled version.
If this is PHP on Gentoo, add 'fastcgi' to the USE flags.
2019-01-15 14:31:38: (mod_fastcgi.c.1406) [ERROR]: spawning fcgi failed.

Here is my lighttpd.conf

cat /etc/lighttpd/lighttpd.conf

server.modules = (
        "mod_access",
        "mod_alias",
        "mod_compress",
        "mod_redirect",
        "mod_rewrite",
        "mod_fastcgi",
)

server.document-root        = "/var/www/"
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" )

include_shell "/usr/share/lighttpd/create-mime.assign.pl"
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"

fastcgi.server = (
    "/" =>
    ((
        "socket" => "/tmp/landing-fcgi.sock",
        "bin-path" => "/var/www/landing/landing.fcgi",
        "check-local" => "disable",
        "max-procs" => 1
    ))
)

alias.url = (
    "/static/" => "/var/www/landing/static/",
)

url.rewrite-once = (
    "^(/static($|/.*))$" => "$1",
    "^(/.*)$" => "/landing.fcgi$1"
)

And my landing.fcgi

from flup.server.fcgi import WSGISerever
import app

if __name__ == '__main__':
    WSGIServer(app, bindAddress='/tmp/landing-fcgi.sock').run()
2 Answers

SOLUTION: I found very nice python script that generates skeleton for flask app and creates a basic lighttpd configuration.

And it worked for me very nice, except that I had a conflict with flup library.

I installed flup==1.0.3.dev-20110405 version and changed python3 interpreter to python2 interpreter in my *.fcgi file.

And another thing I want to say that I removed 118 string:

input("Press enter to continue (if everything is okay)...") because for some reason I had an exception.

Hope my answer will help somebody.

lighttpd can do both fastcgi and uwsgi (and other protocols, too).

flask can do fastcgi and uwsgi, as well as other protocols.

If you're using flask as a WSGI server, then you should use mod_scgi (not mod_fastcgi) and configure mod_scgi with scgi.protocol = "uwsgi"

lighttpd wiki documentation goes through multiple options here: https://redmine.lighttpd.net/projects/lighttpd/wiki/HowToPythonWSGI

Related