install: Support Debian 12.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
Anders Kaseorg 2023-05-10 14:20:46 -07:00 committed by Tim Abbott
parent 16dedb08fd
commit 12310189ed
12 changed files with 75 additions and 6 deletions

View File

@ -144,6 +144,11 @@ jobs:
os: bullseye os: bullseye
extra-args: --test-custom-db extra-args: --test-custom-db
- docker_image: zulip/ci:bookworm
name: Debian 12 production install
os: bookworm
extra-args: ""
name: ${{ matrix.name }} name: ${{ matrix.name }}
container: container:
image: ${{ matrix.docker_image }} image: ${{ matrix.docker_image }}

View File

@ -48,6 +48,12 @@ jobs:
os: jammy os: jammy
include_documentation_tests: false include_documentation_tests: false
include_frontend_tests: false include_frontend_tests: false
# Debian 12 ships with Python 3.11.2.
- docker_image: zulip/ci:bookworm
name: Debian 12 (Python 3.11, backend)
os: bookworm
include_documentation_tests: false
include_frontend_tests: false
runs-on: ubuntu-latest runs-on: ubuntu-latest
name: ${{ matrix.name }} name: ${{ matrix.name }}

View File

@ -20,7 +20,7 @@ host by following these instructions. Currently supported platforms
are: are:
- Ubuntu 20.04, 22.04 - Ubuntu 20.04, 22.04
- Debian 11 - Debian 11, 12
- CentOS 7 (beta) - CentOS 7 (beta)
- Fedora 33 and 34 (beta) - Fedora 33 and 34 (beta)
- RHEL 7 (beta) - RHEL 7 (beta)

View File

@ -51,7 +51,7 @@ a proxy to access the internet.)
[GitHub account](#step-0-set-up-git--github). [GitHub account](#step-0-set-up-git--github).
- **macOS**: macOS (10.11 El Capitan or newer recommended) - **macOS**: macOS (10.11 El Capitan or newer recommended)
- **Ubuntu LTS**: 20.04 or 22.04 - **Ubuntu LTS**: 20.04 or 22.04
- **Debian**: 11 - **Debian**: 11 or 12
- **Fedora**: tested for 36 - **Fedora**: tested for 36
- **Windows**: Windows 64-bit (Win 10 recommended), hardware - **Windows**: Windows 64-bit (Win 10 recommended), hardware
virtualization enabled (VT-x or AMD-V), administrator access. virtualization enabled (VT-x or AMD-V), administrator access.

View File

@ -7,6 +7,7 @@ To run a Zulip server, you will need:
- Ubuntu 20.04 - Ubuntu 20.04
- Ubuntu 22.04 - Ubuntu 22.04
- Debian 11 - Debian 11
- Debian 12
- A supported CPU architecture: - A supported CPU architecture:
- x86-64 - x86-64
- aarch64 - aarch64
@ -36,7 +37,7 @@ on issues you'll encounter](install-existing-server.md).
#### Operating system #### Operating system
Ubuntu 20.04, Ubuntu 22.04, and Debian 11 Ubuntu 20.04, Ubuntu 22.04, Debian 11, and Debian 12
are supported for running Zulip in production. You can also are supported for running Zulip in production. You can also
run Zulip on other platforms that support Docker using run Zulip on other platforms that support Docker using
[docker-zulip][docker-zulip-homepage]. [docker-zulip][docker-zulip-homepage].

View File

@ -484,6 +484,52 @@ instructions for other supported platforms.
18.04](#upgrading-from-ubuntu-1604-xenial-to-1804-bionic), so 18.04](#upgrading-from-ubuntu-1604-xenial-to-1804-bionic), so
that you are running a supported operating system. that you are running a supported operating system.
### Upgrading from Debian 11 to 12
1. Upgrade your server to the latest `7.x` release.
2. As the Zulip user, stop the Zulip server and run the following
to back up the system:
```bash
/home/zulip/deployments/current/scripts/stop-server
/home/zulip/deployments/current/manage.py backup --output=/home/zulip/release-upgrade.backup.tar.gz
```
3. Follow [Debian's instructions to upgrade the OS][bookworm-upgrade].
[bookworm-upgrade]: https://www.debian.org/releases/bookworm/amd64/release-notes/ch-upgrading.html
When prompted for you how to upgrade configuration
files for services that Zulip manages like Redis, PostgreSQL,
nginx, and memcached, the best choice is `N` to keep the
currently installed version. But it's not important; the next
step will re-install Zulip's configuration in any case.
4. As root, run the following steps to regenerate configurations
for services used by Zulip:
```bash
apt remove upstart -y
/home/zulip/deployments/current/scripts/zulip-puppet-apply -f
```
5. Reinstall the current version of Zulip, which among other things
will recompile Zulip's Python module dependencies for your new
version of Python:
```bash
rm -rf /srv/zulip-venv-cache/*
/home/zulip/deployments/current/scripts/lib/upgrade-zulip-stage-2 \
/home/zulip/deployments/current/ --ignore-static-assets --audit-fts-indexes
```
This will finish by restarting your Zulip server; you should now
be able to navigate to its URL and confirm everything is working
correctly.
6. As an additional step, you can also [upgrade the PostgreSQL version](#upgrading-postgresql).
### Upgrading from Debian 10 to 11 ### Upgrading from Debian 10 to 11
1. Upgrade your server to the latest `5.x` release. You can only 1. Upgrade your server to the latest `5.x` release. You can only

View File

@ -219,7 +219,7 @@ if [ -f /etc/os-release ]; then
fi fi
case "$os_id $os_version_id" in case "$os_id $os_version_id" in
'debian 11' | 'ubuntu 20.04' | 'ubuntu 22.04') ;; 'debian 11' | 'debian 12' | 'ubuntu 20.04' | 'ubuntu 22.04') ;;
*) *)
set +x set +x
cat <<EOF cat <<EOF
@ -228,6 +228,7 @@ Unsupported OS release: $os_id $os_version_id
Zulip in production is supported only on: Zulip in production is supported only on:
- Debian 11 - Debian 11
- Debian 12
- Ubuntu 20.04 LTS - Ubuntu 20.04 LTS
- Ubuntu 22.04 LTS - Ubuntu 22.04 LTS

