Heroku port number for a given application - heroku

how to view heroku port number for a given application?
I tried to use "heroku config:get PORT" command.but windows command prompt gave the result as " ! No app specified ". what should I do?

The port number is not per-application, but per-dyno. Only your dyno has that information.
And you don't need to get it externally either. No matter which port is set for that dyno, your app will always be available externally on port 80.

Related

How can I determine which localhost port is running?

I just find out that when I simply type 'localhost' in the url without anything more in the path, the browser displays a message from a local backend test project in Express that I've made days ago.
I'm trying to stop this process.
I was sure that to have started this server on port 3001 but when I try to kill it , it says that there is no process running on this port.
I tried to kill 8080 as well, but the message is still displayed.
Obviously, I refreshed the page, I tried on several different browser, even restarted my computer.
How can i determine which port is running?
How can I stop the process?
[Edit]:
Here's what I keep receiving :
<html><head></head><body><h1>It works!</h1>
</body></html>
You could use lsof:
lsof -i #localhost
Can you try this command :
sudo lsof -nP -i4TCP:80

Netstat failed to show result

I am trying to run an application on port 8080 but I received a message that says "Web server failed to start. Port 8080 was already in use." I tried to access localhost:8080 on my browser and it says "unable to connect". I searched on how to handle this problem and it was to kill whatever activity is going on in port 8080. It didn't work. I tried the command netstat -a -n -o | find "8080" and netstat -ano | findstr :, but it didn't produce any results. I even tried to run as administrator but it still wouldn't show any results. According to the solutions that I found, I expect to find something along the lines of TCP and LISTENING. I accessed localhost:8080 a couple of days back and it was fine. Can anyone tell me what went wrong?
picture attached
The only recent changes I made was to enable VMX on my laptop a few days ago. Other than that, I did not change nor configure any settings whatsoever.
Simply running "netstat -ab" will display all ports taken. Try to run it and see which process is using port 8080. It always lists all ports taken.

Hooking up into running heroku phoenix application

