Putting the following in /etc/rabbitmq/rabbitmq-env.conf
will make RabbitMQ and epmd listen on only localhost:
export RABBITMQ_NODENAME=rabbit@localhost
export RABBITMQ_NODE_IP_ADDRESS=127.0.0.1
export ERL_EPMD_ADDRESS=127.0.0.1
It takes a bit more work to configure Erlang to only use localhost for the higher numbered port (which is used for clustering nodes as far as I can tell). If you don't care about clustering and just want Rabbit to be run fully locally then you can pass Erlang a kernel option for it to only use the loopback interface.
To do so, create a new file in /etc/rabbitmq/
- I'll call it rabbit.config
. In this file we'll put the Erlang option that we need to load on run time.
[{kernel,[{inet_dist_use_interface,{127,0,0,1}}]}].
If you're using the management plugin and also want to limit that to localhost, you'll need to configure its ports separately, making the rabbit.config include this:
[
{rabbitmq_management, [
{listener, [{port, 15672}, {ip, "127.0.0.1"}]}
]},
{kernel, [
{inet_dist_use_interface,{127,0,0,1}}
]}
].
(Note RabbitMQ leaves epmd running when it shuts down, so if you want to block off Erlang's clustering port, you will need to restart epmd separately from Rabbit.)
Next we need to have RabbitMQ load this at startup. Open up /etc/rabbitmq/rabbitmq.conf
again and put the following at the top:
export RABBITMQ_CONFIG_FILE="/etc/rabbitmq/rabbit"
This loads that config file when the rabbit server is started and will pass the options to Erlang.
You should now have all Erlang/RabbitMQ processes listening only on localhost! This can be checked with netstat -ntlap
EDIT : In older versions of RabbitMQ, the configuration file is : /etc/rabbitmq/rabbitmq.conf
. However, this file has been replaced by the rabbit-env.conf
file.
Your error message is right there in what you pasted: "error,{future_upgrades_found".
Typically this is because you upgraded the version of RabbitMQ on your system and then (a) subsequently downgraded but didn't blow away the database, or (b) tried to run an older version of RabbitMQ against the upgraded database.
Re-Create your database (or upgrade to the appropraite version of RabbitMQ that the DB was created with) and the problem will go away.
Best Answer
This can happen if you have mismatched binaries. For example, let's say your system has outdated versions of RabbitMQ and/or Erlang, installed via your package manager. If you then download the current version of RabbitMQ, such as the generic binary release, and try to run it, your
$PATH
may point to the outdated version of Erlang elsewhere on your system.The solution (particularly if you don't have root access), is to install the correct version of Erlang and the update your
$PATH
to ensure that thesbin
directory under RabbitMQ and theerl
executable of the newer Erlang are ahead of any other directory that might point to the older versions.