# 本地代码验证(Ubuntu / Linux) > **只做一件事**:在本机确认代码能启动、单测通过、关键 HTTP 行为正确。 > **不做**:生产部署清单、浏览器手测、Agent 全量 E2E。 环境:Ubuntu 原生 + Docker(MySQL + Redis)+ Python 3.12 + 项目根 `.env`。 --- ## 一键(推荐) ```bash cd "$NEXUS_ROOT" # 例:~/桌面/Nexus bash scripts/local_verify.sh ``` 顺序:启动 Docker MySQL/Redis → uvicorn → smoke → `test_api.py` → ruff。 --- ## 分步 **首次 — 依赖** ```bash bash scripts/ensure_venv.sh python3 docker/generate_env.py # 若无 docker/.env python3 docker/sync_root_env.py # 生成根 .env ``` **启动** ```bash bash scripts/start-dev.sh ``` **验证** ```bash bash scripts/local_integration_smoke.sh .venv/bin/python tests/test_api.py ``` | 项 | 预期 | |----|------| | `tests/test_security_unit.py` + retry | 全部 passed | | `GET /health` | 200 | | `GET /api/servers/` | 401(JWT) | | `tests/test_api.py` | 26/26 passed | --- ## Docker 权限 若 `docker` 报 permission denied,脚本会自动 `sg docker`。或: ```bash sudo usermod -aG docker "$USER" # 重新登录后免 sg ``` Redis 检测:优先 `redis-cli`;未安装时用 `docker exec nexus-redis-1 redis-cli ping`(无需 apt 装 redis-tools)。 --- ## 无 `.env` 先 `bash scripts/start-dev.sh`,浏览器打开 `http://127.0.0.1:8600/app/install.html` 完成向导,或: ```bash NEXUS_TEST_ADMIN_PASSWORD='你的密码' python3 scripts/seed_local_admin.py ``` --- ## 脚本索引 | 脚本 | 作用 | |------|------| | `scripts/start-dev.sh` | Docker mysql+redis + uvicorn | | `scripts/local_verify.sh` | 一键启动 + 全量本地验证 | | `scripts/local_integration_smoke.sh` | smoke(不启动服务) | | `scripts/ensure_venv.sh` | 创建 `.venv` | | `scripts/check_mysql.py` | MySQL 连通与表检查 | 上线验收见 [`production-verification-checklist.md`](production-verification-checklist.md)。 路径 SSOT:[`linux-dev-paths.md`](linux-dev-paths.md)