Previous night I was tinkering with Elixir running code on my both machines at home, but when I woke up, I asked myself Can I actually do the same using heroku run command?
I think theoretically it should be entirely possible if setup properly. Obviously heroku run iex --sname name executes and gives me access to shell (without functioning backspace which is irritating) but i haven't accessed my app yet.
Each time I executed the command it gave me different machine. I guess it's how Heroku achieve sandbox. I also was trying to find a way to determine address of my app's machine but haven't got any luck yet.
Can I actually connect with the dyno running the code to evaluate expressions on it like you would do iex -S mix phoenix.server locally ?
Unfortunately it's not possible.
To interconnect Erlang VM nodes you'd need EPMD port (4369) to be open.
Heroku doesn't allow opening custom ports so it's not possible.
In case You'd want to establish a connection between your Phoenix server and Elixir node You'd have to:
Two nodes on the same machine:
Start Phoenix using iex --name phoenix#127.0.0.1 -S mix phoenix.server
Start iex --name other_node#127.0.0.1
Establish a connection using Node.ping from other_node:
iex(other_node#127.0.0.1)1> Node.ping(:'phoenix#127.0.0.1')
(should return :pong not :pang)
Two nodes on different machines
Start Phoenix using some external address
iex --name phoenix#195.20.2.2 --cookie someword -S mix phoenix.server
Start second node
iex --name other_node#195.20.2.10 --cookie someword
Establish a connection using Node.ping from other_node:
iex(other_node#195.20.2.10)1> Node.ping(:'phoenix#195.20.2.2')
(should return :pong not :pang)
Both nodes should contact each other on the addresses they usually see each other on the network. (Full external IP when different networks, 192.168.X.X when in the same local network, 127.0.0.1 when on the same machine)
If they're on different machines they also must have set the same cookie value, because by default it takes automatically generated cookie in your home directory. You can check it out by running:
cat ~/.erlang.cookie
What's last you've got to make sure that your EPMD port 4369 is open, because Erlang VM uses it for internode data exchange.
As a sidenote if you will leave it open make sure to make your cookie as private as possible, because if someone knows it, he can have absolute power over your machine.
When you execute heroku run it will start a new one-off dyno which is a temporary instance that is deprovisioned when you finish the heroku run session. This dyno is not a web dyno and cannot receive inbound HTTP requests through Heroku's routing layer.
From the docs:
One-off dynos can never receive HTTP traffic, since the routers only route traffic to dynos named web.N.
https://devcenter.heroku.com/articles/one-off-dynos#formation-dynos-vs-one-off-dynos
If you want your phoenix application to receive HTTP requests you will have to set it up to run on a web dyno.
It has been a while since you've asked the question, but someone might find this answer valuable, though.
As of 2021 Heroku allows forwarding multiple ports, which allows to remsh into a running ErlangVM node. It depends on how you deploy your application, but in general, you will need to:
Give your node a name and a cookie (i.e. --name "myapp#127.0.0.1" --cookie "secret")
Tell exactly which port a node should bind to, so you know which pot to forward (i.e. --erl "-kernel inet_dist_listen_min 9000 -kernel inet_dist_listen_max 9000")
Forward EPMD and Node ports by running heroku ps:forward 9001:4369,9000
Remsh into your node: ERL_EPMD_PORT=9001 iex --cookie "secret" --name console#127.0.0.1 --remsh "myapp#127.0.0.1"
Eventually you should start your server with something like this (if you are still using Mix tool): MIX_ENV=prod elixir --name "myapp#127.0.0.1" --cookie "secret" --erl "-kernel inet_dist_listen_min 9000 -kernel inet_dist_listen_max 9000" -S mix phx.server --no-halt
If you are using Releases, most of the setup has already been done for you by the Elixir team.
To verify that EPMD port has been forwarded correctly, try running epmd -port 9001 -names. The output should be:
epmd: up and running on port 4369 with data:
name myapp#127.0.0.1 at port 9000
You may follow my notes on how I do it for Dockerized releases (there is a bit more hustle): https://paveltyk.medium.com/elixir-remote-shell-to-a-dockerized-release-on-heroku-cc6b1196c6ad

Why did the IP and port number change in Kitematic?

I am running Mac OS 10.10.3.
I am using Kitematic and Docker in a development environment. Yesterday I installed a container for Postgre. The mac ip and port for this container was 192.168.99.100:5432.
I shut down my system for the day.
Today, when I restarted my system, started Kitematic, and started the containner The ip and port was 192.168.99.100:32771.
Why did it change?
This is now supported. Click on Settings, then ports, click on the port and you can change it.
Issue on kitematic github.
I assume that you are not designating the port when you start your container and instead it is run with the -P option, which assigns a random port to any exposed ports. If you use the -p HOSTPORT:GUESTPORT option instead of -P the port will be consistent.
Check out the Expose and Run documentation
I think this feature has not been implemented yet.
https://github.com/kitematic/kitematic/issues/164
I don't believe kitematic supports assigning ports and only does the equivalent of the -P option of docker run.

Port 80 to 8080

First time I installed the package xampp I had many problems (like everyone who tries to use this programs and tries to create a website!)
I had made some researches on the web to find the solution to make Apache work: I setted the usual port 80 to 8080.
Now everytime I want to access to control panel of xampp or access to the DBMS MySQL I have always to add to the url ":8080" after "localhost".
My first question is: is it possible not to write ":8080" after the "localhost", maybe changing some settings I don't know where or in what file? (ex: "localhost:8080/xampp/" => "localhost/xampp")
Another thing: what could be the problems if apache is listening on the port 8080 instead of the usual one? (I don't have many experience in this field...)
Thank you in advance!
The only way to not write :8080 in the address bar is to make it work with the default port, which is :80. If the server does not want to start on that port it's probably because another program is already using it.
netstat -a -n -o | findstr ":80 "
With this command you can see which program is using your 80 port.

Resources