mirror of
https://github.com/zulip/zulip.git
synced 2025-11-04 14:03:30 +00:00
This isn't fully supported yet, but merging this makes it more convenient to test Zulip on Ubuntu Xenial.
112 lines
3.7 KiB
Bash
Executable File
112 lines
3.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -xe
|
|
|
|
# Assumes we've already been untarred
|
|
|
|
# Specify options for apt.
|
|
APT_OPTIONS="${APT_OPTIONS:-}"
|
|
# Install additional packages using apt.
|
|
ADDITIONAL_PACKAGES=${ADDITIONAL_PACKAGES:-}
|
|
# Deployment type is almost always voyager.
|
|
DEPLOYMENT_TYPE="${DEPLOYMENT_TYPE:-voyager}"
|
|
# Comma-separated list of puppet manifests to install. default is
|
|
# zulip::voyager for an all-in-one system or zulip::dockervoyager for
|
|
# Docker. Use e.g. zulip::app_frontend for a Zulip frontend server.
|
|
PUPPET_CLASSES="${PUPPET_CLASSES:-zulip::voyager}"
|
|
|
|
apt-get install -y lsb-release
|
|
|
|
# First, install any updates from the apt repo that may be needed
|
|
wget -qO - https://zulip.com/dist/keys/zulip-ppa.asc | apt-key add -
|
|
release=$(lsb_release -sc)
|
|
if [ "$release" = "trusty" ]; then
|
|
cat >/etc/apt/sources.list.d/zulip.list <<EOF
|
|
deb http://ppa.launchpad.net/tabbott/zulip/ubuntu trusty main
|
|
deb-src http://ppa.launchpad.net/tabbott/zulip/ubuntu trusty main
|
|
EOF
|
|
elif [ "$release" = "xenial" ]; then
|
|
cat >/etc/apt/sources.list.d/zulip.list <<EOF
|
|
deb http://ppa.launchpad.net/tabbott/zulip/ubuntu xenial main
|
|
deb-src http://ppa.launchpad.net/tabbott/zulip/ubuntu xenial main
|
|
EOF
|
|
else
|
|
echo "Unsupported release $release."
|
|
exit 1
|
|
fi
|
|
|
|
apt-get update
|
|
apt-get -y dist-upgrade $APT_OPTIONS
|
|
apt-get install -y puppet git python python-six $ADDITIONAL_PACKAGES
|
|
|
|
# Create and activate a virtualenv
|
|
/root/zulip/scripts/lib/create-production-venv /root/zulip/zulip-venv
|
|
|
|
# puppet apply
|
|
mkdir -p /etc/zulip
|
|
echo -e "[machine]\npuppet_classes = $PUPPET_CLASSES\ndeploy_type = $DEPLOYMENT_TYPE" > /etc/zulip/zulip.conf
|
|
/root/zulip/scripts/zulip-puppet-apply -f
|
|
|
|
# These server restarting bits should be moveable into puppet-land, ideally
|
|
apt-get -y upgrade
|
|
if [ -e "/etc/init.d/nginx" ]; then
|
|
# Check nginx was configured properly now that we've installed it.
|
|
# Most common failure mode is certs not having been installed.
|
|
nginx -t
|
|
service nginx restart
|
|
fi
|
|
|
|
/root/zulip/scripts/setup/generate_secrets.py
|
|
cp -a /root/zulip/zproject/local_settings_template.py /etc/zulip/settings.py
|
|
ln -nsf /etc/zulip/settings.py /root/zulip/zproject/local_settings.py
|
|
|
|
# Restart camo since generate_secrets.py likely replaced its secret key
|
|
if [ -z "$TRAVIS" ]; then
|
|
# We don't run this in Travis CI due to a weird hang bug
|
|
service camo restart
|
|
fi
|
|
|
|
if ! rabbitmqctl status >/dev/null; then
|
|
set +x
|
|
echo; echo "RabbitMQ seems to not have started properly after the installation process."
|
|
echo "Often, this can be caused by misconfigured /etc/hosts in virtualized environments"
|
|
echo "See https://github.com/zulip/zulip/issues/53#issuecomment-143805121"
|
|
echo "for more information"
|
|
echo
|
|
set -x
|
|
exit 1
|
|
fi
|
|
|
|
/root/zulip/scripts/setup/configure-rabbitmq
|
|
|
|
/root/zulip/scripts/setup/postgres-init-db
|
|
|
|
deploy_path=$(/root/zulip/zulip_tools.py make_deploy_path)
|
|
mv /root/zulip "$deploy_path"
|
|
ln -nsf /home/zulip/deployments/next /root/zulip
|
|
ln -nsf "$deploy_path" /home/zulip/deployments/next
|
|
ln -nsf "$deploy_path" /home/zulip/deployments/current
|
|
ln -nsf /etc/zulip/settings.py "$deploy_path"/zproject/local_settings.py
|
|
mkdir -p "$deploy_path"/prod-static/serve
|
|
cp -rT "$deploy_path"/prod-static/serve /home/zulip/prod-static
|
|
chown -R zulip:zulip /home/zulip /var/log/zulip /etc/zulip/settings.py
|
|
if [ -e "/var/run/supervisor.sock" ]; then
|
|
# If supervisor isn't running, no need to chown its socket
|
|
chown zulip:zulip /var/run/supervisor.sock
|
|
fi
|
|
|
|
cd /home/zulip/deployments/current
|
|
|
|
set +x
|
|
cat <<EOF
|
|
|
|
Installation complete!
|
|
|
|
Now edit /etc/zulip/settings.py and fill in the mandatory values.
|
|
|
|
Once you've done that, please run:
|
|
|
|
su zulip -c /home/zulip/deployments/current/scripts/setup/initialize-database
|
|
|
|
To configure the initial database.
|
|
EOF
|