# Typecho文章管家 Web 服务部署(Linux)
## 环境准备
- 系统:Ubuntu/Debian/CentOS 任一发行版
- 基础组件:Python 3.10+、git、Nginx(可选)
## 代码与依赖
1. 获取代码到服务器(以 /opt/typecho-manager 为例)
```bash
sudo mkdir -p /opt/typecho-manager && sudo chown $USER:$USER /opt/typecho-manager
cd /opt/typecho-manager
# 将本地代码打包上传或从仓库拉取
```
2. 创建虚拟环境并安装依赖
```bash
python3 -m venv .venv
source .venv/bin/activate
pip install -U pip
pip install -r api/requirements.txt
```
## 数据库连接配置
- 方式一:环境变量(推荐)
```bash
export TYPECHO_HOST=127.0.0.1
export TYPECHO_PORT=3306
export TYPECHO_USER=your_user
export TYPECHO_PASSWORD=your_pass
export TYPECHO_DB=your_db
```
- 方式二:systemd 环境文件(见后文)
## 启动服务
```bash
source /opt/typecho-manager/.venv/bin/activate
uvicorn api.server:app --host 0.0.0.0 --port 8000
```
浏览器访问:http://服务器IP:8000/ 即可打开 Web 界面;REST API 参见 USAGE.md。
## 使用 systemd 常驻运行
1. 创建服务文件
```bash
sudo tee /etc/systemd/system/typecho-manager.service >/dev/null <<'EOF'
[Unit]
Description=Typecho文章管家 Web 服务
After=network.target
[Service]
WorkingDirectory=/opt/typecho-manager
Environment=TYPECHO_HOST=127.0.0.1
Environment=TYPECHO_PORT=3306
Environment=TYPECHO_USER=your_user
Environment=TYPECHO_PASSWORD=your_pass
Environment=TYPECHO_DB=your_db
ExecStart=/opt/typecho-manager/.venv/bin/uvicorn api.server:app --host 0.0.0.0 --port 8000
Restart=always
RestartSec=3
User=www-data
Group=www-data
[Install]
WantedBy=multi-user.target
EOF
```
2. 启动并开机自启
```bash
sudo systemctl daemon-reload
sudo systemctl enable --now typecho-manager
sudo systemctl status typecho-manager
```
## 反向代理(可选)
使用 Nginx 暴露 80/443 并转发到本地 8000:
```bash
sudo tee /etc/nginx/sites-available/typecho-manager.conf >/dev/null <<'EOF'
server {
listen 80;
server_name your.domain;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /static/ {
proxy_pass http://127.0.0.1:8000/static/;
}
}
EOF
sudo ln -sf /etc/nginx/sites-available/typecho-manager.conf /etc/nginx/sites-enabled/typecho-manager.conf
sudo nginx -t && sudo systemctl reload nginx
```
开启 HTTPS 可用 Certbot:
```bash
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d your.domain
```
## Docker(可选)
1. 创建镜像文件
```Dockerfile
FROM python:3.11-slim
WORKDIR /app
COPY api/requirements.txt /app/api/requirements.txt
RUN pip install --no-cache-dir -r /app/api/requirements.txt
COPY api /app/api
ENV TYPECHO_HOST=127.0.0.1 TYPECHO_PORT=3306 TYPECHO_USER=user TYPECHO_PASSWORD=pass TYPECHO_DB=db
EXPOSE 8000
CMD ["uvicorn", "api.server:app", "--host", "0.0.0.0", "--port", "8000"]
```
2. 构建与运行
```bash
docker build -t typecho-manager .
docker run -d --name typecho-manager -p 8000:8000 \
-e TYPECHO_HOST=your_host -e TYPECHO_PORT=3306 \
-e TYPECHO_USER=your_user -e TYPECHO_PASSWORD=your_pass -e TYPECHO_DB=your_db \
typecho-manager
```
## 常见问题
- 连接失败:确认数据库地址与防火墙、账号密码、端口与库名正确。
- 访问 8000 无响应:检查 systemd 状态与日志 `journalctl -u typecho-manager -f`。
- HTTPS 配置:确保域名已解析到服务器并开放 80/443 端口。