2014-06-09 20:53:57 +08:00
|
|
|
#!/bin/sh -e
|
2011-01-19 21:53:32 +08:00
|
|
|
## The contents of this file are subject to the Mozilla Public License
|
|
|
|
## Version 1.1 (the "License"); you may not use this file except in
|
|
|
|
## compliance with the License. You may obtain a copy of the License
|
|
|
|
## at http://www.mozilla.org/MPL/
|
2009-07-22 22:48:50 +08:00
|
|
|
##
|
2011-01-19 21:53:32 +08:00
|
|
|
## Software distributed under the License is distributed on an "AS IS"
|
|
|
|
## basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
|
|
|
|
## the License for the specific language governing rights and
|
|
|
|
## limitations under the License.
|
2009-07-22 22:48:50 +08:00
|
|
|
##
|
2011-01-19 21:53:32 +08:00
|
|
|
## The Original Code is RabbitMQ.
|
2009-07-22 22:48:50 +08:00
|
|
|
##
|
2013-07-01 17:49:14 +08:00
|
|
|
## The Initial Developer of the Original Code is GoPivotal, Inc.
|
2015-05-24 09:19:23 +08:00
|
|
|
## Copyright (c) 2007-2015 Pivotal Software, Inc. All rights reserved.
|
2009-07-22 22:48:50 +08:00
|
|
|
##
|
|
|
|
|
2015-04-08 17:52:50 +08:00
|
|
|
if [ "$RABBITMQ_ENV_LOADED" = 1 ]; then
|
|
|
|
return 0;
|
|
|
|
fi
|
|
|
|
|
2015-04-03 22:27:04 +08:00
|
|
|
if [ -z "$RABBITMQ_SCRIPTS_DIR" ]; then
|
|
|
|
# We set +e here since since our test for "readlink -f" below needs to
|
|
|
|
# be able to fail.
|
|
|
|
set +e
|
|
|
|
# Determine where this script is really located (if this script is
|
|
|
|
# invoked from another script, this is the location of the caller)
|
|
|
|
SCRIPT_PATH="$0"
|
|
|
|
while [ -h "$SCRIPT_PATH" ] ; do
|
|
|
|
# Determine if readlink -f is supported at all. TODO clean this up.
|
|
|
|
FULL_PATH=`readlink -f $SCRIPT_PATH 2>/dev/null`
|
|
|
|
if [ "$?" != "0" ]; then
|
|
|
|
REL_PATH=`readlink $SCRIPT_PATH`
|
|
|
|
if expr "$REL_PATH" : '/.*' > /dev/null; then
|
|
|
|
SCRIPT_PATH="$REL_PATH"
|
|
|
|
else
|
|
|
|
SCRIPT_PATH="`dirname "$SCRIPT_PATH"`/$REL_PATH"
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
SCRIPT_PATH=$FULL_PATH
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
set -e
|
|
|
|
|
|
|
|
RABBITMQ_SCRIPTS_DIR=`dirname $SCRIPT_PATH`
|
|
|
|
fi
|
|
|
|
|
2015-10-30 19:33:26 +08:00
|
|
|
rmq_realpath() {
|
|
|
|
local path=$1
|
|
|
|
|
|
|
|
if [ -d "$path" ]; then
|
|
|
|
cd "$path" && pwd
|
|
|
|
elif [ -f "$path" ]; then
|
|
|
|
cd "$(dirname "$path")" && echo $(pwd)/$(basename "$path")
|
|
|
|
else
|
|
|
|
echo "$path"
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
2016-10-29 01:50:22 +08:00
|
|
|
path_contains_existing_directory() {
|
|
|
|
local path="${1:?}"
|
|
|
|
local dir
|
|
|
|
local rc
|
|
|
|
local IFS="
|
|
|
|
"
|
|
|
|
for dir in $(echo "$path" | tr ':' '\n'); do
|
|
|
|
if [ -d "$dir" ]; then
|
|
|
|
return 0
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
return 1
|
|
|
|
}
|
|
|
|
|
2015-10-30 19:33:26 +08:00
|
|
|
RABBITMQ_HOME="$(rmq_realpath "${RABBITMQ_SCRIPTS_DIR}/..")"
|
2016-10-27 21:49:02 +08:00
|
|
|
ESCRIPT_DIR="${RABBITMQ_HOME}/escript"
|
2014-10-17 21:40:39 +08:00
|
|
|
|
2012-02-28 18:56:15 +08:00
|
|
|
## Set defaults
|
2015-04-03 22:27:04 +08:00
|
|
|
. ${RABBITMQ_SCRIPTS_DIR}/rabbitmq-defaults
|
2012-02-28 18:56:15 +08:00
|
|
|
|
2017-08-23 00:52:24 +08:00
|
|
|
## Get configuration variables from the configure environment file
|
|
|
|
[ "x" = "x$RABBITMQ_CONF_ENV_FILE" ] && RABBITMQ_CONF_ENV_FILE=${CONF_ENV_FILE}
|
|
|
|
[ -f ${RABBITMQ_CONF_ENV_FILE} ] && . ${RABBITMQ_CONF_ENV_FILE} || true
|
|
|
|
|
2016-07-14 19:35:03 +08:00
|
|
|
DEFAULT_SCHEDULER_BIND_TYPE="db"
|
2018-02-26 20:05:20 +08:00
|
|
|
[ -n "$SCHEDULER_BIND_TYPE" ] || SCHEDULER_BIND_TYPE="$DEFAULT_SCHEDULER_BIND_TYPE"
|
|
|
|
[ -n "$RABBITMQ_SCHEDULER_BIND_TYPE" ] || RABBITMQ_SCHEDULER_BIND_TYPE="$SCHEDULER_BIND_TYPE"
|
2016-06-30 20:20:35 +08:00
|
|
|
|
2018-08-03 03:08:59 +08:00
|
|
|
DEFAULT_DISTRIBUTION_BUFFER_SIZE=128000
|
2018-02-26 20:05:20 +08:00
|
|
|
[ -n "$DISTRIBUTION_BUFFER_SIZE" ] || DISTRIBUTION_BUFFER_SIZE="$DEFAULT_DISTRIBUTION_BUFFER_SIZE"
|
|
|
|
[ -n "$RABBITMQ_DISTRIBUTION_BUFFER_SIZE" ] || RABBITMQ_DISTRIBUTION_BUFFER_SIZE="$DISTRIBUTION_BUFFER_SIZE"
|
2016-09-12 17:48:37 +08:00
|
|
|
|
2018-08-03 03:08:59 +08:00
|
|
|
DEFAULT_MAX_NUMBER_OF_PROCESSES=1048576
|
2018-02-26 20:05:20 +08:00
|
|
|
[ -n "$MAX_NUMBER_OF_PROCESSES" ] || MAX_NUMBER_OF_PROCESSES="$DEFAULT_MAX_NUMBER_OF_PROCESSES"
|
|
|
|
[ -n "$RABBITMQ_MAX_NUMBER_OF_PROCESSES" ] || RABBITMQ_MAX_NUMBER_OF_PROCESSES="$MAX_NUMBER_OF_PROCESSES"
|
2018-02-24 01:53:33 +08:00
|
|
|
|
2018-08-03 04:10:23 +08:00
|
|
|
DEFAULT_MAX_NUMBER_OF_ATOMS=5000000
|
2018-02-26 20:05:20 +08:00
|
|
|
[ -n "$MAX_NUMBER_OF_ATOMS" ] || MAX_NUMBER_OF_ATOMS="$DEFAULT_MAX_NUMBER_OF_ATOMS"
|
|
|
|
[ -n "$RABBITMQ_MAX_NUMBER_OF_ATOMS" ] || RABBITMQ_MAX_NUMBER_OF_ATOMS="$MAX_NUMBER_OF_ATOMS"
|
2016-09-12 17:48:37 +08:00
|
|
|
|
2018-01-30 02:56:30 +08:00
|
|
|
## Common server defaults
|
2018-02-26 20:05:20 +08:00
|
|
|
SERVER_ERL_ARGS=" +P $RABBITMQ_MAX_NUMBER_OF_PROCESSES +t $RABBITMQ_MAX_NUMBER_OF_ATOMS +stbt $RABBITMQ_SCHEDULER_BIND_TYPE +zdbbl $RABBITMQ_DISTRIBUTION_BUFFER_SIZE "
|
2012-01-04 23:57:19 +08:00
|
|
|
|
2015-04-23 01:17:28 +08:00
|
|
|
# We save the current value of $RABBITMQ_PID_FILE in case it was set by
|
|
|
|
# an init script. If $CONF_ENV_FILE overrides it again, we must ignore
|
|
|
|
# it and warn the user.
|
|
|
|
saved_RABBITMQ_PID_FILE=$RABBITMQ_PID_FILE
|
|
|
|
|
|
|
|
if [ "$saved_RABBITMQ_PID_FILE" -a \
|
|
|
|
"$saved_RABBITMQ_PID_FILE" != "$RABBITMQ_PID_FILE" ]; then
|
|
|
|
echo "WARNING: RABBITMQ_PID_FILE was already set by the init script to:" 1>&2
|
|
|
|
echo " $saved_RABBITMQ_PID_FILE" 1>&2
|
|
|
|
echo " The value set in rabbitmq-env.conf is ignored because it" 1>&2
|
|
|
|
echo " would break the init script." 1>&2
|
|
|
|
|
|
|
|
RABBITMQ_PID_FILE="$saved_RABBITMQ_PID_FILE"
|
|
|
|
fi
|
|
|
|
|
2014-10-22 18:26:18 +08:00
|
|
|
[ "x" = "x$RABBITMQ_USE_LONGNAME" ] && RABBITMQ_USE_LONGNAME=${USE_LONGNAME}
|
|
|
|
if [ "xtrue" = "x$RABBITMQ_USE_LONGNAME" ] ; then
|
|
|
|
RABBITMQ_NAME_TYPE=-name
|
2015-11-04 18:25:33 +08:00
|
|
|
[ "x" = "x$HOSTNAME" ] && HOSTNAME=`env hostname -f`
|
|
|
|
[ "x" = "x$NODENAME" ] && NODENAME=rabbit@${HOSTNAME}
|
2014-10-22 18:26:18 +08:00
|
|
|
else
|
|
|
|
RABBITMQ_NAME_TYPE=-sname
|
2015-11-04 18:25:33 +08:00
|
|
|
[ "x" = "x$HOSTNAME" ] && HOSTNAME=`env hostname`
|
|
|
|
[ "x" = "x$NODENAME" ] && NODENAME=rabbit@${HOSTNAME%%.*}
|
2014-10-22 18:26:18 +08:00
|
|
|
fi
|
|
|
|
|
2014-07-03 19:08:05 +08:00
|
|
|
##--- Set environment vars RABBITMQ_<var_name> to defaults if not set
|
|
|
|
|
2015-04-21 16:59:55 +08:00
|
|
|
rmq_normalize_path() {
|
|
|
|
local path=$1
|
|
|
|
|
2016-10-29 01:50:22 +08:00
|
|
|
# Remove redundant slashes and strip a trailing slash for a
|
|
|
|
# PATH-like vars - ':' is the delimiter
|
|
|
|
echo "$path" | sed -e 's#/\{2,\}#/#g' -e 's#/$##' -e 's#/:#:#g'
|
2015-04-21 16:59:55 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
rmq_normalize_path_var() {
|
|
|
|
local var warning
|
|
|
|
|
|
|
|
local prefix="WARNING:"
|
|
|
|
|
|
|
|
for var in "$@"; do
|
|
|
|
local path=$(eval "echo \"\$$var\"")
|
|
|
|
case "$path" in
|
|
|
|
*/)
|
|
|
|
warning=1
|
|
|
|
echo "$prefix Removing trailing slash from $var" 1>&2
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
eval "$var=$(rmq_normalize_path "$path")"
|
|
|
|
|
|
|
|
if [ "x$warning" = "x1" ]; then
|
|
|
|
prefix=" "
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
2015-04-21 01:07:06 +08:00
|
|
|
rmq_check_if_shared_with_mnesia() {
|
2015-04-21 16:59:55 +08:00
|
|
|
local var warning
|
2015-04-21 01:07:06 +08:00
|
|
|
|
|
|
|
local mnesia_dir=$(rmq_realpath "${RABBITMQ_MNESIA_DIR}")
|
|
|
|
local prefix="WARNING:"
|
|
|
|
|
|
|
|
for var in "$@"; do
|
|
|
|
local dir=$(eval "echo \"\$$var\"")
|
|
|
|
|
|
|
|
case $(rmq_realpath "$dir") in
|
|
|
|
${mnesia_dir})
|
|
|
|
warning=1
|
|
|
|
echo "$prefix $var is equal to RABBITMQ_MNESIA_DIR" 1>&2
|
|
|
|
;;
|
|
|
|
${mnesia_dir}/*)
|
|
|
|
warning=1
|
|
|
|
echo "$prefix $var is located inside RABBITMQ_MNESIA_DIR" 1>&2
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
if [ "x$warning" = "x1" ]; then
|
|
|
|
prefix=" "
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
|
|
|
if [ "x$warning" = "x1" ]; then
|
|
|
|
echo "$prefix => Auto-clustering will not work ('cluster_nodes' in rabbitmq.config)" 1>&2
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
2014-07-03 19:08:05 +08:00
|
|
|
DEFAULT_NODE_IP_ADDRESS=auto
|
|
|
|
DEFAULT_NODE_PORT=5672
|
2018-01-30 02:56:30 +08:00
|
|
|
|
2014-07-03 19:08:05 +08:00
|
|
|
[ "x" = "x$RABBITMQ_NODE_IP_ADDRESS" ] && RABBITMQ_NODE_IP_ADDRESS=${NODE_IP_ADDRESS}
|
|
|
|
[ "x" = "x$RABBITMQ_NODE_PORT" ] && RABBITMQ_NODE_PORT=${NODE_PORT}
|
|
|
|
|
|
|
|
[ "x" = "x$RABBITMQ_NODE_IP_ADDRESS" ] && [ "x" != "x$RABBITMQ_NODE_PORT" ] && RABBITMQ_NODE_IP_ADDRESS=${DEFAULT_NODE_IP_ADDRESS}
|
|
|
|
[ "x" != "x$RABBITMQ_NODE_IP_ADDRESS" ] && [ "x" = "x$RABBITMQ_NODE_PORT" ] && RABBITMQ_NODE_PORT=${DEFAULT_NODE_PORT}
|
|
|
|
|
|
|
|
[ "x" = "x$RABBITMQ_DIST_PORT" ] && RABBITMQ_DIST_PORT=${DIST_PORT}
|
|
|
|
[ "x" = "x$RABBITMQ_DIST_PORT" ] && [ "x" = "x$RABBITMQ_NODE_PORT" ] && RABBITMQ_DIST_PORT=$((${DEFAULT_NODE_PORT} + 20000))
|
|
|
|
[ "x" = "x$RABBITMQ_DIST_PORT" ] && [ "x" != "x$RABBITMQ_NODE_PORT" ] && RABBITMQ_DIST_PORT=$((${RABBITMQ_NODE_PORT} + 20000))
|
|
|
|
|
2018-01-30 02:56:30 +08:00
|
|
|
[ "x" = "x$RABBITMQ_CTL_ERL_ARGS" ] && RABBITMQ_CTL_ERL_ARGS=${CTL_ERL_ARGS}
|
|
|
|
[ "x" = "x$RABBITMQ_CTL_DIST_PORT_MIN" ] && RABBITMQ_CTL_DIST_PORT_MIN=${CTL_DIST_PORT_MIN}
|
|
|
|
[ "x" = "x$RABBITMQ_CTL_DIST_PORT_MAX" ] && RABBITMQ_CTL_DIST_PORT_MAX=${CTL_DIST_PORT_MAX}
|
|
|
|
[ "x" = "x$RABBITMQ_CTL_DIST_PORT_MIN" ] && RABBITMQ_CTL_DIST_PORT_MIN=$((${RABBITMQ_DIST_PORT} + 10000))
|
|
|
|
[ "x" = "x$RABBITMQ_CTL_DIST_PORT_MAX" ] && RABBITMQ_CTL_DIST_PORT_MAX=$((${RABBITMQ_DIST_PORT} + 10010))
|
|
|
|
|
2014-07-03 19:08:05 +08:00
|
|
|
[ "x" = "x$RABBITMQ_NODENAME" ] && RABBITMQ_NODENAME=${NODENAME}
|
2015-07-02 09:31:24 +08:00
|
|
|
[ "x" = "x$RABBITMQ_IO_THREAD_POOL_SIZE" ] && RABBITMQ_IO_THREAD_POOL_SIZE=${IO_THREAD_POOL_SIZE}
|
2014-07-03 19:08:05 +08:00
|
|
|
[ "x" = "x$RABBITMQ_SERVER_ERL_ARGS" ] && RABBITMQ_SERVER_ERL_ARGS=${SERVER_ERL_ARGS}
|
|
|
|
[ "x" = "x$RABBITMQ_CONFIG_FILE" ] && RABBITMQ_CONFIG_FILE=${CONFIG_FILE}
|
|
|
|
[ "x" = "x$RABBITMQ_LOG_BASE" ] && RABBITMQ_LOG_BASE=${LOG_BASE}
|
|
|
|
[ "x" = "x$RABBITMQ_MNESIA_BASE" ] && RABBITMQ_MNESIA_BASE=${MNESIA_BASE}
|
|
|
|
[ "x" = "x$RABBITMQ_SERVER_START_ARGS" ] && RABBITMQ_SERVER_START_ARGS=${SERVER_START_ARGS}
|
|
|
|
[ "x" = "x$RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS" ] && RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS=${SERVER_ADDITIONAL_ERL_ARGS}
|
2016-05-20 20:43:35 +08:00
|
|
|
[ "x" = "x$RABBITMQ_SERVER_CODE_PATH" ] && RABBITMQ_SERVER_CODE_PATH=${SERVER_CODE_PATH}
|
2014-07-03 19:08:05 +08:00
|
|
|
[ "x" = "x$RABBITMQ_MNESIA_DIR" ] && RABBITMQ_MNESIA_DIR=${MNESIA_DIR}
|
|
|
|
[ "x" = "x$RABBITMQ_MNESIA_DIR" ] && RABBITMQ_MNESIA_DIR=${RABBITMQ_MNESIA_BASE}/${RABBITMQ_NODENAME}
|
2016-02-02 18:59:56 +08:00
|
|
|
[ "x" = "x$RABBITMQ_GENERATED_CONFIG_DIR" ] && RABBITMQ_GENERATED_CONFIG_DIR=${GENERATED_CONFIG_DIR}
|
2016-03-17 17:32:14 +08:00
|
|
|
[ "x" = "x$RABBITMQ_ADVANCED_CONFIG_FILE" ] && RABBITMQ_ADVANCED_CONFIG_FILE=${ADVANCED_CONFIG_FILE}
|
2016-03-10 22:16:12 +08:00
|
|
|
[ "x" = "x$RABBITMQ_SCHEMA_DIR" ] && RABBITMQ_SCHEMA_DIR=${SCHEMA_DIR}
|
2016-09-12 21:44:23 +08:00
|
|
|
[ "x" = "x$RABBITMQ_IGNORE_SIGINT" ] && RABBITMQ_IGNORE_SIGINT="true"
|
2016-09-13 01:40:08 +08:00
|
|
|
[ "xtrue" = "x$RABBITMQ_IGNORE_SIGINT" ] && RABBITMQ_IGNORE_SIGINT_FLAG="+B i"
|
2014-07-03 19:08:05 +08:00
|
|
|
|
2015-04-21 16:59:55 +08:00
|
|
|
rmq_normalize_path_var \
|
|
|
|
RABBITMQ_CONFIG_FILE \
|
|
|
|
RABBITMQ_LOG_BASE \
|
|
|
|
RABBITMQ_MNESIA_BASE \
|
|
|
|
RABBITMQ_MNESIA_DIR
|
|
|
|
|
2014-07-03 19:08:05 +08:00
|
|
|
[ "x" = "x$RABBITMQ_PID_FILE" ] && RABBITMQ_PID_FILE=${PID_FILE}
|
|
|
|
[ "x" = "x$RABBITMQ_PID_FILE" ] && RABBITMQ_PID_FILE=${RABBITMQ_MNESIA_DIR}.pid
|
2015-04-21 16:59:55 +08:00
|
|
|
rmq_normalize_path_var RABBITMQ_PID_FILE
|
2014-07-03 19:08:05 +08:00
|
|
|
|
2015-07-01 20:47:36 +08:00
|
|
|
[ "x" = "x$RABBITMQ_BOOT_MODULE" ] && RABBITMQ_BOOT_MODULE=${BOOT_MODULE}
|
|
|
|
|
2017-02-22 22:29:05 +08:00
|
|
|
[ "x" = "x$RABBITMQ_PLUGINS_EXPAND_DIR" ] && RABBITMQ_PLUGINS_EXPAND_DIR=${PLUGINS_EXPAND_DIR}
|
|
|
|
[ "x" = "x$RABBITMQ_PLUGINS_EXPAND_DIR" ] && RABBITMQ_PLUGINS_EXPAND_DIR=${RABBITMQ_MNESIA_BASE}/${RABBITMQ_NODENAME}-plugins-expand
|
|
|
|
rmq_normalize_path_var RABBITMQ_PLUGINS_EXPAND_DIR
|
|
|
|
|
2015-10-30 19:21:44 +08:00
|
|
|
[ "x" != "x$RABBITMQ_ENABLED_PLUGINS_FILE" ] && RABBITMQ_ENABLED_PLUGINS_FILE_source=environment
|
2014-07-03 19:08:05 +08:00
|
|
|
[ "x" = "x$RABBITMQ_ENABLED_PLUGINS_FILE" ] && RABBITMQ_ENABLED_PLUGINS_FILE=${ENABLED_PLUGINS_FILE}
|
2015-04-21 16:59:55 +08:00
|
|
|
rmq_normalize_path_var RABBITMQ_ENABLED_PLUGINS_FILE
|
2014-07-03 19:08:05 +08:00
|
|
|
|
2015-10-30 19:21:44 +08:00
|
|
|
[ "x" != "x$RABBITMQ_PLUGINS_DIR" ] && RABBITMQ_PLUGINS_DIR_source=environment
|
2014-07-03 19:08:05 +08:00
|
|
|
[ "x" = "x$RABBITMQ_PLUGINS_DIR" ] && RABBITMQ_PLUGINS_DIR=${PLUGINS_DIR}
|
2015-04-21 16:59:55 +08:00
|
|
|
rmq_normalize_path_var RABBITMQ_PLUGINS_DIR
|
2014-07-03 19:08:05 +08:00
|
|
|
|
|
|
|
## Log rotation
|
|
|
|
[ "x" = "x$RABBITMQ_LOGS" ] && RABBITMQ_LOGS=${LOGS}
|
Use Lager to log RabbitMQ messages
By default, RabbitMQ now logs messages to a single file
($RABBITMQ_LOGS). The $RABBITMQ_SASL_LOGS variable is unused. To
configure how and which messages are logged, it's recommended to do it
from rabbitmq.config, not from the environment variable.
The old `log_levels` parameter is unsupported and categories are
replaced by Lager extra sinks. If you had in your rabbitmq.config:
{rabbit, [
{log_levels, [{connection, info}]}
]}
You can now configure Lager like this:
{lager, [
{extra_sinks, [
{rabbit_connection_lager_event, [
{handlers, [{lager_forwarder_backend, [lager_event, info]}]}
]}
]}
]}
rabbitmq-build.mk from rabbitmq-common is included in the top-level
Makefile. It sets the appropriate compiler options to enable Lager's
lager_transform parse_transform module.
rabbit_log calls are now converted by this parse_transform to direct
calls to lager:log(). To keep backward compatibility with other plugins,
the rabbit_log module still implements all the <level>() functions.
Compared to the parse_transformed calls, the main difference is the
logged message does not carry the file:line metadata.
Fixes #94.
2015-12-05 01:07:00 +08:00
|
|
|
[ "x" != "x$RABBITMQ_LOGS" ] && export RABBITMQ_LOGS_source=environment
|
2014-07-03 19:08:05 +08:00
|
|
|
[ "x" = "x$RABBITMQ_LOGS" ] && RABBITMQ_LOGS="${RABBITMQ_LOG_BASE}/${RABBITMQ_NODENAME}.log"
|
2016-11-30 20:17:17 +08:00
|
|
|
[ "x" = "x$RABBITMQ_UPGRADE_LOG" ] && RABBITMQ_UPGRADE_LOG="${RABBITMQ_LOG_BASE}/${RABBITMQ_NODENAME}_upgrade.log"
|
2017-08-03 23:03:58 +08:00
|
|
|
[ "x" = "x$ERL_CRASH_DUMP" ] && ERL_CRASH_DUMP="${RABBITMQ_LOG_BASE}/erl_crash.dump"
|
2014-07-03 19:08:05 +08:00
|
|
|
|
2016-11-30 20:17:17 +08:00
|
|
|
rmq_normalize_path_var RABBITMQ_LOGS
|
|
|
|
|
|
|
|
rmq_normalize_path_var RABBITMQ_UPGRADE_LOG
|
2015-04-21 16:59:55 +08:00
|
|
|
|
2015-04-21 01:07:06 +08:00
|
|
|
# Check if files and directories non-related to Mnesia are configured
|
|
|
|
# to be in $RABBITMQ_MNESIA_DIR. If this is the case, issue a warning
|
|
|
|
# because it will prevent auto-clustering from working (the node will be
|
|
|
|
# considered non-virgin).
|
|
|
|
|
|
|
|
rmq_check_if_shared_with_mnesia \
|
|
|
|
RABBITMQ_CONFIG_FILE \
|
|
|
|
RABBITMQ_LOG_BASE \
|
|
|
|
RABBITMQ_PID_FILE \
|
2017-02-22 22:29:05 +08:00
|
|
|
RABBITMQ_PLUGINS_EXPAND_DIR \
|
2015-04-21 01:07:06 +08:00
|
|
|
RABBITMQ_ENABLED_PLUGINS_FILE \
|
|
|
|
RABBITMQ_PLUGINS_DIR \
|
2016-11-30 20:17:17 +08:00
|
|
|
RABBITMQ_LOGS \
|
|
|
|
RABBITMQ_UPGRADE_LOG
|
2015-04-21 01:07:06 +08:00
|
|
|
|
2014-07-03 19:08:05 +08:00
|
|
|
##--- End of overridden <var_name> variables
|
2014-11-27 00:45:25 +08:00
|
|
|
|
2015-08-31 17:26:39 +08:00
|
|
|
## Development-specific environment.
|
2015-09-25 17:31:14 +08:00
|
|
|
if [ "${RABBITMQ_DEV_ENV}" ]; then
|
2016-11-07 20:03:18 +08:00
|
|
|
if [ "$RABBITMQ_PLUGINS_DIR_source" != 'environment' -o \
|
|
|
|
"$RABBITMQ_ENABLED_PLUGINS_FILE_source" != 'environment' ]; then
|
2015-09-25 18:05:42 +08:00
|
|
|
# We need to query the running node for the plugins directory
|
|
|
|
# and the "enabled plugins" file.
|
|
|
|
eval $( (${RABBITMQ_SCRIPTS_DIR}/rabbitmqctl eval \
|
|
|
|
'{ok, P} = application:get_env(rabbit, plugins_dir),
|
|
|
|
{ok, E} = application:get_env(rabbit, enabled_plugins_file),
|
2017-05-30 17:23:29 +08:00
|
|
|
B = os:getenv("RABBITMQ_MNESIA_BASE"),
|
|
|
|
M = os:getenv("RABBITMQ_MNESIA_DIR"),
|
2015-09-25 18:05:42 +08:00
|
|
|
io:format(
|
|
|
|
"plugins_dir=\"~s\"~n"
|
2017-05-30 17:23:29 +08:00
|
|
|
"enabled_plugins_file=\"~s\"~n"
|
|
|
|
"mnesia_base=\"~s\"~n"
|
|
|
|
"mnesia_dir=\"~s\"~n", [P, E, B, M]).' \
|
2018-06-04 20:28:17 +08:00
|
|
|
2>/dev/null | grep -E '^(plugins_dir|enabled_plugins_file|mnesia_base|mnesia_dir)=') || :)
|
2015-10-30 19:21:44 +08:00
|
|
|
if [ "${plugins_dir}" -a \
|
|
|
|
"$RABBITMQ_PLUGINS_DIR_source" != 'environment' ]; then
|
2015-09-25 18:05:42 +08:00
|
|
|
RABBITMQ_PLUGINS_DIR="${plugins_dir}"
|
|
|
|
fi
|
2015-10-30 19:21:44 +08:00
|
|
|
if [ "${enabled_plugins_file}" -a \
|
|
|
|
"$RABBITMQ_ENABLED_PLUGINS_FILE_source" != 'environment' ]; then
|
2015-09-25 18:05:42 +08:00
|
|
|
RABBITMQ_ENABLED_PLUGINS_FILE="${enabled_plugins_file}"
|
|
|
|
fi
|
2017-05-30 17:23:29 +08:00
|
|
|
if [ "${mnesia_base}" -a \
|
|
|
|
"$RABBITMQ_MNESIA_BASE_source" != 'environment' ]; then
|
|
|
|
RABBITMQ_MNESIA_BASE="${mnesia_base}"
|
|
|
|
fi
|
|
|
|
if [ "${mnesia_dir}" -a \
|
|
|
|
"$RABBITMQ_MNESIA_DIR_source" != 'environment' ]; then
|
|
|
|
RABBITMQ_MNESIA_DIR="${mnesia_dir}"
|
|
|
|
fi
|
2015-09-25 18:05:42 +08:00
|
|
|
fi
|
|
|
|
|
2016-10-29 01:50:22 +08:00
|
|
|
if path_contains_existing_directory "${RABBITMQ_PLUGINS_DIR}" ; then
|
2015-10-20 21:42:59 +08:00
|
|
|
# RabbitMQ was started with "make run-broker" from its own
|
|
|
|
# source tree. Take rabbit_common from the plugins directory.
|
2015-09-25 16:23:37 +08:00
|
|
|
ERL_LIBS="${RABBITMQ_PLUGINS_DIR}:${ERL_LIBS}"
|
2015-10-20 21:42:59 +08:00
|
|
|
else
|
|
|
|
# RabbitMQ runs from a testsuite or a plugin. The .ez files are
|
|
|
|
# not available under RabbitMQ source tree. We need to look at
|
|
|
|
# $DEPS_DIR and default locations.
|
|
|
|
|
|
|
|
if [ "${DEPS_DIR}" -a -d "${DEPS_DIR}/rabbit_common/ebin" ]; then
|
|
|
|
# $DEPS_DIR is set, and it contains rabbitmq-common, use
|
|
|
|
# this.
|
|
|
|
DEPS_DIR_norm="${DEPS_DIR}"
|
|
|
|
elif [ -f "${RABBITMQ_SCRIPTS_DIR}/../../../erlang.mk" -a \
|
|
|
|
-d "${RABBITMQ_SCRIPTS_DIR}/../../rabbit_common/ebin" ]; then
|
|
|
|
# Look at default locations: "deps" subdirectory inside a
|
|
|
|
# plugin or the Umbrella.
|
|
|
|
DEPS_DIR_norm="${RABBITMQ_SCRIPTS_DIR}/../.."
|
|
|
|
fi
|
|
|
|
DEPS_DIR_norm=$(rmq_realpath "${DEPS_DIR_norm}")
|
|
|
|
|
2015-09-25 17:31:14 +08:00
|
|
|
ERL_LIBS="${DEPS_DIR_norm}:${ERL_LIBS}"
|
2015-08-31 17:26:39 +08:00
|
|
|
fi
|
2015-10-07 20:07:39 +08:00
|
|
|
else
|
2016-10-29 01:50:22 +08:00
|
|
|
if path_contains_existing_directory "${RABBITMQ_PLUGINS_DIR}" ; then
|
2015-10-07 20:07:39 +08:00
|
|
|
# RabbitMQ was started from its install directory. Take
|
|
|
|
# rabbit_common from the plugins directory.
|
|
|
|
ERL_LIBS="${RABBITMQ_PLUGINS_DIR}:${ERL_LIBS}"
|
|
|
|
fi
|
|
|
|
fi
|
2015-09-25 17:31:14 +08:00
|
|
|
|
2015-10-07 20:07:39 +08:00
|
|
|
ERL_LIBS=${ERL_LIBS%:}
|
|
|
|
if [ "$ERL_LIBS" ]; then
|
2015-09-02 00:30:45 +08:00
|
|
|
export ERL_LIBS
|
2015-08-31 17:26:39 +08:00
|
|
|
fi
|
|
|
|
|
2017-12-30 05:56:23 +08:00
|
|
|
run_escript()
|
|
|
|
{
|
|
|
|
escript_main="${1:?escript_main must be defined}"
|
|
|
|
shift
|
|
|
|
escript="${1:?escript must be defined}"
|
|
|
|
shift
|
|
|
|
|
2018-01-03 03:53:24 +08:00
|
|
|
# shellcheck disable=SC2086
|
2017-12-30 05:56:23 +08:00
|
|
|
exec "${ERL_DIR}erl" +B \
|
2018-02-16 08:08:28 +08:00
|
|
|
-boot "${CLEAN_BOOT_FILE}" \
|
2017-12-30 05:56:23 +08:00
|
|
|
-noinput -noshell -hidden -smp enable \
|
2018-02-16 00:30:59 +08:00
|
|
|
$RABBITMQ_CTL_ERL_ARGS \
|
|
|
|
-kernel inet_dist_listen_min "$RABBITMQ_CTL_DIST_PORT_MIN" \
|
|
|
|
-kernel inet_dist_listen_max "$RABBITMQ_CTL_DIST_PORT_MAX" \
|
2017-12-30 05:56:23 +08:00
|
|
|
-sasl errlog_type error \
|
2018-02-16 08:08:28 +08:00
|
|
|
-mnesia dir "\"${RABBITMQ_MNESIA_DIR}\"" \
|
|
|
|
-nodename "$RABBITMQ_NODENAME" \
|
2017-12-30 05:56:23 +08:00
|
|
|
-run escript start \
|
|
|
|
-escript main "$escript_main" \
|
|
|
|
-extra "$escript" "$@"
|
|
|
|
}
|
|
|
|
|
2015-04-08 17:52:50 +08:00
|
|
|
RABBITMQ_ENV_LOADED=1
|
|
|
|
|
2014-11-27 00:45:25 +08:00
|
|
|
# Since we source this elsewhere, don't accidentally stop execution
|
|
|
|
true
|