On 2024/08/31 21:32:45 +0800, Sadeep Madurange <sad...@asciimx.com> wrote:
> Hello,
> 
> I have a python script (flask.py) with the following content on an
> OpenBSD 7.5 server:
> 
> #! /usr/local/bin/python3
> print("hello, world!")

This doesn't look like a flask app.

> I ran the following command to install it:
> 
> # install -o www -g www -m 0500 flask.py /var/www/cgi-bin
> 
> Then I added the following config to /etc/httpd.conf:
> 
> server "localhost" {
>     listen on * port 8080
>     location "/*" {
>         fastcgi { param SCRIPT_FILENAME "/cgi-bin/flask.py" } 
>     }
> }
> 
> restarted httpd, and executed the following curl request:

Notice that this is OpenBSD httpd and not Apache httpd.

> $ curl http://localhost:8080/
> 
> However, I keep getting 500 internal server error. Not sure what I'm
> doing wrong, so any help is much appreciated.

FastCGI is a binary protocol.  You're expected to have your program
listening on a socket or on a local port, then configure httpd to talk
to it.

slowcgi(8) is a way to wrap cgi scripts over fastcgi.

I wouldn't reccomend to run python stuff as a CGI script.  Setting up
the chroot is hard and there's little gain.

I don't work with python, but it seems that flask (assuming you intend to
use it) has some fastcgi support, see

    https://flask.palletsprojects.com/en/2.0.x/deploying/fastcgi/

in particular the part where it specifies the address to bind the
UNIX-domain socket.

> WSGIServer(application, bindAddress='/path/to/fcgi.sock').run()

If you're usign a UNIX-domain socket, you have to put it somewhere
inside the /var/www chroot; for example /var/www/run/<your-app>/fcgi.sock
and then instructs httpd to talk to it

        fastcgi {
                # note that this is relative to the /var/www chroot
                socket "/run/<your-app>/fcgi.sock"
        }


HTH

Reply via email to