Reputation: 342
I am new to backend development. I am working on creating a basic webserver using vagrant and virtualbox. Agter running the server from the VM, when I try to reach it from the host machine, I get the above error.
Following is the vagrant configuration:
Vagrant.configure(2) do |config|
config.vm.box = "ubuntu/trusty32"
config.vm.network "forwarded_port", guest: 80, host: 8080
end
Following is the main() code in the server file:
def main():
try:
port = 8080
server = HTTPServer(('', port), webserverHandler)
print "Web server running on port %s" % port
server.serve_forever()
except KeyboardInterrupt:
print "^C entered. Shutting down the server..."
server.socket.close()
After reading a lot about it, I tried some ways to make it work but to no avail.
Also telnet localhost 8080
on the host machine gives:
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.
Running vagrant up shows that it is forwarding port from 80(guest) to 8080(host). But running sudo netstat -ntlp | grep LISTEN
on the VM gives:
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 491/rpcbind
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 685/sshd
tcp 0 0 0.0.0.0:52166 0.0.0.0:* LISTEN 649/rpc.statd
tcp6 0 0 :::57101 :::* LISTEN 649/rpc.statd
tcp6 0 0 :::111 :::* LISTEN 491/rpcbind
tcp6 0 0 :::22 :::* LISTEN 685/sshd
Running curl -v 'http://localhost:8080'
gives:
* Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 8080 (#0)
> GET / HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.47.0
> Accept: */*
>
* Recv failure: Connection reset by peer
* Closing connection 0
curl: (56) Recv failure: Connection reset by peer
Running curl 'http://localhost:80'
on the VM gives:
curl: (7) couldn't connect to host
This is output when I run vagrant up
:
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
==> default: Forwarding ports...
default: 80 (guest) => 8080 (host) (adapter 1)
default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
default: The guest additions on this VM do not match the installed version of
default: VirtualBox! In most cases this is fine, but in rare cases it can
default: prevent things such as shared folders from working properly. If you see
default: shared folder errors, please make sure the guest additions within the
default: virtual machine match the version of VirtualBox you have installed on
default: your host and reload your VM.
default:
default: Guest Additions Version: 4.2.0
default: VirtualBox Version: 5.0
==> default: Mounting shared folders...
default: /vagrant => /home/priyanshu/fullstack
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: flag to force provisioning. Provisioners marked to run always will still run
I am completely new to this. Let me know what am I doing wrong here.
Upvotes: 0
Views: 3351
Reputation: 53713
Your python server is running on port 8080
and nothing is running port 80 (as the output of the netstat command shows)
In your case you need to change the guest port to the one from your python server
config.vm.network "forwarded_port", guest: 8080, host: 8080
Upvotes: 1