#!/usr/bin/env bash set -e usage() { cat <&2 echo >&2 usage fi if [ -z "$EXTERNAL_HOST" ] || [ -z "$ZULIP_ADMINISTRATOR" ]; then if [ -n "$USE_CERTBOT" ] || [ -z "$NO_INIT_DB" ]; then usage fi fi # Do set -x after option parsing is complete set -x ZULIP_PATH="$(readlink -f "$(dirname "$0")"/../..)" # Force a known locale. Some packages on PyPI fail to install in some locales. localedef -i en_US -f UTF-8 en_US.UTF-8 export LC_ALL="en_US.UTF-8" export LANG="en_US.UTF-8" export LANGUAGE="en_US.UTF-8" # Check for a supported OS release. apt-get install -y lsb-release sudo os_release="$(lsb_release -sc)" case "$os_release" in trusty|xenial|stretch|bionic) ;; *) set +x cat <&2 echo "Insufficient RAM. Zulip requires at least 2GB of RAM." >&2 echo >&2 echo -e '\033[0m' >&2 exit 1 fi # setup-apt-repo does an `apt-get update` "$ZULIP_PATH"/scripts/lib/setup-apt-repo # Handle issues around upstart on Ubuntu Xenial "$ZULIP_PATH"/scripts/lib/check-upstart # Check early for missing SSL certificates if [ "$PUPPET_CLASSES" = "zulip::voyager" ] && [ -z "$USE_CERTBOT""$SELF_SIGNED_CERT" ] && { ! [ -e "/etc/ssl/private/zulip.key" ] || ! [ -e "/etc/ssl/certs/zulip.combined-chain.crt" ]; }; then set +x cat </dev/null # root@host# apt install rabbitmq-server # root@host# dpkg-query --showformat '${Status}\n' -W rabbitmq-server 2>/dev/null # install ok installed # root@host# apt remove rabbitmq-server # root@host# dpkg-query --showformat '${Status}\n' -W rabbitmq-server 2>/dev/null # deinstall ok config-files # root@host# apt purge rabbitmq-server # root@host# dpkg-query --showformat '${Status}\n' -W rabbitmq-server 2>/dev/null # unknown ok not-installed # # (There are more possibilities in the case of dpkg errors.) Here # we are checking for either empty or not-installed. if [ -n "$TRAVIS" ] || ! dpkg-query --showformat '${Status}\n' -W rabbitmq-server 2>/dev/null | grep -vq ' not-installed$'; then cat < /etc/zulip/zulip.conf "$ZULIP_PATH"/scripts/zulip-puppet-apply -f # Detect which features were selected for the below set +e [ -e "/etc/init.d/camo" ]; has_camo=$? [ -e "/etc/init.d/nginx" ]; has_nginx=$? [ -e "/etc/supervisor/conf.d/zulip.conf" ]; has_appserver=$? [ -e "/etc/cron.d/rabbitmq-numconsumers" ]; has_rabbit=$? [ -e "/etc/init.d/postgresql" ]; has_postgres=$? set -e # Docker service setup is done in the docker config, not here if [ "$DEPLOYMENT_TYPE" = "dockervoyager" ]; then has_camo=1 has_nginx=1 has_appserver=0 has_rabbit=1 has_postgres=1 fi # These server restarting bits should be moveable into puppet-land, ideally apt-get -y upgrade if [ "$has_nginx" = 0 ]; then # Check nginx was configured properly now that we've installed it. # Most common failure mode is certs not having been installed. nginx -t || ( set +x cat </dev/null; then set +x cat <