从 Ghost 到 Zulip:在 WSL2 本地设置 Zulip(并修复棘手的 Python 问题)

发布: (2025年12月18日 GMT+8 11:45)
4 min read
原文: Dev.to

Source: Dev.to

《从 Ghost 到 Zulip》封面图:在 WSL2 上本地部署 Zulip(并解决棘手的 Python 问题)

Abdul Talha

介绍

在为 Ghost 做出贡献之后,我想通过参与一个 更大、更复杂的后端系统 来进一步挑战自己。

这种好奇心把我带到了 Zulip,它是一款开源的团队协作工具,以基于话题的线程和生产级架构而闻名。

Zulip 使用以下技术构建:

  • Django
  • Tornado
  • PostgreSQL
  • RabbitMQ

在本地搭建 Zulip 并不难,但它 与典型的 Django 项目差别很大。我遇到了一些意想不到的问题,尤其是关于 Python 虚拟环境和 WSL 配置的部分。

在本文中,我将逐步说明:

  • 我是如何在 WSL2 上本地部署 Zulip 的
  • 部署过程中遇到的各种问题
  • 我是如何解决这些问题的,包括 activate_this.py 的问题

如果你是 Zulip 新手或正向更大型的后端系统迈进,这篇指南可以帮助你避免常见的搭建障碍。

本文适合以下人群

  • 首次为 Zulip 做贡献的开发者
  • 超越小型项目的开源贡献者
  • 使用 Windows 上的 WSL2 的任何人
  • 遇到 Python 3.12 或 activate_this.py 错误的开发者

前置条件

通用

  • 2 GB+ 内存
  • 稳定的互联网连接
  • GitHub 账户

Windows

  • Windows 10/11(64 位)
  • 已启用虚拟化(VT‑x / AMD‑V)
  • 管理员权限

Git 与 GitHub 设置

如果 Git 已经配置好,可以跳过本节。

  1. 生成 SSH 密钥

    ssh-keygen -t ed25519 -C "your_email@example.com"
  2. 复制公钥

    cat ~/.ssh/id_ed25519.pub
  3. 将其添加到 GitHub → Settings → SSH and GPG Keys.

设置 WSL2 用于 Zulip

如果你已经在使用原生 Ubuntu 或 WSL2,可以直接跳到后面。

启用虚拟化

确保在 BIOS 中启用了 VT‑x / AMD‑V。

安装 WSL2

wsl --install

这会自动安装 Ubuntu。

启用 systemd(必需)

Zulip 依赖 PostgreSQL、Redis 和 RabbitMQ 等后台服务。

sudo nano /etc/wsl.conf

添加以下内容:

[boot]
systemd=true

重启 WSL:

wsl --shutdown

安装必需的服务

sudo apt update && sudo apt upgrade
sudo apt install rabbitmq-server memcached redis-server postgresql

RabbitMQ 配置

sudo nano /etc/rabbitmq/rabbitmq-env.conf

添加:

NODE_IP_ADDRESS=127.0.0.1
NODE_PORT=5672

克隆 Zulip 仓库

  1. 在 GitHub 上 Fork Zulip,然后克隆你的 fork:

    git clone --config pull.rebase git@github.com:YOURUSERNAME/zulip.git
    cd zulip
    git remote add -f upstream https://github.com/zulip/zulip.git

本地运行 Zulip

  1. 安装依赖

    ./tools/provision
  2. 激活虚拟环境

    source .venv/bin/activate
  3. 启动开发服务器

    ./tools/run-dev
  4. 访问

    http://localhost:9991

我遇到的常见问题(以及解决办法)

问题 1:缺少 activate_this.py

错误

FileNotFoundError: No such file or directory ... activate_this.py

出现原因

Zulip 现在使用 uv,它不会自动创建 activate_this.py。某些脚本仍然会期待它的存在。

解决办法

手动创建该文件:

cat > .venv/bin/activate_this.py   
- Zulip Dev Docs:   
- Zulip Community Chat:   
- WSL Docs:   
- uv:
Back to Blog

相关文章

阅读更多 »