View File

@ -210,6 +210,7 @@ if os.path.exists("/etc/init.d/postgresql"):
if not postgresql_version: if not postgresql_version:
default_postgresql_version = { default_postgresql_version = {
("debian", "11"): "13", ("debian", "11"): "13",
("debian", "12"): "15",
("ubuntu", "20.04"): "12", ("ubuntu", "20.04"): "12",
("ubuntu", "22.04"): "14", ("ubuntu", "22.04"): "14",
("centos", "7"): "11", ("centos", "7"): "11",

View File

@ -0,0 +1,2 @@
deb http://apt.postgresql.org/pub/repos/apt/ bookworm-pgdg main
deb-src http://apt.postgresql.org/pub/repos/apt/ bookworm-pgdg main

View File

@ -26,6 +26,10 @@ if [[ ! -e /usr/share/doc/groonga-apt-source/copyright ]]; then
read -r distribution read -r distribution
read -r release read -r release
} <<<"$os_info" } <<<"$os_info"
if [ "$distribution" = debian ] && [ "$release" = bookworm ]; then
# PGroonga binaries are not yet provided for Debian 12.
exit
fi
groonga_apt_source_deb="groonga-apt-source-latest-$release.deb" groonga_apt_source_deb="groonga-apt-source-latest-$release.deb"
groonga_apt_source_deb_sign="$groonga_apt_source_deb.asc.$pgroonga_apt_sign_key_fingerprint" groonga_apt_source_deb_sign="$groonga_apt_source_deb.asc.$pgroonga_apt_sign_key_fingerprint"
curl -fLO --retry 3 "https://packages.groonga.org/$distribution/$groonga_apt_source_deb" curl -fLO --retry 3 "https://packages.groonga.org/$distribution/$groonga_apt_source_deb"

View File

@ -4,3 +4,4 @@ cd "$(dirname "${BASH_SOURCE[0]}")"
docker build . --build-arg=BASE_IMAGE=ubuntu:20.04 --pull --tag=zulip/ci:focal docker build . --build-arg=BASE_IMAGE=ubuntu:20.04 --pull --tag=zulip/ci:focal
docker build . --build-arg=BASE_IMAGE=ubuntu:22.04 --pull --tag=zulip/ci:jammy docker build . --build-arg=BASE_IMAGE=ubuntu:22.04 --pull --tag=zulip/ci:jammy
docker build . --build-arg=BASE_IMAGE=debian:11 --pull --tag=zulip/ci:bullseye docker build . --build-arg=BASE_IMAGE=debian:11 --pull --tag=zulip/ci:bullseye
docker build . --build-arg=BASE_IMAGE=debian:bookworm --pull --tag=zulip/ci:bookworm

View File

@ -78,6 +78,8 @@ vendor = distro_info["ID"]
os_version = distro_info["VERSION_ID"] os_version = distro_info["VERSION_ID"]
if vendor == "debian" and os_version == "11": # bullseye if vendor == "debian" and os_version == "11": # bullseye
POSTGRESQL_VERSION = "13" POSTGRESQL_VERSION = "13"
elif vendor == "debian" and os_version == "12": # bookworm
POSTGRESQL_VERSION = "15"
elif vendor == "ubuntu" and os_version == "20.04": # focal elif vendor == "ubuntu" and os_version == "20.04": # focal
POSTGRESQL_VERSION = "12" POSTGRESQL_VERSION = "12"
elif vendor == "ubuntu" and os_version == "21.10": # impish elif vendor == "ubuntu" and os_version == "21.10": # impish
@ -159,7 +161,7 @@ COMMON_YUM_DEPENDENCIES = [
] ]
BUILD_PGROONGA_FROM_SOURCE = False BUILD_PGROONGA_FROM_SOURCE = False
if vendor == "debian" and os_version in [] or vendor == "ubuntu" and os_version in []: if vendor == "debian" and os_version in ["12"] or vendor == "ubuntu" and os_version in []:
# For platforms without a PGroonga release, we need to build it # For platforms without a PGroonga release, we need to build it
# from source. # from source.
BUILD_PGROONGA_FROM_SOURCE = True BUILD_PGROONGA_FROM_SOURCE = True
@ -180,7 +182,7 @@ elif "debian" in os_families():
# additional dependency for postgresql-13-pgdg-pgroonga. # additional dependency for postgresql-13-pgdg-pgroonga.
# #
# See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=895037 # See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=895037
if vendor == "debian" and os_version == "11": if vendor == "debian":
DEBIAN_DEPENDENCIES.remove("libappindicator1") DEBIAN_DEPENDENCIES.remove("libappindicator1")
DEBIAN_DEPENDENCIES.append("libgroonga0") DEBIAN_DEPENDENCIES.append("libgroonga0")