|.deb for Debian-based Linux (from rabbitmq.com)||rabbitmq-server_3.6.6-1_all.deb||(Signature)|
|.deb for Debian-based Linux (from github.com)||rabbitmq-server_3.6.6-1_all.deb||(Signature)|
rabbitmq-server is included in standard Debian and Ubuntu repositories. However, the versions included are often quite old. You will probably get better results installing the .deb from the apt repository on rabbitmq.com or Package Cloud. Check the Debian package and Ubuntu package details for which version of the server is available for which versions of the distribution.
You can either download it with the link above and install with dpkg, or use our APT repository (see below).
Below is a list of supported Debian-based distributions as of RabbitMQ 3.6.3:
When installing with apt, all dependencies should be met automatically in recent distributions (e.g. Ubuntu 14.04 or later, Debian Jessie). When that's not the case, dependency packages should be available from an appropriate backports repository. However, when installing via dpkg that's not the case. Below is the list of dependencies of RabbitMQ server as of 3.6.3:
RabbitMQ hosts our own apt repository. We also have an alternative repository on Package Cloud.
echo 'deb http://www.rabbitmq.com/debian/ testing main' | sudo tee /etc/apt/sources.list.d/rabbitmq.list(Please note that the word testing in this line refers to the state of our release of RabbitMQ, not any particular Debian distribution. You can use it with Debian stable, testing or unstable, as well as with Ubuntu. We describe the release as "testing" to emphasise that we release somewhat frequently.)
wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add -
Our public signing key is also available from Bintray.
sudo apt-get update
sudo apt-get install rabbitmq-server
PackageCloud installs packages via HTTPS and signs them using their GPG key. There are multiple ways to install:
RabbitMQ Debian package can be installed on Ubuntu 12.04 with the help of additional apt repositories, namely:
Below is an example of how the above repositories can be added on the command line:
# Add Debian Wheezy backports repository to obtain init-system-helpers gpg --keyserver pgpkeys.mit.edu --recv-key 7638D0442B90D010 gpg -a --export 7638D0442B90D010 | sudo apt-key add - echo 'deb http://ftp.debian.org/debian wheezy-backports main' | sudo tee /etc/apt/sources.list.d/wheezy_backports.list # Add Erlang Solutions repository to obtain esl-erlang wget -O- https://packages.erlang-solutions.com/debian/erlang_solutions.asc | sudo apt-key add - echo 'deb https://packages.erlang-solutions.com/debian wheezy contrib' | sudo tee /etc/apt/sources.list.d/esl.list sudo apt-get update sudo apt-get install init-system-helpers socat esl-erlang # continue with RabbitMQ installation as explained above wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add - echo 'deb http://www.rabbitmq.com/debian/ testing main' | sudo tee /etc/apt/sources.list.d/rabbitmq.list sudo apt-get update sudo apt-get install rabbitmq-server
As mentioned above, Ubuntu 12.04 support in the RabbitMQ Debian package is offered on a best-effort basis. We highly recommend upgrading to Ubuntu 14.04 or 16.04.
The server is started as a daemon by default when the RabbitMQ server package is installed.
As an administrator, start and stop the server as usual for Debian using invoke-rc.d rabbitmq-server stop/start/etc.
Note: The server is set up to run as system user rabbitmq. If you change the location of the Mnesia database or the logs, you must ensure the files are owned by this user (and also update the environment variables).
SELinux, and similar mechanisms may prevent RabbitMQ from binding to a port. When that happens, RabbitMQ will fail to start. Firewalls can prevent nodes and CLI tools from communicating with each other. Make sure the following ports can be opened:
The broker creates a user guest with password guest. Unconfigured clients will in general use these credentials. By default, these credentials can only be used when connecting to the broker as localhost so you will need to take action before connecting from any other machine.
See the documentation on access control for information on how to create more users, delete the guest user, or allow remote access to the guest user.
To stop the server or check its status, etc., you can invoke rabbitmqctl (as an administrator). It should be available on the path. All rabbitmqctl commands will report the node absence if no broker is running.
More info on rabbitmqctl.
Output from the server is sent to a RABBITMQ_NODENAME.log file in the RABBITMQ_LOG_BASE directory. Additional log data is written to RABBITMQ_NODENAME-sasl.log.
The broker always appends to the log files, so a complete log history is retained.
You can use the logrotate program to do all necessary rotation and compression, and you can change it. By default, this script runs weekly on files located in default /var/log/rabbitmq directory. See /etc/logrotate.d/rabbitmq-server to configure logrotate.
RabbitMQ installations running production workloads may need system limits and kernel parameters tuning in order to handle a decent number of concurrent connections and queues. The main setting that needs adjustment is the max number of open files, also known as ulimit -n. The default value on many operating systems is too low for a messaging broker (eg. 1024 on several Linux distributions). We recommend allowing for at least 65536 file descriptors for user rabbitmq in production environments. 4096 should be sufficient for most development workloads.
There are two limits in play: the maximum number of open files the OS kernel allows (fs.file-max) and the per-user limit (ulimit -n). The former must be higher than the latter.
On distributions that use systemd, the OS limits are controlled via a configuration file at /etc/systemd/system/rabbitmq-server.service.d/limits.conf, for example:
The most straightforward way to adjust the per-user limit for RabbitMQ on distributions that do not use systemd is to edit the /etc/default/rabbitmq-server (provided by the RabbitMQ Debian package) or rabbitmq-env.conf to invoke ulimit before the service is started.
ulimit -S -n 4096
This soft limit cannot go higher than the hard limit (which defaults to 4096 in many distributions). The hard limit can be increased via /etc/security/limits.conf. This also requires enabling the pam_limits.so module and re-login or reboot.
Note that limits cannot be changed for running OS processes.
For more information about controlling fs.file-max with sysctl, please refer to the excellent Riak guide on open file limit tuning.
RabbitMQ management UI displays the number of file descriptors available for it to use on the Overview tab.
rabbitmqctl statusincludes the same value.
The following command
cat /proc/$RABBITMQ_BEAM_PROCESS_PID/limitscan be used to display effective limits of a running process. $RABBITMQ_BEAM_PROCESS_PID is the OS PID of the Erlang VM running RabbitMQ, as returned by rabbitmqctl status.
Configuration management tools (e.g. Chef, Puppet, BOSH) provide assistance with system limit tuning. Our developer tools guide lists relevant modules and projects.