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

介绍
在为 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 已经配置好,可以跳过本节。
-
生成 SSH 密钥
ssh-keygen -t ed25519 -C "your_email@example.com" -
复制公钥
cat ~/.ssh/id_ed25519.pub -
将其添加到 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 仓库
-
在 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
-
安装依赖
./tools/provision -
激活虚拟环境
source .venv/bin/activate -
启动开发服务器
./tools/run-dev -
访问
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: 