简体   繁体   中英

Publish Python Flask Application on Linux Server

I have developed a python flask application and I'm trying to publish it on Linux Server as WebService. It doesn't have any interface it just return string or something like this. I have developed it on Windows and my code was like in the below:

if __name__ == '__main__':
    app.run(port=80, debug=True)

Then I have connected to linux server via SSH.

I installed my codes to -> /var/www/myapp/code Then I created a myapp.conf config file to -> /etc/nginx/sites-enabled:

server {
        listen 127.0.0.1:80;
        server_name x.x.x.x;

        root /var/www/myapp/code/main.py;

        passenger_enabled on;
}

Then I run "python main.py" in /var/www/myapp/code/ Then I get:

return getattr(self._sock,name)( args)
socket.error: [Errno 98] Address already in use

When I change listen 127.0.0.1:80; to 80 it works but i can't send any request. I'm trying to send via postman as http://xxxx:80/myurl

How can I publish it correctly? I want to serve it on Linux Server and send request from my windows post man application.

Thanks.

use:

server {
        listen 0.0.0.0:80;
        server_name x.x.x.x;

        root /var/www/myapp/code/main.py;

        passenger_enabled on;
}

for change your ip

You are trying to use same port for your flask app and nginx

Use a different port for flask app

 if __name__ == '__main__':
        app.run(port=8080, debug=True)

Also, nginx can't talk to python apps directly, instead you have to proxy the requests to flask server

server {
        listen 80 default_server;
        server_name _;
        passenger_enabled on;
        location / {
           proxy_pass  http://127.0.0.1:8080;
        }
}

Adding on @Conans-Answer

Request you to refer the Documentation:- https://flask.palletsprojects.com/en/1.1.x/deploying/wsgi-standalone/

server {
listen 80;

server_name _;

access_log  /var/log/nginx/access.log;
error_log  /var/log/nginx/error.log;

location / {
    proxy_pass         http://127.0.0.1:8000/;
    proxy_redirect     off;

    proxy_set_header   Host                 $host;
    proxy_set_header   X-Real-IP            $remote_addr;
    proxy_set_header   X-Forwarded-For      $proxy_add_x_forwarded_for;
    proxy_set_header   X-Forwarded-Proto    $scheme;
}}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM