Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to enable port 5000 on AWS ubuntu [closed]

I have a flask app running on AWS Ubuntu server on port 5000 (flask runs default on port 5000). But when I try to access the server on that port, it never connects.

I added a security group on AWS console as Custom TCP on port 5000 for any ip address 0.0.0.0/0, but still I cannot access it.

Do I have to restart the server? Or am I missing anything?

Let me know any additional information to provide.

like image 558
Rookie Avatar asked Aug 06 '15 19:08

Rookie


People also ask

How do you check if a port is open on EC2?

From the EC2 Windows instance that is hosting the service, run the netstat command to display active connections and ports. 2. Perform a port test using Telnet or Test-NetConnection locally on the instance to confirm that the port can be connected to locally.


2 Answers

In addition to allowing access to port 5000 via the Security Group, you also need to ensure that your app is listening on an IP which can accept TCP connections from outside. To listen on all IPs, in your app, use:

if __name__ == '__main__':
    app.run(host='0.0.0.0', debug = False)

Instead of:

if __name__ == '__main__':
    app.run(host='127.0.0.1', debug = False)

To see what address your application is listening on, you can run this command:

netstat -an | grep :5000

After making these changes, you will want to restart your Flask application.

I'm assuming you're just using this for development and testing, since you're keeping it on port 5000, but, when you're ready to deploy your application into production, you need to put it behind a real webserver. I would recommend using nginx with uWSGI. Here is a guide to configuring Flask + nginx + uWSGI, and here is the official documentation from Flask on the subject.

like image 58
Will Avatar answered Sep 19 '22 15:09

Will


In addition to @Will's answer, its possible that whichever Ubuntu AMI you're using came with restrictive iptables rules by default. Use:

sudo iptables -L

to list any current rules that exist. Use:

sudo iptables -A INPUT -p tcp --dport 5000 -j ACCEPT

to open the port if necessary.

like image 33
mbrig Avatar answered Sep 21 '22 15:09

mbrig